=> {\n const botId = config?.botId || context.botId || (context.pa?.botIds as Array<{ id: string }>)[0].id;\n if (!botId) {\n throw new Error(\"Chatbot id is not set\");\n }\n\n const botType = resolveBotType(botId as string, context);\n\n dispatch(setRequestedBotType(botType));\n\n const response = await api.chat.postCreateChatSession(\n config || {\n botId: botId as string,\n },\n { suppressWaitPointer: true },\n );\n\n dispatch(\n setChat({\n botId: botId as string,\n chatToken: response.chatToken!,\n token: response.token!,\n botType: botType,\n extraId: config?.extraId,\n }),\n );\n\n return response;\n };\n\n const runWS = async (token: string) => {\n stopChat();\n const ws = webSocketFactory.createWebSocket(\"PA\", token!, {\n onOpen: () => {\n console.log(\"WebSocket connection opened\");\n initializeMessageSender();\n },\n onMessage: (message: string) => {\n console.log(`MESSAGE RECEIVED: ${JSON.stringify(message)}`);\n handleMessageRef.current(JSON.stringify(decodeChatMessage(message, context.mode === APP_MODES.BM)));\n },\n onError: () => {\n dispatch(setError(\"Error in WebSocket connection\"));\n },\n });\n\n const initializeMessageSender = () => {\n const sendMessage = (message: ChatMessage | OutgoingMessage) => {\n console.log(`${message?.type} MESSAGE: ${JSON.stringify(message?.payload)}`);\n ws.sendMessage(message);\n };\n\n MessageSender.initialize(sendMessage);\n\n if (context.wasMinimized !== \"true\" && context.wasMinimized !== true) {\n MessageSender.getInstance().connect();\n }\n };\n\n // previous tries to keep reference to open websocket:\n // - useState: state gets reset sometimes and looses reference to open socket\n // - chatState: works, but React complains about not-serializable object in the state\n context._ws = ws;\n\n dispatch(setChatIsReady(true));\n };\n\n const startChat = async (config?: {\n botId: string;\n extraId: string;\n // Alternatively, chat/create might have already been done by BDN/mobile\n chatToken?: string;\n token?: string;\n }) => {\n try {\n dispatch(setLoading(true));\n dispatch(setError(null));\n let chatWs: { chatToken?: string; token?: string };\n if (config?.chatToken && config?.token) {\n chatWs = { chatToken: config.chatToken, token: config.token };\n } else {\n chatWs = await createChat(config);\n }\n await runWS(chatWs.token!);\n } catch (e) {\n dispatch(setError(isAxiosError(e) ? e.message : \"Something went wrong\"));\n } finally {\n dispatch(setLoading(false));\n }\n };\n\n const stopChat = () => {\n (context._ws as WebSocketProxy)?.close();\n context._ws = null;\n };\n\n return { runWS, startChat, stopChat };\n};\n\nexport const useDevChat = () => {\n const TESTING_WS_URL = \"ws://localhost:3005/8888\";\n // @ts-ignore (TS bug?)\n const { sendMessage, lastMessage } = useWebSocket(TESTING_WS_URL);\n const { handleMessage } = useDevModeMessages();\n\n // allow to see sent messages in console in dev chat\n const send = (msg: WebSocketMessage) => {\n console.log(\"Sending message \", msg);\n sendMessage(msg);\n };\n\n const startDemoChat = async () => {\n // @ts-ignore (Compiler is not complaining but Tests are failing with this line...)\n MessageSender.initialize(send);\n };\n\n useEffect(() => {\n if (lastMessage) {\n handleMessage(lastMessage);\n }\n }, [lastMessage]);\n\n return { startDemoChat };\n};\n","import { NavigationMode } from \"@gef1/dax-client-sdk\";\nimport { useSelector } from \"react-redux\";\n\nimport { useMobileBridge, useNavigation } from \"@/contexts\";\nimport { RootState } from \"@/store\";\nimport { LinkTarget } from \"@/types\";\nimport { URL_APP_KEY_PATTERN } from \"@/constants\";\n\nexport const useDaxNavigation = () => {\n const { onMobileDevice } = useSelector((state: RootState) => state.application);\n const navigation = useNavigation();\n\n const mobileBridge = useMobileBridge();\n\n const navigate = (url: string, target?: LinkTarget) => {\n if (onMobileDevice) {\n const isInformational = !url.toLowerCase().includes(URL_APP_KEY_PATTERN);\n\n return isInformational ? mobileBridge.openNewWebView(url) : mobileBridge.closeHybridFlowAndRedirect(url);\n }\n\n const navigationMode =\n target === \"external\" ? NavigationMode.ASIDE : target === \"internal\" ? NavigationMode.INTERNAL : NavigationMode.ON_TOP;\n\n navigation.navigateTo(url, navigationMode);\n };\n\n return { navigate };\n};\n","function _interopRequireDefault(e) {\n return e && e.__esModule ? e : {\n \"default\": e\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = requiredArgs;\nfunction requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isDate;\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\nvar _index = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nfunction isDate(value) {\n (0, _index.default)(1, arguments);\n return value instanceof Date || (0, _typeof2.default)(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toDate;\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\nvar _index = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nfunction toDate(argument) {\n (0, _index.default)(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || (0, _typeof2.default)(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isValid;\nvar _index = _interopRequireDefault(require(\"../isDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nfunction isValid(dirtyDate) {\n (0, _index3.default)(1, arguments);\n if (!(0, _index.default)(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = (0, _index2.default)(dirtyDate);\n return !isNaN(Number(date));\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toInteger;\nfunction toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = addMilliseconds;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nfunction addMilliseconds(dirtyDate, dirtyAmount) {\n (0, _index3.default)(2, arguments);\n var timestamp = (0, _index2.default)(dirtyDate).getTime();\n var amount = (0, _index.default)(dirtyAmount);\n return new Date(timestamp + amount);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = subMilliseconds;\nvar _index = _interopRequireDefault(require(\"../addMilliseconds/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nfunction subMilliseconds(dirtyDate, dirtyAmount) {\n (0, _index2.default)(2, arguments);\n var amount = (0, _index3.default)(dirtyAmount);\n return (0, _index.default)(dirtyDate, -amount);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getUTCDayOfYear;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar MILLISECONDS_IN_DAY = 86400000;\nfunction getUTCDayOfYear(dirtyDate) {\n (0, _index2.default)(1, arguments);\n var date = (0, _index.default)(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = startOfUTCISOWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nfunction startOfUTCISOWeek(dirtyDate) {\n (0, _index2.default)(1, arguments);\n var weekStartsOn = 1;\n var date = (0, _index.default)(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getUTCISOWeekYear;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\nfunction getUTCISOWeekYear(dirtyDate) {\n (0, _index2.default)(1, arguments);\n var date = (0, _index.default)(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = (0, _index3.default)(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = (0, _index3.default)(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = startOfUTCISOWeekYear;\nvar _index = _interopRequireDefault(require(\"../getUTCISOWeekYear/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nfunction startOfUTCISOWeekYear(dirtyDate) {\n (0, _index3.default)(1, arguments);\n var year = (0, _index.default)(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = (0, _index2.default)(fourthOfJanuary);\n return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getUTCISOWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCISOWeekYear/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar MILLISECONDS_IN_WEEK = 604800000;\nfunction getUTCISOWeek(dirtyDate) {\n (0, _index4.default)(1, arguments);\n var date = (0, _index.default)(dirtyDate);\n var diff = (0, _index2.default)(date).getTime() - (0, _index3.default)(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getDefaultOptions = getDefaultOptions;\nexports.setDefaultOptions = setDefaultOptions;\nvar defaultOptions = {};\nfunction getDefaultOptions() {\n return defaultOptions;\n}\nfunction setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = startOfUTCWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index4 = require(\"../defaultOptions/index.js\");\nfunction startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n (0, _index2.default)(1, arguments);\n var defaultOptions = (0, _index4.getDefaultOptions)();\n var weekStartsOn = (0, _index3.default)((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = (0, _index.default)(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getUTCWeekYear;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index5 = require(\"../defaultOptions/index.js\");\nfunction getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n (0, _index2.default)(1, arguments);\n var date = (0, _index.default)(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = (0, _index5.getDefaultOptions)();\n var firstWeekContainsDate = (0, _index4.default)((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = (0, _index3.default)(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = (0, _index3.default)(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = startOfUTCWeekYear;\nvar _index = _interopRequireDefault(require(\"../getUTCWeekYear/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index5 = require(\"../defaultOptions/index.js\");\nfunction startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n (0, _index2.default)(1, arguments);\n var defaultOptions = (0, _index5.getDefaultOptions)();\n var firstWeekContainsDate = (0, _index4.default)((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = (0, _index.default)(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = (0, _index3.default)(firstWeek, options);\n return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getUTCWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeekYear/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar MILLISECONDS_IN_WEEK = 604800000;\nfunction getUTCWeek(dirtyDate, options) {\n (0, _index4.default)(1, arguments);\n var date = (0, _index.default)(dirtyDate);\n var diff = (0, _index2.default)(date, options).getTime() - (0, _index3.default)(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = addLeadingZeros;\nfunction addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../addLeadingZeros/index.js\"));\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return (0, _index.default)(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : (0, _index.default)(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return (0, _index.default)(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return (0, _index.default)(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return (0, _index.default)(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return (0, _index.default)(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return (0, _index.default)(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return (0, _index.default)(fractionalSeconds, token.length);\n }\n};\nvar _default = formatters;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/getUTCDayOfYear/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../../../_lib/getUTCISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../../../_lib/getUTCISOWeekYear/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../../../_lib/getUTCWeek/index.js\"));\nvar _index5 = _interopRequireDefault(require(\"../../../_lib/getUTCWeekYear/index.js\"));\nvar _index6 = _interopRequireDefault(require(\"../../addLeadingZeros/index.js\"));\nvar _index7 = _interopRequireDefault(require(\"../lightFormatters/index.js\"));\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return _index7.default.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = (0, _index5.default)(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return (0, _index6.default)(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return (0, _index6.default)(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = (0, _index3.default)(date);\n\n // Padding\n return (0, _index6.default)(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return (0, _index6.default)(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return (0, _index6.default)(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return (0, _index6.default)(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return _index7.default.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return (0, _index6.default)(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = (0, _index4.default)(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return (0, _index6.default)(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = (0, _index2.default)(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return (0, _index6.default)(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return _index7.default.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = (0, _index.default)(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return (0, _index6.default)(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return (0, _index6.default)(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return (0, _index6.default)(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return (0, _index6.default)(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return _index7.default.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return _index7.default.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return (0, _index6.default)(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return (0, _index6.default)(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return _index7.default.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return _index7.default.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return _index7.default.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return (0, _index6.default)(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return (0, _index6.default)(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + (0, _index6.default)(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + (0, _index6.default)(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = (0, _index6.default)(Math.floor(absOffset / 60), 2);\n var minutes = (0, _index6.default)(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nvar _default = formatters;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nvar _default = longFormatters;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getTimezoneOffsetInMilliseconds;\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nfunction getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isProtectedDayOfYearToken = isProtectedDayOfYearToken;\nexports.isProtectedWeekYearToken = isProtectedWeekYearToken;\nexports.throwProtectedError = throwProtectedError;\nvar protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nfunction isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nfunction isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nfunction throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nvar _default = formatDistance;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = buildFormatLongFn;\nfunction buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildFormatLongFn/index.js\"));\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: (0, _index.default)({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: (0, _index.default)({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: (0, _index.default)({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nvar _default = formatLong;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nvar _default = formatRelative;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = buildLocalizeFn;\nfunction buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildLocalizeFn/index.js\"));\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: (0, _index.default)({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: (0, _index.default)({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: (0, _index.default)({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: (0, _index.default)({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: (0, _index.default)({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nvar _default = localize;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = buildMatchFn;\nfunction buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = buildMatchPatternFn;\nfunction buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildMatchFn/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../../../_lib/buildMatchPatternFn/index.js\"));\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: (0, _index2.default)({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: (0, _index.default)({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: (0, _index.default)({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: (0, _index.default)({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: (0, _index.default)({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: (0, _index.default)({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nvar _default = match;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"./_lib/formatDistance/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"./_lib/formatLong/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"./_lib/formatRelative/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"./_lib/localize/index.js\"));\nvar _index5 = _interopRequireDefault(require(\"./_lib/match/index.js\"));\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: _index.default,\n formatLong: _index2.default,\n formatRelative: _index3.default,\n localize: _index4.default,\n match: _index5.default,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nvar _default = locale;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../locale/en-US/index.js\"));\nvar _default = _index.default;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = format;\nvar _index = _interopRequireDefault(require(\"../isValid/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../subMilliseconds/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../_lib/format/formatters/index.js\"));\nvar _index5 = _interopRequireDefault(require(\"../_lib/format/longFormatters/index.js\"));\nvar _index6 = _interopRequireDefault(require(\"../_lib/getTimezoneOffsetInMilliseconds/index.js\"));\nvar _index7 = require(\"../_lib/protectedTokens/index.js\");\nvar _index8 = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index9 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\nvar _index10 = require(\"../_lib/defaultOptions/index.js\");\nvar _index11 = _interopRequireDefault(require(\"../_lib/defaultLocale/index.js\"));\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nfunction format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n (0, _index9.default)(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = (0, _index10.getDefaultOptions)();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : _index11.default;\n var firstWeekContainsDate = (0, _index8.default)((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = (0, _index8.default)((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = (0, _index3.default)(dirtyDate);\n if (!(0, _index.default)(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = (0, _index6.default)(originalDate);\n var utcDate = (0, _index2.default)(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = _index5.default[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = _index4.default[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && (0, _index7.isProtectedWeekYearToken)(substring)) {\n (0, _index7.throwProtectedError)(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && (0, _index7.isProtectedDayOfYearToken)(substring)) {\n (0, _index7.throwProtectedError)(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\nmodule.exports = exports.default;","/**\n * Returns the formatted time zone name of the provided `timeZone` or the current\n * system time zone if omitted, accounting for DST according to the UTC value of\n * the date.\n */\nexport default function tzIntlTimeZoneName(length, date, options) {\n var dtf = getDTF(length, options.timeZone, options.locale)\n return dtf.formatToParts ? partsTimeZone(dtf, date) : hackyTimeZone(dtf, date)\n}\n\nfunction partsTimeZone(dtf, date) {\n var formatted = dtf.formatToParts(date)\n\n for (var i = formatted.length - 1; i >= 0; --i) {\n if (formatted[i].type === 'timeZoneName') {\n return formatted[i].value\n }\n }\n}\n\nfunction hackyTimeZone(dtf, date) {\n var formatted = dtf.format(date).replace(/\\u200E/g, '')\n var tzNameMatch = / [\\w-+ ]+$/.exec(formatted)\n return tzNameMatch ? tzNameMatch[0].substr(1) : ''\n}\n\n// If a locale has been provided `en-US` is used as a fallback in case it is an\n// invalid locale, otherwise the locale is left undefined to use the system locale.\nfunction getDTF(length, timeZone, locale) {\n if (locale && !locale.code) {\n throw new Error(\n \"date-fns-tz error: Please set a language code on the locale object imported from date-fns, e.g. `locale.code = 'en-US'`\"\n )\n }\n return new Intl.DateTimeFormat(locale ? [locale.code, 'en-US'] : undefined, {\n timeZone: timeZone,\n timeZoneName: length,\n })\n}\n","/**\r\n * Returns the [year, month, day, hour, minute, seconds] tokens of the provided\r\n * `date` as it will be rendered in the `timeZone`.\r\n */\r\nexport default function tzTokenizeDate(date, timeZone) {\r\n var dtf = getDateTimeFormat(timeZone)\r\n return dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date)\r\n}\r\n\r\nvar typeToPos = {\r\n year: 0,\r\n month: 1,\r\n day: 2,\r\n hour: 3,\r\n minute: 4,\r\n second: 5,\r\n}\r\n\r\nfunction partsOffset(dtf, date) {\r\n try {\r\n var formatted = dtf.formatToParts(date)\r\n var filled = []\r\n for (var i = 0; i < formatted.length; i++) {\r\n var pos = typeToPos[formatted[i].type]\r\n\r\n if (pos >= 0) {\r\n filled[pos] = parseInt(formatted[i].value, 10)\r\n }\r\n }\r\n return filled\r\n } catch (error) {\r\n if (error instanceof RangeError) {\r\n return [NaN]\r\n }\r\n throw error\r\n }\r\n}\r\n\r\nfunction hackyOffset(dtf, date) {\r\n var formatted = dtf.format(date)\r\n var parsed = /(\\d+)\\/(\\d+)\\/(\\d+),? (\\d+):(\\d+):(\\d+)/.exec(formatted)\r\n // var [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed\r\n // return [fYear, fMonth, fDay, fHour, fMinute, fSecond]\r\n return [parsed[3], parsed[1], parsed[2], parsed[4], parsed[5], parsed[6]]\r\n}\r\n\r\n// Get a cached Intl.DateTimeFormat instance for the IANA `timeZone`. This can be used\r\n// to get deterministic local date/time output according to the `en-US` locale which\r\n// can be used to extract local time parts as necessary.\r\nvar dtfCache = {}\r\nfunction getDateTimeFormat(timeZone) {\r\n if (!dtfCache[timeZone]) {\r\n // New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12`\r\n var testDateFormatted = new Intl.DateTimeFormat('en-US', {\r\n hourCycle: 'h23',\r\n timeZone: 'America/New_York',\r\n year: 'numeric',\r\n month: '2-digit',\r\n day: '2-digit',\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n second: '2-digit',\r\n }).format(new Date('2014-06-25T04:00:00.123Z'))\r\n var hourCycleSupported =\r\n testDateFormatted === '06/25/2014, 00:00:00' ||\r\n testDateFormatted === '06/25/2014 00:00:00'\r\n\r\n dtfCache[timeZone] = hourCycleSupported\r\n ? new Intl.DateTimeFormat('en-US', {\r\n hourCycle: 'h23',\r\n timeZone: timeZone,\r\n year: 'numeric',\r\n month: 'numeric',\r\n day: '2-digit',\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n second: '2-digit',\r\n })\r\n : new Intl.DateTimeFormat('en-US', {\r\n hour12: false,\r\n timeZone: timeZone,\r\n year: 'numeric',\r\n month: 'numeric',\r\n day: '2-digit',\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n second: '2-digit',\r\n })\r\n }\r\n return dtfCache[timeZone]\r\n}\r\n","/**\n * Use instead of `new Date(Date.UTC(...))` to support years below 100 which doesn't work\n * otherwise due to the nature of the\n * [`Date` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#interpretation_of_two-digit_years.\n *\n * For `Date.UTC(...)`, use `newDateUTC(...).getTime()`.\n */\nexport default function newDateUTC(fullYear, month, day, hour, minute, second, millisecond) {\n var utcDate = new Date(0)\n utcDate.setUTCFullYear(fullYear, month, day)\n utcDate.setUTCHours(hour, minute, second, millisecond)\n return utcDate\n}\n","import tzTokenizeDate from '../tzTokenizeDate/index.js'\r\nimport newDateUTC from '../newDateUTC/index.js'\r\n\r\nvar MILLISECONDS_IN_HOUR = 3600000\r\nvar MILLISECONDS_IN_MINUTE = 60000\r\n\r\nvar patterns = {\r\n timezone: /([Z+-].*)$/,\r\n timezoneZ: /^(Z)$/,\r\n timezoneHH: /^([+-]\\d{2})$/,\r\n timezoneHHMM: /^([+-])(\\d{2}):?(\\d{2})$/,\r\n}\r\n\r\n// Parse various time zone offset formats to an offset in milliseconds\r\nexport default function tzParseTimezone(timezoneString, date, isUtcDate) {\r\n var token\r\n var absoluteOffset\r\n\r\n // Empty string\r\n if (!timezoneString) {\r\n return 0\r\n }\r\n\r\n // Z\r\n token = patterns.timezoneZ.exec(timezoneString)\r\n if (token) {\r\n return 0\r\n }\r\n\r\n var hours\r\n\r\n // ±hh\r\n token = patterns.timezoneHH.exec(timezoneString)\r\n if (token) {\r\n hours = parseInt(token[1], 10)\r\n\r\n if (!validateTimezone(hours)) {\r\n return NaN\r\n }\r\n\r\n return -(hours * MILLISECONDS_IN_HOUR)\r\n }\r\n\r\n // ±hh:mm or ±hhmm\r\n token = patterns.timezoneHHMM.exec(timezoneString)\r\n if (token) {\r\n hours = parseInt(token[2], 10)\r\n var minutes = parseInt(token[3], 10)\r\n\r\n if (!validateTimezone(hours, minutes)) {\r\n return NaN\r\n }\r\n\r\n absoluteOffset = Math.abs(hours) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE\r\n return token[1] === '+' ? -absoluteOffset : absoluteOffset\r\n }\r\n\r\n // IANA time zone\r\n if (isValidTimezoneIANAString(timezoneString)) {\r\n date = new Date(date || Date.now())\r\n var utcDate = isUtcDate ? date : toUtcDate(date)\r\n\r\n var offset = calcOffset(utcDate, timezoneString)\r\n\r\n var fixedOffset = isUtcDate ? offset : fixOffset(date, offset, timezoneString)\r\n\r\n return -fixedOffset\r\n }\r\n\r\n return NaN\r\n}\r\n\r\nfunction toUtcDate(date) {\r\n return newDateUTC(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds(),\r\n date.getMilliseconds()\r\n )\r\n}\r\n\r\nfunction calcOffset(date, timezoneString) {\r\n var tokens = tzTokenizeDate(date, timezoneString)\r\n\r\n // ms dropped because it's not provided by tzTokenizeDate\r\n var asUTC = newDateUTC(\r\n tokens[0],\r\n tokens[1] - 1,\r\n tokens[2],\r\n tokens[3] % 24,\r\n tokens[4],\r\n tokens[5],\r\n 0\r\n ).getTime()\r\n\r\n var asTS = date.getTime()\r\n var over = asTS % 1000\r\n asTS -= over >= 0 ? over : 1000 + over\r\n return asUTC - asTS\r\n}\r\n\r\nfunction fixOffset(date, offset, timezoneString) {\r\n var localTS = date.getTime()\r\n\r\n // Our UTC time is just a guess because our offset is just a guess\r\n var utcGuess = localTS - offset\r\n\r\n // Test whether the zone matches the offset for this ts\r\n var o2 = calcOffset(new Date(utcGuess), timezoneString)\r\n\r\n // If so, offset didn't change, and we're done\r\n if (offset === o2) {\r\n return offset\r\n }\r\n\r\n // If not, change the ts by the difference in the offset\r\n utcGuess -= o2 - offset\r\n\r\n // If that gives us the local time we want, we're done\r\n var o3 = calcOffset(new Date(utcGuess), timezoneString)\r\n if (o2 === o3) {\r\n return o2\r\n }\r\n\r\n // If it's different, we're in a hole time. The offset has changed, but we don't adjust the time\r\n return Math.max(o2, o3)\r\n}\r\n\r\nfunction validateTimezone(hours, minutes) {\r\n return -23 <= hours && hours <= 23 && (minutes == null || (0 <= minutes && minutes <= 59))\r\n}\r\n\r\nvar validIANATimezoneCache = {}\r\nfunction isValidTimezoneIANAString(timeZoneString) {\r\n if (validIANATimezoneCache[timeZoneString]) return true\r\n try {\r\n new Intl.DateTimeFormat(undefined, { timeZone: timeZoneString })\r\n validIANATimezoneCache[timeZoneString] = true\r\n return true\r\n } catch (error) {\r\n return false\r\n }\r\n}\r\n","import tzIntlTimeZoneName from '../../_lib/tzIntlTimeZoneName/index.js'\nimport tzParseTimezone from '../../_lib/tzParseTimezone/index.js'\n\nvar MILLISECONDS_IN_MINUTE = 60 * 1000\n\nvar formatters = {\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, localize, options) {\n var timezoneOffset = getTimeZoneOffset(options.timeZone, date)\n\n if (timezoneOffset === 0) {\n return 'Z'\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, localize, options) {\n var timezoneOffset = getTimeZoneOffset(options.timeZone, date)\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, localize, options) {\n var timezoneOffset = getTimeZoneOffset(options.timeZone, date)\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, localize, options) {\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return tzIntlTimeZoneName('short', date, options)\n // Long\n case 'zzzz':\n default:\n return tzIntlTimeZoneName('long', date, options)\n }\n },\n}\n\nfunction getTimeZoneOffset(timeZone, originalDate) {\n var timeZoneOffset = timeZone\n ? tzParseTimezone(timeZone, originalDate, true) / MILLISECONDS_IN_MINUTE\n : originalDate.getTimezoneOffset()\n if (Number.isNaN(timeZoneOffset)) {\n throw new RangeError('Invalid time zone specified: ' + timeZone)\n }\n return timeZoneOffset\n}\n\nfunction addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : ''\n var output = Math.abs(number).toString()\n while (output.length < targetLength) {\n output = '0' + output\n }\n return sign + output\n}\n\nfunction formatTimezone(offset, dirtyDelimeter) {\n var delimeter = dirtyDelimeter || ''\n var sign = offset > 0 ? '-' : '+'\n var absOffset = Math.abs(offset)\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2)\n var minutes = addLeadingZeros(Math.floor(absOffset % 60), 2)\n return sign + hours + delimeter + minutes\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimeter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+'\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2)\n }\n return formatTimezone(offset, dirtyDelimeter)\n}\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+'\n var absOffset = Math.abs(offset)\n var hours = Math.floor(absOffset / 60)\n var minutes = absOffset % 60\n if (minutes === 0) {\n return sign + String(hours)\n }\n var delimiter = dirtyDelimiter || ''\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2)\n}\n\nexport default formatters\n","/** Regex to identify the presence of a time zone specifier in a date string */\nvar tzPattern = /(Z|[+-]\\d{2}(?::?\\d{2})?| UTC| [a-zA-Z]+\\/[a-zA-Z_]+(?:\\/[a-zA-Z_]+)?)$/\n\nexport default tzPattern\n","import toInteger from 'date-fns/_lib/toInteger/index.js'\nimport getTimezoneOffsetInMilliseconds from 'date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport tzParseTimezone from '../_lib/tzParseTimezone/index.js'\nimport tzPattern from '../_lib/tzPattern/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\nvar DEFAULT_ADDITIONAL_DIGITS = 2\n\nvar patterns = {\n dateTimePattern: /^([0-9W+-]+)(T| )(.*)/,\n datePattern: /^([0-9W+-]+)(.*)/,\n plainTime: /:/,\n\n // year tokens\n YY: /^(\\d{2})$/,\n YYY: [\n /^([+-]\\d{2})$/, // 0 additional digits\n /^([+-]\\d{3})$/, // 1 additional digit\n /^([+-]\\d{4})$/, // 2 additional digits\n ],\n YYYY: /^(\\d{4})/,\n YYYYY: [\n /^([+-]\\d{4})/, // 0 additional digits\n /^([+-]\\d{5})/, // 1 additional digit\n /^([+-]\\d{6})/, // 2 additional digits\n ],\n\n // date tokens\n MM: /^-(\\d{2})$/,\n DDD: /^-?(\\d{3})$/,\n MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n Www: /^-?W(\\d{2})$/,\n WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n\n HH: /^(\\d{2}([.,]\\d*)?)$/,\n HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n\n // time zone tokens (to identify the presence of a tz)\n timeZone: tzPattern,\n}\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n * If the function cannot parse the string or the values are invalid, it returns Invalid Date.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param {Date|String|Number} argument - the value to convert\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function toDate(argument, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n if (argument === null) {\n return new Date(NaN)\n }\n\n var options = dirtyOptions || {}\n\n var additionalDigits =\n options.additionalDigits == null\n ? DEFAULT_ADDITIONAL_DIGITS\n : toInteger(options.additionalDigits)\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2')\n }\n\n // Clone the date\n if (\n argument instanceof Date ||\n (typeof argument === 'object' && Object.prototype.toString.call(argument) === '[object Date]')\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime())\n } else if (\n typeof argument === 'number' ||\n Object.prototype.toString.call(argument) === '[object Number]'\n ) {\n return new Date(argument)\n } else if (\n !(\n typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]'\n )\n ) {\n return new Date(NaN)\n }\n\n var dateStrings = splitDateString(argument)\n\n var parseYearResult = parseYear(dateStrings.date, additionalDigits)\n var year = parseYearResult.year\n var restDateString = parseYearResult.restDateString\n\n var date = parseDate(restDateString, year)\n\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n if (date) {\n var timestamp = date.getTime()\n var time = 0\n var offset\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time)\n\n if (isNaN(time)) {\n return new Date(NaN)\n }\n }\n\n if (dateStrings.timeZone || options.timeZone) {\n offset = tzParseTimezone(dateStrings.timeZone || options.timeZone, new Date(timestamp + time))\n if (isNaN(offset)) {\n return new Date(NaN)\n }\n } else {\n // get offset accurate to hour in time zones that change offset\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time))\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time + offset))\n }\n\n return new Date(timestamp + time + offset)\n } else {\n return new Date(NaN)\n }\n}\n\nfunction splitDateString(dateString) {\n var dateStrings = {}\n var parts = patterns.dateTimePattern.exec(dateString)\n var timeString\n\n if (!parts) {\n parts = patterns.datePattern.exec(dateString)\n if (parts) {\n dateStrings.date = parts[1]\n timeString = parts[2]\n } else {\n dateStrings.date = null\n timeString = dateString\n }\n } else {\n dateStrings.date = parts[1]\n timeString = parts[3]\n }\n\n if (timeString) {\n var token = patterns.timeZone.exec(timeString)\n if (token) {\n dateStrings.time = timeString.replace(token[1], '')\n dateStrings.timeZone = token[1].trim()\n } else {\n dateStrings.time = timeString\n }\n }\n\n return dateStrings\n}\n\nfunction parseYear(dateString, additionalDigits) {\n var patternYYY = patterns.YYY[additionalDigits]\n var patternYYYYY = patterns.YYYYY[additionalDigits]\n\n var token\n\n // YYYY or ±YYYYY\n token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString)\n if (token) {\n var yearString = token[1]\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length),\n }\n }\n\n // YY or ±YYY\n token = patterns.YY.exec(dateString) || patternYYY.exec(dateString)\n if (token) {\n var centuryString = token[1]\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length),\n }\n }\n\n // Invalid ISO-formatted year\n return {\n year: null,\n }\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null\n }\n\n var token\n var date\n var month\n var week\n\n // YYYY\n if (dateString.length === 0) {\n date = new Date(0)\n date.setUTCFullYear(year)\n return date\n }\n\n // YYYY-MM\n token = patterns.MM.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n\n if (!validateDate(year, month)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, month)\n return date\n }\n\n // YYYY-DDD or YYYYDDD\n token = patterns.DDD.exec(dateString)\n if (token) {\n date = new Date(0)\n var dayOfYear = parseInt(token[1], 10)\n\n if (!validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, 0, dayOfYear)\n return date\n }\n\n // yyyy-MM-dd or YYYYMMDD\n token = patterns.MMDD.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n var day = parseInt(token[2], 10)\n\n if (!validateDate(year, month, day)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, month, day)\n return date\n }\n\n // YYYY-Www or YYYYWww\n token = patterns.Www.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n\n if (!validateWeekDate(year, week)) {\n return new Date(NaN)\n }\n\n return dayOfISOWeekYear(year, week)\n }\n\n // YYYY-Www-D or YYYYWwwD\n token = patterns.WwwD.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n var dayOfWeek = parseInt(token[2], 10) - 1\n\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN)\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek)\n }\n\n // Invalid ISO-formatted date\n return null\n}\n\nfunction parseTime(timeString) {\n var token\n var hours\n var minutes\n\n // hh\n token = patterns.HH.exec(timeString)\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'))\n\n if (!validateTime(hours)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR\n }\n\n // hh:mm or hhmm\n token = patterns.HHMM.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseFloat(token[2].replace(',', '.'))\n\n if (!validateTime(hours, minutes)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE\n }\n\n // hh:mm:ss or hhmmss\n token = patterns.HHMMSS.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseInt(token[2], 10)\n var seconds = parseFloat(token[3].replace(',', '.'))\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * 1000\n }\n\n // Invalid ISO-formatted time\n return null\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n week = week || 0\n day = day || 0\n var date = new Date(0)\n date.setUTCFullYear(isoWeekYear, 0, 4)\n var fourthOfJanuaryDay = date.getUTCDay() || 7\n var diff = week * 7 + day + 1 - fourthOfJanuaryDay\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n\n// Validation functions\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\nfunction validateDate(year, month, date) {\n if (month < 0 || month > 11) {\n return false\n }\n\n if (date != null) {\n if (date < 1) {\n return false\n }\n\n var isLeapYear = isLeapYearIndex(year)\n if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) {\n return false\n }\n if (!isLeapYear && date > DAYS_IN_MONTH[month]) {\n return false\n }\n }\n\n return true\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n if (dayOfYear < 1) {\n return false\n }\n\n var isLeapYear = isLeapYearIndex(year)\n if (isLeapYear && dayOfYear > 366) {\n return false\n }\n if (!isLeapYear && dayOfYear > 365) {\n return false\n }\n\n return true\n}\n\nfunction validateWeekDate(year, week, day) {\n if (week < 0 || week > 52) {\n return false\n }\n\n if (day != null && (day < 0 || day > 6)) {\n return false\n }\n\n return true\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours != null && (hours < 0 || hours >= 25)) {\n return false\n }\n\n if (minutes != null && (minutes < 0 || minutes >= 60)) {\n return false\n }\n\n if (seconds != null && (seconds < 0 || seconds >= 60)) {\n return false\n }\n\n return true\n}\n","import dateFnsFormat from 'date-fns/format/index.js'\nimport formatters from './formatters/index.js'\nimport toDate from '../toDate/index.js'\n\nvar tzFormattingTokensRegExp = /([xXOz]+)|''|'(''|[^'])+('|$)/g\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 8 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 8 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Su | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Su | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | PDT, EST, CEST | 6 |\n * | | zzzz | Pacific Daylight Time | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are created using the Intl browser API. The output is determined by the\n * preferred standard of the current locale (en-US by default) which may not always give the expected result.\n * For this reason it is recommended to supply a `locale` in the format options when formatting a time zone name.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole\n * library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard\n * #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table). See [this\n * post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link\n * https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See\n * [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens\n * (`yy`, `yyyy`). See: https://git.io/fxCyr\n * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\n * @param {Date|Number} [options.originalDate] - can be used to pass the original unmodified date to `format` to\n * improve correctness of the replaced timezone token close to the DST threshold.\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see:\n * https://git.io/fxCyr\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n var formatStr = String(dirtyFormatStr)\n var options = dirtyOptions || {}\n\n var matches = formatStr.match(tzFormattingTokensRegExp)\n if (matches) {\n var date = toDate(options.originalDate || dirtyDate, options)\n // Work through each match and replace the tz token in the format string with the quoted\n // formatted time zone so the remaining tokens can be filled in by date-fns#format.\n formatStr = matches.reduce(function (result, token) {\n if (token[0] === \"'\") {\n return result // This is a quoted portion, matched only to ensure we don't match inside it\n }\n var pos = result.indexOf(token)\n var precededByQuotedSection = result[pos - 1] === \"'\"\n var replaced = result.replace(\n token,\n \"'\" + formatters[token[0]](date, token, null, options) + \"'\"\n )\n // If the replacement results in two adjoining quoted strings, the back to back quotes\n // are removed, so it doesn't look like an escaped quote.\n return precededByQuotedSection\n ? replaced.substring(0, pos - 1) + replaced.substring(pos + 1)\n : replaced\n }, formatStr)\n }\n\n return dateFnsFormat(dirtyDate, formatStr, options)\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = assign;\nfunction assign(target, object) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n for (var property in object) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n ;\n target[property] = object[property];\n }\n }\n return target;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = cloneObject;\nvar _index = _interopRequireDefault(require(\"../assign/index.js\"));\nfunction cloneObject(object) {\n return (0, _index.default)({}, object);\n}\nmodule.exports = exports.default;","import tzParseTimezone from '../_lib/tzParseTimezone/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name utcToZonedTime\n * @category Time Zone Helpers\n * @summary Get a date/time representing local time in a given time zone from the UTC date\n *\n * @description\n * Returns a date instance with values representing the local time in the time zone\n * specified of the UTC time from the date provided. In other words, when the new date\n * is formatted it will show the equivalent hours in the target time zone regardless\n * of the current system time zone.\n *\n * @param {Date|String|Number} date - the date with the relevant UTC time\n * @param {String} timeZone - the time zone to get local time for, can be an offset or IANA time zone\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the equivalent time in the time zone\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // In June 10am UTC is 6am in New York (-04:00)\n * const result = utcToZonedTime('2014-06-25T10:00:00.000Z', 'America/New_York')\n * //=> Jun 25 2014 06:00:00\n */\nexport default function utcToZonedTime(dirtyDate, timeZone, options) {\n var date = toDate(dirtyDate, options)\n\n var offsetMilliseconds = tzParseTimezone(timeZone, date, true)\n\n var d = new Date(date.getTime() - offsetMilliseconds)\n\n var resultDate = new Date(0)\n\n resultDate.setFullYear(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate())\n\n resultDate.setHours(d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds())\n\n return resultDate\n}\n","import cloneObject from 'date-fns/_lib/cloneObject/index.js'\r\nimport format from '../format/index.js'\r\nimport utcToZonedTime from '../utcToZonedTime/index.js'\r\n\r\n/**\r\n * @name formatInTimeZone\r\n * @category Time Zone Helpers\r\n * @summary Gets the offset in milliseconds between the time zone and Universal Coordinated Time (UTC)\r\n *\r\n * @param {Date|String|Number} date - the date representing the local time / real UTC time\r\n * @param {String} timeZone - the time zone this date should be formatted for; can be an offset or IANA time zone\r\n * @param {String} formatStr - the string of tokens\r\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\r\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link\r\n * https://date-fns.org/docs/toDate}\r\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\r\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\r\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See\r\n * [Locale]{@link https://date-fns.org/docs/Locale}\r\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\r\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\r\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens\r\n * (`yy`, `yyyy`). See: https://git.io/fxCyr\r\n * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\r\n * @returns {String} the formatted date string\r\n */\r\nexport default function formatInTimeZone(date, timeZone, formatStr, options) {\r\n var extendedOptions = cloneObject(options)\r\n extendedOptions.timeZone = timeZone\r\n extendedOptions.originalDate = date\r\n return format(utcToZonedTime(date, timeZone), formatStr, extendedOptions)\r\n}\r\n","import { type DaxApiError } from \"@gef1/dax-client-sdk\";\nimport { subDays, subSeconds } from \"date-fns\";\nimport { formatInTimeZone } from \"date-fns-tz\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { OffsetPaginatedHistoryResponse, useApi } from \"@/__generated__/pa-api.ts\";\nimport { ChatElementProps } from \"@/components/chat-elements/element-props.interface.ts\";\nimport { FunctionalMessage, FunctionalMessagePayload, HistoricFunctionalMessage } from \"@/components/chat-elements/message.interface.ts\";\nimport { INITIAL_PAGE_SIZE, MAX_DAYS, PAGE_SIZE } from \"@/constants\";\nimport { useSession, useTranslator } from \"@gef1/dax-react-sdk\";\nimport { useFlowContext } from \"@/contexts\";\nimport {\n incrementUnreadCount,\n MessageStatus,\n RichFunctionalMessage,\n RootState,\n setHistoryHasBeenFetched,\n setLastMessagesIds,\n setShouldShowScrollUpLabel,\n} from \"@/store\";\nimport { decodeChatMessage, errorMessage, groupMessagesByDay, mapToDividerMessage, mapToFunctionalMessage } from \"@/utils\";\n\nexport interface HistoricRichFunctionalMessage extends HistoricFunctionalMessage
{\n internalStatus: MessageStatus;\n}\nexport interface HistoryDay {\n day: string;\n messages: RichFunctionalMessage[];\n}\nexport type History = HistoryDay[];\n\nfunction getPositionOfFirstUnreadOutgoingMessages(messages: HistoricRichFunctionalMessage[]): number {\n return messages.findIndex((entry) => {\n return entry.status === \"unread\" && entry.direction === \"outgoing\";\n });\n}\n\nexport const useHistory = (status: \"All\" | \"Read\" | \"Unread\") => {\n const [canFetchMoreData, setCanFetchMoreData] = useState(false);\n const [currentLoadedPage, setCurrentLoadedPage] = useState(1);\n const [data, setData] = useState([]);\n const [error, setError] = useState(null);\n const [loading, setLoading] = useState(false);\n const [page, setPage] = useState(1);\n const [rawData, setRawData] = useState>[]>([]);\n const [shouldDisplayHistory, setShouldDisplayHistory] = useState(false);\n const [unreadCount, setUnreadCount] = useState(0);\n const {\n application: { minimized, onMobileDevice },\n chat: {\n chat: { botId: storedBotId, chatToken, extraId },\n resets,\n },\n } = useSelector((state: RootState) => state);\n\n const { anonymousSession } = useSession();\n\n const session = useSession();\n\n const api = useApi();\n const flowContext = useFlowContext();\n const t = useTranslator();\n const dispatch = useDispatch();\n const dateFormat = \"yyyy-MM-dd'T'HH:mm:ss'Z'\";\n const historyStatus = status === \"All\" ? undefined : status;\n const REQUEST_TIMEOUT = onMobileDevice ? 30000 : 10000;\n\n const BDNFlowContextBotId = flowContext.pa?.botIds ? (flowContext.pa?.botIds as Array<{ id: string }>)[0].id : null;\n\n const botId = storedBotId || (flowContext.botId as string) || BDNFlowContextBotId;\n\n if (!botId) {\n throw new Error(\"BotID is not defined\");\n }\n\n const fetchData = async (): Promise => {\n setError(null);\n setLoading(true);\n dispatch(setShouldShowScrollUpLabel(false));\n\n try {\n const now = new Date();\n const endDate = formatInTimeZone(subSeconds(now, 1), \"UTC\", dateFormat);\n const startDate = formatInTimeZone(subDays(now, MAX_DAYS), \"UTC\", dateFormat);\n const dynamicPageSize = page === 1 ? INITIAL_PAGE_SIZE : PAGE_SIZE;\n\n const history: OffsetPaginatedHistoryResponse = await api.chat.postRetrieveChatHistory(\n {\n botId,\n endDate,\n extraId,\n startDate,\n ...(session.anonymousSession ? { chatToken } : {}), // Get history by actorId when possible\n page,\n size: dynamicPageSize,\n status: historyStatus,\n },\n {\n suppressWaitPointer:\n // We hide the wait pointer on mobile if it's the first page (covered by Native loading screen), but only if the chat was not minimized.\n !onMobileDevice || (page <= 1 && flowContext.wasMinimized !== \"true\" && flowContext.wasMinimized !== true),\n timeout: REQUEST_TIMEOUT,\n },\n );\n\n // Store the last messages IDs to avoid duplicates in the current conversation\n if (history.data?.history) {\n const lastMessageIds = history.data.history\n .filter((item) => !!item.message?.message_id)\n .map((item) => item.message!.message_id) as string[];\n\n dispatch(setLastMessagesIds(lastMessageIds));\n }\n\n setCurrentLoadedPage(page);\n\n setCanFetchMoreData(!!history._links?.next?.href);\n\n const historyMessages =\n history.data?.history?.map((item) =>\n mapToFunctionalMessage(decodeChatMessage(item, onMobileDevice)),\n ) || [];\n\n setShouldDisplayHistory(!!history.data?.forceDisplay);\n\n const allHistoryMessages = [...historyMessages, ...rawData];\n const separatorPosition = getPositionOfFirstUnreadOutgoingMessages(allHistoryMessages);\n let _unreadCount = 0;\n if (separatorPosition >= 0 && allHistoryMessages.at(Math.max(0, separatorPosition - 1))!.payload.template !== \"separator\") {\n _unreadCount = allHistoryMessages.length - separatorPosition;\n setUnreadCount(_unreadCount);\n const items = mapToDividerMessage(\n t(\"history.unreadMsgsCounter\", { msgCounter: _unreadCount.toString() }),\n allHistoryMessages.at(separatorPosition)!.payload.timestamp,\n );\n allHistoryMessages.splice(separatorPosition, 0, items);\n }\n\n const groupedByDay = groupMessagesByDay(allHistoryMessages);\n\n setRawData(allHistoryMessages);\n setData(groupedByDay);\n\n dispatch(setShouldShowScrollUpLabel(!!groupedByDay.length));\n\n // Increment floating button unread counter in case of history call during minimized state (typical use case: opening BDN)\n if (minimized && _unreadCount) {\n dispatch(incrementUnreadCount(_unreadCount));\n }\n\n // remark: if initial page size and page size are correctly setup (meaning initial page size is a perfect multiplication of page size), the following formula works fine without overlapping of results...\n setPage(page === 1 ? 1 + Math.floor(INITIAL_PAGE_SIZE / PAGE_SIZE) : page + 1);\n } catch (error: any) {\n console.log(error);\n if ((error as DaxApiError).code === \"timeout\") {\n setError(errorMessage(t(\"errorHistory.title\"), t(\"errorHistory.description\"), t(\"errorHistory.reload\"), fetchData));\n } else {\n setError(errorMessage(t(\"errorHistory.title\"), t(\"errorHistory.description\")));\n }\n }\n\n // Marks that the initial call to history has been completed. Used alongside chatIsReady to signal the ready state to Native.\n // The page number check helps avoid redundant calls to setHistoryHasBeenFetched, preventing unnecessary re-renders of elements monitoring its value.\n if (page === 1) {\n dispatch(setHistoryHasBeenFetched(true));\n }\n\n setLoading(false);\n };\n\n useEffect(() => {\n if (botId && (!anonymousSession || flowContext.wasMinimized === \"true\" || flowContext.wasMinimized === true)) {\n fetchData();\n }\n }, [botId, anonymousSession, flowContext.wasMinimized]);\n\n useEffect(() => {\n if (resets) {\n setData([]);\n setCanFetchMoreData(true);\n setCurrentLoadedPage(1);\n setPage(1);\n setRawData([]);\n }\n }, [resets]);\n\n return { canFetchMoreData, currentLoadedPage, data, error, fetchData, loading, shouldDisplayHistory, unreadCount };\n};\n\nexport const useUnreadMessages = () => {\n const {\n chat: {\n chat: { botId },\n },\n } = useSelector((state: RootState) => state);\n\n const { anonymousSession } = useSession();\n\n const flowContext = useFlowContext();\n\n const api = useApi();\n const dispatch = useDispatch();\n\n const fetchUnreadMessages = async (botId: string) => {\n try {\n const unreadMessages = await api.chat.postRetrieveChatCounter({\n botId,\n status: \"Unread\",\n });\n\n dispatch(incrementUnreadCount(unreadMessages));\n } catch (error: any) {\n console.log(error);\n }\n };\n\n const BDNFlowContextBotId = flowContext.pa?.botIds ? (flowContext.pa?.botIds as Array<{ id: string }>)[0].id : null;\n const id = botId || (flowContext.botId as string) || BDNFlowContextBotId;\n\n useEffect(() => {\n if (!id) {\n console.log(\"BotID is not defined yet\");\n }\n\n if (!anonymousSession && id) {\n fetchUnreadMessages(id);\n }\n }, [anonymousSession, id, BDNFlowContextBotId]);\n};\n","export default \"data:image/svg+xml,%3csvg%20width='26'%20height='22'%20viewBox='0%200%2026%2022'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M24%200H2C1.46957%200%200.960859%200.210714%200.585786%200.585786C0.210714%200.960859%200%201.46957%200%202V20C0%2020.5304%200.210714%2021.0391%200.585786%2021.4142C0.960859%2021.7893%201.46957%2022%202%2022H10C10.2099%2022%2010.4145%2021.934%2010.5847%2021.8113C10.755%2021.6886%2010.8824%2021.5154%2010.9487%2021.3162L12.8025%2015.7563L17.375%2013.9287C17.5006%2013.878%2017.6147%2013.8025%2017.7105%2013.7067C17.8063%2013.6109%2017.8818%2013.4968%2017.9325%2013.3713L19.76%208.8025L25.32%206.94875C25.5184%206.88173%2025.6908%206.75411%2025.8128%206.58389C25.9348%206.41366%2026.0003%206.20943%2026%206V2C26%201.46957%2025.7893%200.960859%2025.4142%200.585786C25.0391%200.210714%2024.5304%200%2024%200ZM11.0513%2014.6838L9.27875%2020H2V16.5L8.5%2010L12.3025%2013.8025L11.625%2014.0713C11.4907%2014.1257%2011.3698%2014.2086%2011.2708%2014.3144C11.1717%2014.4202%2011.0968%2014.5462%2011.0513%2014.6838ZM24%205.27875L18.6838%207.05125C18.5458%207.0972%2018.4196%207.17267%2018.3138%207.27241C18.208%207.37215%2018.1252%207.49375%2018.0713%207.62875L16.2313%2012.2313L14.3225%2013L9.91375%208.59125C9.53871%208.21646%209.03021%208.00593%208.5%208.00593C7.96979%208.00593%207.46129%208.21646%207.08625%208.59125L2%2013.6712V2H24V5.27875ZM25.585%209.40375C25.4564%209.31104%2025.3077%209.25023%2025.151%209.22632C24.9943%209.20241%2024.8341%209.2161%2024.6838%209.26625L21.7087%2010.2587C21.5709%2010.3046%2021.4448%2010.3798%2021.339%2010.4794C21.2332%2010.5789%2021.1504%2010.7002%2021.0963%2010.835L19.3075%2015.3062L14.8363%2017.095C14.7015%2017.1491%2014.5801%2017.232%2014.4806%2017.3377C14.3811%2017.4435%2014.3058%2017.5697%2014.26%2017.7075L13.2675%2020.6825C13.2171%2020.8329%2013.2033%2020.9931%2013.2271%2021.1499C13.2508%2021.3067%2013.3116%2021.4557%2013.4043%2021.5844C13.497%2021.7131%2013.6189%2021.8179%2013.7601%2021.8902C13.9013%2021.9624%2014.0576%2022.0001%2014.2162%2022H24C24.5304%2022%2025.0391%2021.7893%2025.4142%2021.4142C25.7893%2021.0391%2026%2020.5304%2026%2020V10.2163C26%2010.0578%2025.9624%209.90165%2025.8903%209.76061C25.8181%209.61956%2025.7135%209.49768%2025.585%209.405V9.40375ZM24%2020H15.6038L16.01%2018.7812L20.4487%2017.0063C20.5743%2016.9555%2020.6884%2016.88%2020.7842%2016.7842C20.88%2016.6884%2020.9555%2016.5743%2021.0063%2016.4487L22.7812%2012.01L24%2011.6038V20Z'%20fill='%23DC0078'/%3e%3c/svg%3e\"","import { useState, useEffect } from \"react\";\n\nimport brokenImage from \"../assets/icons/broken_image.svg\";\n\nexport const useImageWithFallback = (src: string) => {\n const [imgSrc, setImgSrc] = useState(src);\n\n useEffect(() => {\n const img = new Image();\n img.src = src;\n img.onload = () => setImgSrc(src);\n img.onerror = () => setImgSrc(brokenImage);\n }, [src]);\n\n return imgSrc;\n};\n","import React, { useEffect, useRef, useState } from \"react\";\n\ninterface IntersectionResult {\n isVisible: boolean;\n positionFromTop: number | null;\n}\n\nexport const useIntersectionObserver = (treshold?: number | number[]): [React.RefObject, IntersectionResult] => {\n const targetRef = useRef(null);\n const [intersectionResult, setIntersectionResult] = useState({\n isVisible: false,\n positionFromTop: null,\n });\n\n useEffect(() => {\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n setIntersectionResult({\n isVisible: true,\n positionFromTop: entry.boundingClientRect.top,\n });\n } else {\n setIntersectionResult({\n isVisible: false,\n positionFromTop: null,\n });\n }\n });\n },\n {\n root: null,\n rootMargin: \"0px\",\n threshold: treshold || Array.from(Array(100).keys()).map((e) => e / 100),\n },\n );\n\n if (targetRef.current) {\n observer.observe(targetRef.current);\n }\n\n return () => {\n if (targetRef.current) {\n observer.unobserve(targetRef.current);\n }\n };\n }, []);\n\n return [targetRef, intersectionResult];\n};\n\nexport const usePercentageIntersectionObserver = (\n dependency: any,\n): [number, React.Dispatch | null>>] => {\n const [ref, setRef] = useState | null>(null);\n const [intersectionPercentage, setIntersectionPercentage] = useState(0);\n\n useEffect(() => {\n if (ref) {\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n setIntersectionPercentage(entry.intersectionRatio);\n });\n },\n {\n root: null,\n rootMargin: \"0px\",\n threshold: Array.from(Array(100).keys()).map((e) => e / 100),\n },\n );\n\n if (ref.current) {\n observer.observe(ref.current);\n }\n\n return () => {\n if (ref.current) {\n observer.unobserve(ref.current);\n }\n };\n }\n return;\n }, [ref, dependency]);\n\n return [intersectionPercentage, setRef];\n};\n","import { useSelector } from \"react-redux\";\n\nimport { BotType, menus } from \"@/menus\";\nimport { RootState } from \"@/store\";\n\nexport const useMenu = () => {\n let botType = useSelector((state: RootState) => state.chat.chat.botType);\n botType = (botType || \"bank\") as BotType;\n const menu = menus[botType];\n\n return { menu };\n};\n","import { useEffect, useRef, useLayoutEffect } from \"react\";\n\nexport const useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\nexport function useTimeout(callback: () => void, delay: number | null): void {\n const savedCallback = useRef(callback);\n\n // Remember the latest callback if it changes.\n useIsomorphicLayoutEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the timeout.\n useEffect(() => {\n // Don't schedule if no delay is specified.\n // Note: 0 is a valid value for delay.\n if (!delay && delay !== 0) {\n return;\n }\n\n const id = window.setTimeout(() => {\n savedCallback.current();\n }, delay);\n\n return () => {\n clearTimeout(id);\n };\n }, [delay]);\n}\n","import { ActionButton, Alert, Markdown } from \"belfius.geui.client.ui-react\";\nimport { FC } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { DatalayerEvents } from \"@/constants\";\nimport { useDatalayer } from \"@/contexts\";\nimport { useTranslator } from \"@gef1/dax-react-sdk\";\nimport { useChat } from \"@/hooks\";\nimport { BotType } from \"@/menus\";\nimport { LeftIconWithConfirmation, OverflowMenuAction } from \"@/menus/menus.interface.ts\";\nimport { cleanApplicationState, cleanChatState, RootState, setHaseBeenClosed, setMinimized } from \"@/store\";\n\ninterface MenuConfirmationProps {\n action: OverflowMenuAction | LeftIconWithConfirmation;\n close: () => void;\n}\n\nexport const MenuConfirmation: FC = ({ action, close }) => {\n const dispatch = useDispatch();\n const t = useTranslator();\n const datalayer = useDatalayer();\n const { onMobileDevice } = useSelector((state: RootState) => state.application);\n const { chat } = useSelector((state: RootState) => state.chat);\n const { stopChat } = useChat();\n\n const closing = () => {\n close();\n };\n\n const runAction = () => {\n if (action.minimize && onMobileDevice) {\n dispatch(setMinimized(true));\n }\n\n if (action.cleanStore) {\n dispatch(cleanApplicationState());\n dispatch(cleanChatState());\n }\n\n action.action();\n\n if (action.key === \"close\") {\n stopChat();\n dispatch(setHaseBeenClosed(true));\n datalayer.addEvent(chat.botType === BotType.INSURANCE ? DatalayerEvents.CLOSE_MYBO : DatalayerEvents.CLOSE_PA);\n }\n\n if (action.cleanChat) {\n dispatch(cleanChatState());\n }\n\n closing();\n };\n\n return (\n \n {t(action.confirmationDescription)} \n \n \n \n );\n};\n","import { EventCallback, PubSub } from \"@gef1/dax-client-sdk\";\nimport { Datalayer, MobileHeaderMessage } from \"@gef1/dax-gefw-host\";\nimport { FC, useEffect, useState } from \"react\";\n\nimport { MenuConfirmation } from \"@/components/confirmation/menu-confirmation.tsx\";\nimport { useDatalayer } from \"@/contexts\";\nimport { useMenu } from \"@/hooks\";\nimport { OverflowMenuAction } from \"@/menus/menus.interface.ts\";\nimport { minimizeChat } from \"@/utils\";\n\ninterface ActionMenuProps {\n pubSub: PubSub;\n}\n\nexport const MenuActions: FC = ({ pubSub }) => {\n const [action, setAction] = useState(null);\n const dl: Datalayer = useDatalayer();\n const { menu } = useMenu();\n\n const eventSubscriber: EventCallback = (event, data) => {\n if (event === MobileHeaderMessage.LEFT_ICON_CLICKED) {\n dl.addEvent(\"minimize-chat\");\n minimizeChat();\n }\n\n if (event === MobileHeaderMessage.OVERFLOW_MENU_CLICKED) {\n if (menu) {\n const menuAction = menu.menus.get(data.key as string)?.menuAction;\n\n if (menuAction) {\n setAction(menuAction);\n }\n }\n }\n };\n\n useEffect(() => {\n pubSub.subscribe(eventSubscriber, [\n \"authenticated\",\n \"unauthenticated\",\n MobileHeaderMessage.OVERFLOW_MENU_CLICKED,\n MobileHeaderMessage.LEFT_ICON_CLICKED,\n ]);\n return () => {\n pubSub.unsubscribe(eventSubscriber);\n };\n }, []);\n\n return (\n // @ts-ignore\n \n {action && (\n {\n setAction(null);\n }}\n action={action}\n />\n )}\n
\n );\n};\n","import { ChatInput } from \"belfius.geui.client.ui-react\";\nimport { ChangeEvent, useRef, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { MAX_MESSAGE_LENGTH } from \"@/constants\";\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\n\nimport { addMessage, RootState, setChatInputContainerHeight } from \"@/store\";\nimport { formatTextMessage, MessageSender } from \"@/utils\";\n\nimport css from \"./chat-input-container.module.pcss\";\nimport stylesheet from \"./chat-input-container.module.pcss?inline\";\n\nexport const ChatInputContainer = () => {\n const dispatch = useDispatch();\n const t = useTranslator();\n useCss(stylesheet);\n const { inputDisabled } = useSelector((state: RootState) => state.chat);\n const [value, setValue] = useState(\"\");\n const container = useRef(null);\n\n const updateValue = (event: ChangeEvent) => {\n const val = event.target.value;\n setValue(val);\n dispatch(setChatInputContainerHeight(container.current?.offsetHeight || 0));\n };\n\n const send = () => {\n const message = formatTextMessage(value);\n\n dispatch(addMessage(message));\n setValue(\"\");\n\n MessageSender.getInstance().send(message);\n };\n\n return (\n //@ts-ignore\n \n \n
\n );\n};\n","import * as React from 'react';\n\nconst LEFT = \"Left\";\nconst RIGHT = \"Right\";\nconst UP = \"Up\";\nconst DOWN = \"Down\";\n\n/* global document */\nconst defaultProps = {\n delta: 10,\n preventScrollOnSwipe: false,\n rotationAngle: 0,\n trackMouse: false,\n trackTouch: true,\n swipeDuration: Infinity,\n touchEventOptions: { passive: true },\n};\nconst initialState = {\n first: true,\n initial: [0, 0],\n start: 0,\n swiping: false,\n xy: [0, 0],\n};\nconst mouseMove = \"mousemove\";\nconst mouseUp = \"mouseup\";\nconst touchEnd = \"touchend\";\nconst touchMove = \"touchmove\";\nconst touchStart = \"touchstart\";\nfunction getDirection(absX, absY, deltaX, deltaY) {\n if (absX > absY) {\n if (deltaX > 0) {\n return RIGHT;\n }\n return LEFT;\n }\n else if (deltaY > 0) {\n return DOWN;\n }\n return UP;\n}\nfunction rotateXYByAngle(pos, angle) {\n if (angle === 0)\n return pos;\n const angleInRadians = (Math.PI / 180) * angle;\n const x = pos[0] * Math.cos(angleInRadians) + pos[1] * Math.sin(angleInRadians);\n const y = pos[1] * Math.cos(angleInRadians) - pos[0] * Math.sin(angleInRadians);\n return [x, y];\n}\nfunction getHandlers(set, handlerProps) {\n const onStart = (event) => {\n const isTouch = \"touches\" in event;\n // if more than a single touch don't track, for now...\n if (isTouch && event.touches.length > 1)\n return;\n set((state, props) => {\n // setup mouse listeners on document to track swipe since swipe can leave container\n if (props.trackMouse && !isTouch) {\n document.addEventListener(mouseMove, onMove);\n document.addEventListener(mouseUp, onUp);\n }\n const { clientX, clientY } = isTouch ? event.touches[0] : event;\n const xy = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n props.onTouchStartOrOnMouseDown &&\n props.onTouchStartOrOnMouseDown({ event });\n return Object.assign(Object.assign(Object.assign({}, state), initialState), { initial: xy.slice(), xy, start: event.timeStamp || 0 });\n });\n };\n const onMove = (event) => {\n set((state, props) => {\n const isTouch = \"touches\" in event;\n // Discount a swipe if additional touches are present after\n // a swipe has started.\n if (isTouch && event.touches.length > 1) {\n return state;\n }\n // if swipe has exceeded duration stop tracking\n if (event.timeStamp - state.start > props.swipeDuration) {\n return state.swiping ? Object.assign(Object.assign({}, state), { swiping: false }) : state;\n }\n const { clientX, clientY } = isTouch ? event.touches[0] : event;\n const [x, y] = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n const deltaX = x - state.xy[0];\n const deltaY = y - state.xy[1];\n const absX = Math.abs(deltaX);\n const absY = Math.abs(deltaY);\n const time = (event.timeStamp || 0) - state.start;\n const velocity = Math.sqrt(absX * absX + absY * absY) / (time || 1);\n const vxvy = [deltaX / (time || 1), deltaY / (time || 1)];\n const dir = getDirection(absX, absY, deltaX, deltaY);\n // if swipe is under delta and we have not started to track a swipe: skip update\n const delta = typeof props.delta === \"number\"\n ? props.delta\n : props.delta[dir.toLowerCase()] ||\n defaultProps.delta;\n if (absX < delta && absY < delta && !state.swiping)\n return state;\n const eventData = {\n absX,\n absY,\n deltaX,\n deltaY,\n dir,\n event,\n first: state.first,\n initial: state.initial,\n velocity,\n vxvy,\n };\n // call onSwipeStart if present and is first swipe event\n eventData.first && props.onSwipeStart && props.onSwipeStart(eventData);\n // call onSwiping if present\n props.onSwiping && props.onSwiping(eventData);\n // track if a swipe is cancelable (handler for swiping or swiped(dir) exists)\n // so we can call preventDefault if needed\n let cancelablePageSwipe = false;\n if (props.onSwiping ||\n props.onSwiped ||\n props[`onSwiped${dir}`]) {\n cancelablePageSwipe = true;\n }\n if (cancelablePageSwipe &&\n props.preventScrollOnSwipe &&\n props.trackTouch &&\n event.cancelable) {\n event.preventDefault();\n }\n return Object.assign(Object.assign({}, state), { \n // first is now always false\n first: false, eventData, swiping: true });\n });\n };\n const onEnd = (event) => {\n set((state, props) => {\n let eventData;\n if (state.swiping && state.eventData) {\n // if swipe is less than duration fire swiped callbacks\n if (event.timeStamp - state.start < props.swipeDuration) {\n eventData = Object.assign(Object.assign({}, state.eventData), { event });\n props.onSwiped && props.onSwiped(eventData);\n const onSwipedDir = props[`onSwiped${eventData.dir}`];\n onSwipedDir && onSwipedDir(eventData);\n }\n }\n else {\n props.onTap && props.onTap({ event });\n }\n props.onTouchEndOrOnMouseUp && props.onTouchEndOrOnMouseUp({ event });\n return Object.assign(Object.assign(Object.assign({}, state), initialState), { eventData });\n });\n };\n const cleanUpMouse = () => {\n // safe to just call removeEventListener\n document.removeEventListener(mouseMove, onMove);\n document.removeEventListener(mouseUp, onUp);\n };\n const onUp = (e) => {\n cleanUpMouse();\n onEnd(e);\n };\n /**\n * The value of passive on touchMove depends on `preventScrollOnSwipe`:\n * - true => { passive: false }\n * - false => { passive: true } // Default\n *\n * NOTE: When preventScrollOnSwipe is true, we attempt to call preventDefault to prevent scroll.\n *\n * props.touchEventOptions can also be set for all touch event listeners,\n * but for `touchmove` specifically when `preventScrollOnSwipe` it will\n * supersede and force passive to false.\n *\n */\n const attachTouch = (el, props) => {\n let cleanup = () => { };\n if (el && el.addEventListener) {\n const baseOptions = Object.assign(Object.assign({}, defaultProps.touchEventOptions), props.touchEventOptions);\n // attach touch event listeners and handlers\n const tls = [\n [touchStart, onStart, baseOptions],\n // preventScrollOnSwipe option supersedes touchEventOptions.passive\n [\n touchMove,\n onMove,\n Object.assign(Object.assign({}, baseOptions), (props.preventScrollOnSwipe ? { passive: false } : {})),\n ],\n [touchEnd, onEnd, baseOptions],\n ];\n tls.forEach(([e, h, o]) => el.addEventListener(e, h, o));\n // return properly scoped cleanup method for removing listeners, options not required\n cleanup = () => tls.forEach(([e, h]) => el.removeEventListener(e, h));\n }\n return cleanup;\n };\n const onRef = (el) => {\n // \"inline\" ref functions are called twice on render, once with null then again with DOM element\n // ignore null here\n if (el === null)\n return;\n set((state, props) => {\n // if the same DOM el as previous just return state\n if (state.el === el)\n return state;\n const addState = {};\n // if new DOM el clean up old DOM and reset cleanUpTouch\n if (state.el && state.el !== el && state.cleanUpTouch) {\n state.cleanUpTouch();\n addState.cleanUpTouch = void 0;\n }\n // only attach if we want to track touch\n if (props.trackTouch && el) {\n addState.cleanUpTouch = attachTouch(el, props);\n }\n // store event attached DOM el for comparison, clean up, and re-attachment\n return Object.assign(Object.assign(Object.assign({}, state), { el }), addState);\n });\n };\n // set ref callback to attach touch event listeners\n const output = {\n ref: onRef,\n };\n // if track mouse attach mouse down listener\n if (handlerProps.trackMouse) {\n output.onMouseDown = onStart;\n }\n return [output, attachTouch];\n}\nfunction updateTransientState(state, props, previousProps, attachTouch) {\n // if trackTouch is off or there is no el, then remove handlers if necessary and exit\n if (!props.trackTouch || !state.el) {\n if (state.cleanUpTouch) {\n state.cleanUpTouch();\n }\n return Object.assign(Object.assign({}, state), { cleanUpTouch: undefined });\n }\n // trackTouch is on, so if there are no handlers attached, attach them and exit\n if (!state.cleanUpTouch) {\n return Object.assign(Object.assign({}, state), { cleanUpTouch: attachTouch(state.el, props) });\n }\n // trackTouch is on and handlers are already attached, so if preventScrollOnSwipe changes value,\n // remove and reattach handlers (this is required to update the passive option when attaching\n // the handlers)\n if (props.preventScrollOnSwipe !== previousProps.preventScrollOnSwipe ||\n props.touchEventOptions.passive !== previousProps.touchEventOptions.passive) {\n state.cleanUpTouch();\n return Object.assign(Object.assign({}, state), { cleanUpTouch: attachTouch(state.el, props) });\n }\n return state;\n}\nfunction useSwipeable(options) {\n const { trackMouse } = options;\n const transientState = React.useRef(Object.assign({}, initialState));\n const transientProps = React.useRef(Object.assign({}, defaultProps));\n // track previous rendered props\n const previousProps = React.useRef(Object.assign({}, transientProps.current));\n previousProps.current = Object.assign({}, transientProps.current);\n // update current render props & defaults\n transientProps.current = Object.assign(Object.assign({}, defaultProps), options);\n // Force defaults for config properties\n let defaultKey;\n for (defaultKey in defaultProps) {\n if (transientProps.current[defaultKey] === void 0) {\n transientProps.current[defaultKey] = defaultProps[defaultKey];\n }\n }\n const [handlers, attachTouch] = React.useMemo(() => getHandlers((stateSetter) => (transientState.current = stateSetter(transientState.current, transientProps.current)), { trackMouse }), [trackMouse]);\n transientState.current = updateTransientState(transientState.current, transientProps.current, previousProps.current, attachTouch);\n return handlers;\n}\n\nexport { DOWN, LEFT, RIGHT, UP, useSwipeable };\n//# sourceMappingURL=index.js.map\n","(typeof navigator !== \"undefined\") && (function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\n})(this, (function () { 'use strict';\n\n var svgNS = 'http://www.w3.org/2000/svg';\n var locationHref = '';\n var _useWebWorker = false;\n var initialDefaultFrame = -999999;\n\n var setWebWorker = function setWebWorker(flag) {\n _useWebWorker = !!flag;\n };\n\n var getWebWorker = function getWebWorker() {\n return _useWebWorker;\n };\n\n var setLocationHref = function setLocationHref(value) {\n locationHref = value;\n };\n\n var getLocationHref = function getLocationHref() {\n return locationHref;\n };\n\n function createTag(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElement(type);\n }\n\n function extendPrototype(sources, destination) {\n var i;\n var len = sources.length;\n var sourcePrototype;\n\n for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype;\n\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n }\n }\n }\n\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop);\n }\n\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n\n ProxyFunction.prototype = prototype;\n return ProxyFunction;\n }\n\n // import Howl from '../../3rd_party/howler';\n var audioControllerFactory = function () {\n function AudioController(audioFactory) {\n this.audios = [];\n this.audioFactory = audioFactory;\n this._volume = 1;\n this._isMuted = false;\n }\n\n AudioController.prototype = {\n addAudio: function addAudio(audio) {\n this.audios.push(audio);\n },\n pause: function pause() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].pause();\n }\n },\n resume: function resume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].resume();\n }\n },\n setRate: function setRate(rateValue) {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].setRate(rateValue);\n }\n },\n createAudio: function createAudio(assetPath) {\n if (this.audioFactory) {\n return this.audioFactory(assetPath);\n }\n\n if (window.Howl) {\n return new window.Howl({\n src: [assetPath]\n });\n }\n\n return {\n isPlaying: false,\n play: function play() {\n this.isPlaying = true;\n },\n seek: function seek() {\n this.isPlaying = false;\n },\n playing: function playing() {},\n rate: function rate() {},\n setVolume: function setVolume() {}\n };\n },\n setAudioFactory: function setAudioFactory(audioFactory) {\n this.audioFactory = audioFactory;\n },\n setVolume: function setVolume(value) {\n this._volume = value;\n\n this._updateVolume();\n },\n mute: function mute() {\n this._isMuted = true;\n\n this._updateVolume();\n },\n unmute: function unmute() {\n this._isMuted = false;\n\n this._updateVolume();\n },\n getVolume: function getVolume() {\n return this._volume;\n },\n _updateVolume: function _updateVolume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\n }\n }\n };\n return function () {\n return new AudioController();\n };\n }();\n\n var createTypedArray = function () {\n function createRegularArray(type, len) {\n var i = 0;\n var arr = [];\n var value;\n\n switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1;\n break;\n\n default:\n value = 1.1;\n break;\n }\n\n for (i = 0; i < len; i += 1) {\n arr.push(value);\n }\n\n return arr;\n }\n\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len);\n }\n\n if (type === 'int16') {\n return new Int16Array(len);\n }\n\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len);\n }\n\n return createRegularArray(type, len);\n }\n\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory;\n }\n\n return createRegularArray;\n }();\n\n function createSizedArray(len) {\n return Array.apply(null, {\n length: len\n });\n }\n\n function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\n var subframeEnabled = true;\n var expressionsPlugin = null;\n var expressionsInterfaces = null;\n var idPrefix$1 = '';\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n var _shouldRoundValues = false;\n var bmPow = Math.pow;\n var bmSqrt = Math.sqrt;\n var bmFloor = Math.floor;\n var bmMax = Math.max;\n var bmMin = Math.min;\n var BMMath = {};\n\n (function () {\n var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\n var i;\n var len = propertyNames.length;\n\n for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\n }\n })();\n\n function ProjectInterface$1() {\n return {};\n }\n\n BMMath.random = Math.random;\n\n BMMath.abs = function (val) {\n var tOfVal = _typeof$6(val);\n\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length);\n var i;\n var len = val.length;\n\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i]);\n }\n\n return absArr;\n }\n\n return Math.abs(val);\n };\n\n var defaultCurveSegments = 150;\n var degToRads = Math.PI / 180;\n var roundCorner = 0.5519;\n\n function roundValues(flag) {\n _shouldRoundValues = !!flag;\n }\n\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value);\n }\n\n return value;\n }\n\n function styleDiv(element) {\n element.style.position = 'absolute';\n element.style.top = 0;\n element.style.left = 0;\n element.style.display = 'block';\n element.style.transformOrigin = '0 0';\n element.style.webkitTransformOrigin = '0 0';\n element.style.backfaceVisibility = 'visible';\n element.style.webkitBackfaceVisibility = 'visible';\n element.style.transformStyle = 'preserve-3d';\n element.style.webkitTransformStyle = 'preserve-3d';\n element.style.mozTransformStyle = 'preserve-3d';\n }\n\n function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n this.type = type;\n this.currentTime = currentTime;\n this.totalTime = totalTime;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteEvent(type, frameMultiplier) {\n this.type = type;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n this.type = type;\n this.currentLoop = currentLoop;\n this.totalLoops = totalLoops;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type;\n this.firstFrame = firstFrame;\n this.totalFrames = totalFrames;\n }\n\n function BMDestroyEvent(type, target) {\n this.type = type;\n this.target = target;\n }\n\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError';\n this.nativeError = nativeError;\n this.currentTime = currentTime;\n }\n\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError';\n this.nativeError = nativeError;\n }\n\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type;\n this.nativeError = nativeError;\n }\n\n var createElementID = function () {\n var _count = 0;\n return function createID() {\n _count += 1;\n return idPrefix$1 + '__lottie_element_' + _count;\n };\n }();\n\n function HSVtoRGB(h, s, v) {\n var r;\n var g;\n var b;\n var i;\n var f;\n var p;\n var q;\n var t;\n i = Math.floor(h * 6);\n f = h * 6 - i;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n\n default:\n break;\n }\n\n return [r, g, b];\n }\n\n function RGBtoHSV(r, g, b) {\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var d = max - min;\n var h;\n var s = max === 0 ? 0 : d / max;\n var v = max / 255;\n\n switch (max) {\n case min:\n h = 0;\n break;\n\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n\n default:\n break;\n }\n\n return [h, s, v];\n }\n\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[1] += offset;\n\n if (hsv[1] > 1) {\n hsv[1] = 1;\n } else if (hsv[1] <= 0) {\n hsv[1] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[2] += offset;\n\n if (hsv[2] > 1) {\n hsv[2] = 1;\n } else if (hsv[2] < 0) {\n hsv[2] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addHueToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[0] += offset / 360;\n\n if (hsv[0] > 1) {\n hsv[0] -= 1;\n } else if (hsv[0] < 0) {\n hsv[0] += 1;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n var rgbToHex = function () {\n var colorMap = [];\n var i;\n var hex;\n\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16);\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n }\n\n return function (r, g, b) {\n if (r < 0) {\n r = 0;\n }\n\n if (g < 0) {\n g = 0;\n }\n\n if (b < 0) {\n b = 0;\n }\n\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n };\n }();\n\n var setSubframeEnabled = function setSubframeEnabled(flag) {\n subframeEnabled = !!flag;\n };\n\n var getSubframeEnabled = function getSubframeEnabled() {\n return subframeEnabled;\n };\n\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\n expressionsPlugin = value;\n };\n\n var getExpressionsPlugin = function getExpressionsPlugin() {\n return expressionsPlugin;\n };\n\n var setExpressionInterfaces = function setExpressionInterfaces(value) {\n expressionsInterfaces = value;\n };\n\n var getExpressionInterfaces = function getExpressionInterfaces() {\n return expressionsInterfaces;\n };\n\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n defaultCurveSegments = value;\n };\n\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\n return defaultCurveSegments;\n };\n\n var setIdPrefix = function setIdPrefix(value) {\n idPrefix$1 = value;\n };\n\n var getIdPrefix = function getIdPrefix() {\n return idPrefix$1;\n };\n\n function createNS(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElementNS(svgNS, type);\n }\n\n function _typeof$5(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\n\n var dataManager = function () {\n var _counterId = 1;\n var processes = [];\n var workerFn;\n var workerInstance;\n var workerProxy = {\n onmessage: function onmessage() {},\n postMessage: function postMessage(path) {\n workerFn({\n data: path\n });\n }\n };\n var _workerSelf = {\n postMessage: function postMessage(data) {\n workerProxy.onmessage({\n data: data\n });\n }\n };\n\n function createWorker(fn) {\n if (window.Worker && window.Blob && getWebWorker()) {\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\n type: 'text/javascript'\n }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n\n var url = URL.createObjectURL(blob);\n return new Worker(url);\n }\n\n workerFn = fn;\n return workerProxy;\n }\n\n function setupWorker() {\n if (!workerInstance) {\n workerInstance = createWorker(function workerStart(e) {\n function dataFunctionManager() {\n function completeLayers(layers, comps) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true;\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\n }\n\n if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n }\n }\n }\n }\n }\n\n if (layerData.ty === 0) {\n layerData.layers = findCompLayers(layerData.refId, comps);\n completeLayers(layerData.layers, comps);\n } else if (layerData.ty === 4) {\n completeShapes(layerData.shapes);\n } else if (layerData.ty === 5) {\n completeText(layerData);\n }\n }\n }\n }\n\n function completeChars(chars, assets) {\n if (chars) {\n var i = 0;\n var len = chars.length;\n\n for (i = 0; i < len; i += 1) {\n if (chars[i].t === 1) {\n // var compData = findComp(chars[i].data.refId, assets);\n chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); // chars[i].data.ip = 0;\n // chars[i].data.op = 99999;\n // chars[i].data.st = 0;\n // chars[i].data.sr = 1;\n // chars[i].w = compData.w;\n // chars[i].data.ks = {\n // a: { k: [0, 0, 0], a: 0 },\n // p: { k: [0, -compData.h, 0], a: 0 },\n // r: { k: 0, a: 0 },\n // s: { k: [100, 100], a: 0 },\n // o: { k: 100, a: 0 },\n // };\n\n completeLayers(chars[i].data.layers, assets);\n }\n }\n }\n }\n\n function findComp(id, comps) {\n var i = 0;\n var len = comps.length;\n\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps);\n\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true;\n return comp.layers;\n }\n\n return JSON.parse(JSON.stringify(comp.layers));\n }\n\n return null;\n }\n\n function completeShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n convertPathsToAbsoluteValues(arr[i].ks.k);\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\n }\n\n if (arr[i].ks.k[j].e) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeShapes(arr[i].it);\n }\n }\n }\n\n function convertPathsToAbsoluteValues(path) {\n var i;\n var len = path.i.length;\n\n for (i = 0; i < len; i += 1) {\n path.i[i][0] += path.v[i][0];\n path.i[i][1] += path.v[i][1];\n path.o[i][0] += path.v[i][0];\n path.o[i][1] += path.v[i][1];\n }\n }\n\n function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n\n if (minimum[0] > animVersion[0]) {\n return true;\n }\n\n if (animVersion[0] > minimum[0]) {\n return false;\n }\n\n if (minimum[1] > animVersion[1]) {\n return true;\n }\n\n if (animVersion[1] > minimum[1]) {\n return false;\n }\n\n if (minimum[2] > animVersion[2]) {\n return true;\n }\n\n if (animVersion[2] > minimum[2]) {\n return false;\n }\n\n return null;\n }\n\n var checkText = function () {\n var minimumVersion = [4, 4, 14];\n\n function updateTextLayer(textLayer) {\n var documentData = textLayer.t.d;\n textLayer.t.d = {\n k: [{\n s: documentData,\n t: 0\n }]\n };\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkChars = function () {\n var minimumVersion = [4, 7, 99];\n return function (animationData) {\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n var i;\n var len = animationData.chars.length;\n\n for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i];\n\n if (charData.data && charData.data.shapes) {\n completeShapes(charData.data.shapes);\n charData.data.ip = 0;\n charData.data.op = 99999;\n charData.data.st = 0;\n charData.data.sr = 1;\n charData.data.ks = {\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n }\n };\n\n if (!animationData.chars[i].t) {\n charData.data.shapes.push({\n ty: 'no'\n });\n charData.data.shapes[0].it.push({\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n },\n sk: {\n k: 0,\n a: 0\n },\n sa: {\n k: 0,\n a: 0\n },\n ty: 'tr'\n });\n }\n }\n }\n }\n };\n }();\n\n var checkPathProperties = function () {\n var minimumVersion = [5, 7, 15];\n\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p;\n\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a\n };\n }\n\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p\n };\n }\n\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r\n };\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkColors = function () {\n var minimumVersion = [4, 1, 9];\n\n function iterateShapes(shapes) {\n var i;\n var len = shapes.length;\n var j;\n var jLen;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n iterateShapes(shapes[i].it);\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\n jLen = shapes[i].c.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[i].c.k[j].s) {\n shapes[i].c.k[j].s[0] /= 255;\n shapes[i].c.k[j].s[1] /= 255;\n shapes[i].c.k[j].s[2] /= 255;\n shapes[i].c.k[j].s[3] /= 255;\n }\n\n if (shapes[i].c.k[j].e) {\n shapes[i].c.k[j].e[0] /= 255;\n shapes[i].c.k[j].e[1] /= 255;\n shapes[i].c.k[j].e[2] /= 255;\n shapes[i].c.k[j].e[3] /= 255;\n }\n }\n } else {\n shapes[i].c.k[0] /= 255;\n shapes[i].c.k[1] /= 255;\n shapes[i].c.k[2] /= 255;\n shapes[i].c.k[3] /= 255;\n }\n }\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkShapes = function () {\n var minimumVersion = [4, 4, 18];\n\n function completeClosingShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n arr[i].ks.k.c = arr[i].closed;\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n arr[i].ks.k[j].s[0].c = arr[i].closed;\n }\n\n if (arr[i].ks.k[j].e) {\n arr[i].ks.k[j].e[0].c = arr[i].closed;\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeClosingShapes(arr[i].it);\n }\n }\n }\n\n function iterateLayers(layers) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n maskProps[j].pt.k.c = maskProps[j].cl;\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\n }\n\n if (maskProps[j].pt.k[k].e) {\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\n }\n }\n }\n }\n }\n\n if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n function completeData(animationData) {\n if (animationData.__complete) {\n return;\n }\n\n checkColors(animationData);\n checkText(animationData);\n checkChars(animationData);\n checkPathProperties(animationData);\n checkShapes(animationData);\n completeLayers(animationData.layers, animationData.assets);\n completeChars(animationData.chars, animationData.assets);\n animationData.__complete = true;\n }\n\n function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\n }\n }\n\n var moduleOb = {};\n moduleOb.completeData = completeData;\n moduleOb.checkColors = checkColors;\n moduleOb.checkChars = checkChars;\n moduleOb.checkPathProperties = checkPathProperties;\n moduleOb.checkShapes = checkShapes;\n moduleOb.completeLayers = completeLayers;\n return moduleOb;\n }\n\n if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager();\n }\n\n if (!_workerSelf.assetLoader) {\n _workerSelf.assetLoader = function () {\n function formatResponse(xhr) {\n // using typeof doubles the time of execution of this method,\n // so if available, it's better to use the header to validate the type\n var contentTypeHeader = xhr.getResponseHeader('content-type');\n\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response;\n }\n\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\n return xhr.response;\n }\n\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response);\n }\n\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText);\n }\n\n return null;\n }\n\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response;\n var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\n\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json';\n } catch (err) {} // eslint-disable-line no-empty\n\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n response = formatResponse(xhr);\n callback(response);\n } else {\n try {\n response = formatResponse(xhr);\n callback(response);\n } catch (err) {\n if (errorCallback) {\n errorCallback(err);\n }\n }\n }\n }\n };\n\n try {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), path, true);\n } catch (error) {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\n }\n\n xhr.send();\n }\n\n return {\n load: loadAsset\n };\n }();\n }\n\n if (e.data.type === 'loadAnimation') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.dataManager.completeData(data);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n } else if (e.data.type === 'complete') {\n var animation = e.data.animation;\n\n _workerSelf.dataManager.completeData(animation);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: animation,\n status: 'success'\n });\n } else if (e.data.type === 'loadData') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n }\n });\n\n workerInstance.onmessage = function (event) {\n var data = event.data;\n var id = data.id;\n var process = processes[id];\n processes[id] = null;\n\n if (data.status === 'success') {\n process.onComplete(data.payload);\n } else if (process.onError) {\n process.onError();\n }\n };\n }\n }\n\n function createProcess(onComplete, onError) {\n _counterId += 1;\n var id = 'processId_' + _counterId;\n processes[id] = {\n onComplete: onComplete,\n onError: onError\n };\n return id;\n }\n\n function loadAnimation(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadAnimation',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function loadData(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadData',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function completeAnimation(anim, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'complete',\n animation: anim,\n id: processId\n });\n }\n\n return {\n loadAnimation: loadAnimation,\n loadData: loadData,\n completeAnimation: completeAnimation\n };\n }();\n\n var ImagePreloader = function () {\n var proxyImage = function () {\n var canvas = createTag('canvas');\n canvas.width = 1;\n canvas.height = 1;\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return canvas;\n }();\n\n function imageLoaded() {\n this.loadedAssets += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function footageLoaded() {\n this.loadedFootagesCount += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = assetsPath + imagePath;\n } else {\n path = originalPath;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n }\n\n function testImageLoaded(img) {\n var _count = 0;\n var intervalId = setInterval(function () {\n var box = img.getBBox();\n\n if (box.width || _count > 500) {\n this._imageLoaded();\n\n clearInterval(intervalId);\n }\n\n _count += 1;\n }.bind(this), 50);\n }\n\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createNS('image');\n\n if (isSafari) {\n this.testImageLoaded(img);\n } else {\n img.addEventListener('load', this._imageLoaded, false);\n }\n\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\n if (this._elementHelper.append) {\n this._elementHelper.append(img);\n } else {\n this._elementHelper.appendChild(img);\n }\n\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createImgData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createTag('img');\n img.crossOrigin = 'anonymous';\n img.addEventListener('load', this._imageLoaded, false);\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.src = path;\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createFootageData(data) {\n var ob = {\n assetData: data\n };\n var path = getAssetsPath(data, this.assetsPath, this.path);\n dataManager.loadData(path, function (footageData) {\n ob.img = footageData;\n\n this._footageLoaded();\n }.bind(this), function () {\n ob.img = {};\n\n this._footageLoaded();\n }.bind(this));\n return ob;\n }\n\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb;\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (!assets[i].layers) {\n if (!assets[i].t || assets[i].t === 'seq') {\n this.totalImages += 1;\n this.images.push(this._createImageData(assets[i]));\n } else if (assets[i].t === 3) {\n this.totalFootages += 1;\n this.images.push(this.createFootageData(assets[i]));\n }\n }\n }\n }\n\n function setPath(path) {\n this.path = path || '';\n }\n\n function setAssetsPath(path) {\n this.assetsPath = path || '';\n }\n\n function getAsset(assetData) {\n var i = 0;\n var len = this.images.length;\n\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function destroy() {\n this.imagesLoadedCb = null;\n this.images.length = 0;\n }\n\n function loadedImages() {\n return this.totalImages === this.loadedAssets;\n }\n\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount;\n }\n\n function setCacheType(type, elementHelper) {\n if (type === 'svg') {\n this._elementHelper = elementHelper;\n this._createImageData = this.createImageData.bind(this);\n } else {\n this._createImageData = this.createImgData.bind(this);\n }\n }\n\n function ImagePreloaderFactory() {\n this._imageLoaded = imageLoaded.bind(this);\n this._footageLoaded = footageLoaded.bind(this);\n this.testImageLoaded = testImageLoaded.bind(this);\n this.createFootageData = createFootageData.bind(this);\n this.assetsPath = '';\n this.path = '';\n this.totalImages = 0;\n this.totalFootages = 0;\n this.loadedAssets = 0;\n this.loadedFootagesCount = 0;\n this.imagesLoadedCb = null;\n this.images = [];\n }\n\n ImagePreloaderFactory.prototype = {\n loadAssets: loadAssets,\n setAssetsPath: setAssetsPath,\n setPath: setPath,\n loadedImages: loadedImages,\n loadedFootages: loadedFootages,\n destroy: destroy,\n getAsset: getAsset,\n createImgData: createImgData,\n createImageData: createImageData,\n imageLoaded: imageLoaded,\n footageLoaded: footageLoaded,\n setCacheType: setCacheType\n };\n return ImagePreloaderFactory;\n }();\n\n function BaseEvent() {}\n\n BaseEvent.prototype = {\n triggerEvent: function triggerEvent(eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName];\n\n for (var i = 0; i < callbacks.length; i += 1) {\n callbacks[i](args);\n }\n }\n },\n addEventListener: function addEventListener(eventName, callback) {\n if (!this._cbs[eventName]) {\n this._cbs[eventName] = [];\n }\n\n this._cbs[eventName].push(callback);\n\n return function () {\n this.removeEventListener(eventName, callback);\n }.bind(this);\n },\n removeEventListener: function removeEventListener(eventName, callback) {\n if (!callback) {\n this._cbs[eventName] = null;\n } else if (this._cbs[eventName]) {\n var i = 0;\n var len = this._cbs[eventName].length;\n\n while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1);\n\n i -= 1;\n len -= 1;\n }\n\n i += 1;\n }\n\n if (!this._cbs[eventName].length) {\n this._cbs[eventName] = null;\n }\n }\n }\n };\n\n var markerParser = function () {\n function parsePayloadLines(payload) {\n var lines = payload.split('\\r\\n');\n var keys = {};\n var line;\n var keysCount = 0;\n\n for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':');\n\n if (line.length === 2) {\n keys[line[0]] = line[1].trim();\n keysCount += 1;\n }\n }\n\n if (keysCount === 0) {\n throw new Error();\n }\n\n return keys;\n }\n\n return function (_markers) {\n var markers = [];\n\n for (var i = 0; i < _markers.length; i += 1) {\n var _marker = _markers[i];\n var markerData = {\n time: _marker.tm,\n duration: _marker.dr\n };\n\n try {\n markerData.payload = JSON.parse(_markers[i].cm);\n } catch (_) {\n try {\n markerData.payload = parsePayloadLines(_markers[i].cm);\n } catch (__) {\n markerData.payload = {\n name: _markers[i].cm\n };\n }\n }\n\n markers.push(markerData);\n }\n\n return markers;\n };\n }();\n\n var ProjectInterface = function () {\n function registerComposition(comp) {\n this.compositions.push(comp);\n }\n\n return function () {\n function _thisProjectFunction(name) {\n var i = 0;\n var len = this.compositions.length;\n\n while (i < len) {\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n this.compositions[i].prepareFrame(this.currentFrame);\n }\n\n return this.compositions[i].compInterface;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n _thisProjectFunction.compositions = [];\n _thisProjectFunction.currentFrame = 0;\n _thisProjectFunction.registerComposition = registerComposition;\n return _thisProjectFunction;\n };\n }();\n\n var renderers = {};\n\n var registerRenderer = function registerRenderer(key, value) {\n renderers[key] = value;\n };\n\n function getRenderer(key) {\n return renderers[key];\n }\n\n function getRegisteredRenderer() {\n // Returns canvas by default for compatibility\n if (renderers.canvas) {\n return 'canvas';\n } // Returns any renderer that is registered\n\n\n for (var key in renderers) {\n if (renderers[key]) {\n return key;\n }\n }\n\n return '';\n }\n\n function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\n\n var AnimationItem = function AnimationItem() {\n this._cbs = [];\n this.name = '';\n this.path = '';\n this.isLoaded = false;\n this.currentFrame = 0;\n this.currentRawFrame = 0;\n this.firstFrame = 0;\n this.totalFrames = 0;\n this.frameRate = 0;\n this.frameMult = 0;\n this.playSpeed = 1;\n this.playDirection = 1;\n this.playCount = 0;\n this.animationData = {};\n this.assets = [];\n this.isPaused = true;\n this.autoplay = false;\n this.loop = true;\n this.renderer = null;\n this.animationID = createElementID();\n this.assetsPath = '';\n this.timeCompleted = 0;\n this.segmentPos = 0;\n this.isSubframeEnabled = getSubframeEnabled();\n this.segments = [];\n this._idle = true;\n this._completedLoop = false;\n this.projectInterface = ProjectInterface();\n this.imagePreloader = new ImagePreloader();\n this.audioController = audioControllerFactory();\n this.markers = [];\n this.configAnimation = this.configAnimation.bind(this);\n this.onSetupError = this.onSetupError.bind(this);\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\n this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\n this.expressionsPlugin = getExpressionsPlugin();\n };\n\n extendPrototype([BaseEvent], AnimationItem);\n\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container;\n }\n\n var animType = 'svg';\n\n if (params.animType) {\n animType = params.animType;\n } else if (params.renderer) {\n animType = params.renderer;\n }\n\n var RendererClass = getRenderer(animType);\n this.renderer = new RendererClass(this, params.rendererSettings);\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\n this.renderer.setProjectInterface(this.projectInterface);\n this.animType = animType;\n\n if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n this.loop = true;\n } else if (params.loop === false) {\n this.loop = false;\n } else {\n this.loop = parseInt(params.loop, 10);\n }\n\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\n this.name = params.name ? params.name : '';\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\n this.assetsPath = params.assetsPath;\n this.initialSegment = params.initialSegment;\n\n if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory);\n }\n\n if (params.animationData) {\n this.setupAnimation(params.animationData);\n } else if (params.path) {\n if (params.path.lastIndexOf('\\\\') !== -1) {\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\n } else {\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\n }\n\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\n dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\n }\n };\n\n AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed');\n };\n\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation);\n };\n\n AnimationItem.prototype.setData = function (wrapper, animationData) {\n if (animationData) {\n if (_typeof$4(animationData) !== 'object') {\n animationData = JSON.parse(animationData);\n }\n }\n\n var params = {\n wrapper: wrapper,\n animationData: animationData\n };\n var wrapperAttributes = wrapper.attributes;\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : getRegisteredRenderer() || 'canvas';\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\n\n if (loop === 'false') {\n params.loop = false;\n } else if (loop === 'true') {\n params.loop = true;\n } else if (loop !== '') {\n params.loop = parseInt(loop, 10);\n }\n\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\n params.autoplay = autoplay !== 'false';\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\n\n if (prerender === 'false') {\n params.prerender = false;\n }\n\n if (!params.path) {\n this.trigger('destroy');\n } else {\n this.setParams(params);\n }\n };\n\n AnimationItem.prototype.includeLayers = function (data) {\n if (data.op > this.animationData.op) {\n this.animationData.op = data.op;\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\n }\n\n var layers = this.animationData.layers;\n var i;\n var len = layers.length;\n var newLayers = data.layers;\n var j;\n var jLen = newLayers.length;\n\n for (j = 0; j < jLen; j += 1) {\n i = 0;\n\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j];\n break;\n }\n\n i += 1;\n }\n }\n\n if (data.chars || data.fonts) {\n this.renderer.globalData.fontManager.addChars(data.chars);\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\n }\n\n if (data.assets) {\n len = data.assets.length;\n\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i]);\n }\n }\n\n this.animationData.__complete = false;\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n };\n\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments;\n\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready');\n this.timeCompleted = this.totalFrames;\n return;\n }\n\n var segment = segments.shift();\n this.timeCompleted = segment.time * this.frameRate;\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\n this.segmentPos += 1;\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\n this.trigger('data_failed');\n }.bind(this));\n };\n\n AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments;\n\n if (!segments) {\n this.timeCompleted = this.totalFrames;\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images');\n this.checkLoaded();\n };\n\n AnimationItem.prototype.preloadImages = function () {\n this.imagePreloader.setAssetsPath(this.assetsPath);\n this.imagePreloader.setPath(this.path);\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\n };\n\n AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return;\n }\n\n try {\n this.animationData = animData;\n\n if (this.initialSegment) {\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\n this.firstFrame = Math.round(this.initialSegment[0]);\n } else {\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\n this.firstFrame = Math.round(this.animationData.ip);\n }\n\n this.renderer.configAnimation(animData);\n\n if (!animData.assets) {\n animData.assets = [];\n }\n\n this.assets = this.animationData.assets;\n this.frameRate = this.animationData.fr;\n this.frameMult = this.animationData.fr / 1000;\n this.renderer.searchExtraCompositions(animData.assets);\n this.markers = markerParser(animData.markers || []);\n this.trigger('config_ready');\n this.preloadImages();\n this.loadSegments();\n this.updaFrameModifier();\n this.waitForFontsLoaded();\n\n if (this.isPaused) {\n this.audioController.pause();\n }\n } catch (error) {\n this.triggerConfigError(error);\n }\n };\n\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return;\n }\n\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded();\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\n }\n };\n\n AnimationItem.prototype.checkLoaded = function () {\n if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\n this.isLoaded = true;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.renderer.initItems();\n setTimeout(function () {\n this.trigger('DOMLoaded');\n }.bind(this), 0);\n this.gotoFrame();\n\n if (this.autoplay) {\n this.play();\n }\n }\n };\n\n AnimationItem.prototype.resize = function (width, height) {\n // Adding this validation for backwards compatibility in case an event object was being passed down\n var _width = typeof width === 'number' ? width : undefined;\n\n var _height = typeof height === 'number' ? height : undefined;\n\n this.renderer.updateContainerSize(_width, _height);\n };\n\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag;\n };\n\n AnimationItem.prototype.gotoFrame = function () {\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\n\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n this.currentFrame = this.timeCompleted;\n }\n\n this.trigger('enterFrame');\n this.renderFrame();\n this.trigger('drawnFrame');\n };\n\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return;\n }\n\n try {\n if (this.expressionsPlugin) {\n this.expressionsPlugin.resetFrame();\n }\n\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n } catch (error) {\n this.triggerRenderFrameError(error);\n }\n };\n\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.isPaused = false;\n this.trigger('_play');\n this.audioController.resume();\n\n if (this._idle) {\n this._idle = false;\n this.trigger('_active');\n }\n }\n };\n\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === false) {\n this.isPaused = true;\n this.trigger('_pause');\n this._idle = true;\n this.trigger('_idle');\n this.audioController.pause();\n }\n };\n\n AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n };\n\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.pause();\n this.playCount = 0;\n this._completedLoop = false;\n this.setCurrentRawFrameValue(0);\n };\n\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker;\n\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i];\n\n if (marker.payload && marker.payload.name === markerName) {\n return marker;\n }\n }\n\n return null;\n };\n\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n this.goToAndStop(marker.time, true);\n }\n } else if (isFrame) {\n this.setCurrentRawFrameValue(value);\n } else {\n this.setCurrentRawFrameValue(value * this.frameModifier);\n }\n\n this.pause();\n };\n\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n if (!marker.duration) {\n this.goToAndStop(marker.time, true);\n } else {\n this.playSegments([marker.time, marker.time + marker.duration], true);\n }\n }\n } else {\n this.goToAndStop(numValue, isFrame, name);\n }\n\n this.play();\n };\n\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return;\n }\n\n var nextValue = this.currentRawFrame + value * this.frameModifier;\n var _isComplete = false; // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\n\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n if (!this.loop || this.playCount === this.loop) {\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n _isComplete = true;\n nextValue = this.totalFrames - 1;\n }\n } else if (nextValue >= this.totalFrames) {\n this.playCount += 1;\n\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\n this._completedLoop = true;\n this.trigger('loopComplete');\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n } else if (nextValue < 0) {\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n // eslint-disable-line no-plusplus\n this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\n\n if (!this._completedLoop) {\n this._completedLoop = true;\n } else {\n this.trigger('loopComplete');\n }\n } else {\n _isComplete = true;\n nextValue = 0;\n }\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n\n if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue);\n this.pause();\n this.trigger('complete');\n }\n };\n\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0;\n\n if (arr[1] < arr[0]) {\n if (this.frameModifier > 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(-1);\n }\n }\n\n this.totalFrames = arr[0] - arr[1];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[1];\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\n } else if (arr[1] > arr[0]) {\n if (this.frameModifier < 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(1);\n }\n }\n\n this.totalFrames = arr[1] - arr[0];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[0];\n this.setCurrentRawFrameValue(0.001 + offset);\n }\n\n this.trigger('segmentStart');\n };\n\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1;\n\n if (this.isPaused) {\n if (this.currentRawFrame + this.firstFrame < init) {\n pendingFrame = init;\n } else if (this.currentRawFrame + this.firstFrame > end) {\n pendingFrame = end - init;\n }\n }\n\n this.firstFrame = init;\n this.totalFrames = end - init;\n this.timeCompleted = this.totalFrames;\n\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true);\n }\n };\n\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0;\n }\n\n if (_typeof$4(arr[0]) === 'object') {\n var i;\n var len = arr.length;\n\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i]);\n }\n } else {\n this.segments.push(arr);\n }\n\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0);\n }\n\n if (this.isPaused) {\n this.play();\n }\n };\n\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0;\n this.segments.push([this.animationData.ip, this.animationData.op]);\n\n if (forceFlag) {\n this.checkSegments(0);\n }\n };\n\n AnimationItem.prototype.checkSegments = function (offset) {\n if (this.segments.length) {\n this.adjustSegment(this.segments.shift(), offset);\n return true;\n }\n\n return false;\n };\n\n AnimationItem.prototype.destroy = function (name) {\n if (name && this.name !== name || !this.renderer) {\n return;\n }\n\n this.renderer.destroy();\n this.imagePreloader.destroy();\n this.trigger('destroy');\n this._cbs = null;\n this.onEnterFrame = null;\n this.onLoopComplete = null;\n this.onComplete = null;\n this.onSegmentStart = null;\n this.onDestroy = null;\n this.renderer = null;\n this.expressionsPlugin = null;\n this.imagePreloader = null;\n this.projectInterface = null;\n };\n\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value;\n this.gotoFrame();\n };\n\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setLoop = function (isLooping) {\n this.loop = isLooping;\n };\n\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.setVolume(val);\n };\n\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume();\n };\n\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.mute();\n };\n\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.unmute();\n };\n\n AnimationItem.prototype.updaFrameModifier = function () {\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\n this.audioController.setRate(this.playSpeed * this.playDirection);\n };\n\n AnimationItem.prototype.getPath = function () {\n return this.path;\n };\n\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (this.assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = this.assetsPath + imagePath;\n } else {\n path = this.path;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n };\n\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0;\n var len = this.assets.length;\n\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n AnimationItem.prototype.hide = function () {\n this.renderer.hide();\n };\n\n AnimationItem.prototype.show = function () {\n this.renderer.show();\n };\n\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n };\n\n AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\n try {\n var element = this.renderer.getElementByPath(path);\n element.updateDocumentData(documentData, index);\n } catch (error) {// TODO: decide how to handle catch case\n }\n };\n\n AnimationItem.prototype.trigger = function (name) {\n if (this._cbs && this._cbs[name]) {\n switch (name) {\n case 'enterFrame':\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\n break;\n\n case 'drawnFrame':\n this.drawnFrameEvent.currentTime = this.currentFrame;\n this.drawnFrameEvent.totalTime = this.totalFrames;\n this.drawnFrameEvent.direction = this.frameModifier;\n this.triggerEvent(name, this.drawnFrameEvent);\n break;\n\n case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n break;\n\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n break;\n\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n break;\n\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this));\n break;\n\n default:\n this.triggerEvent(name);\n }\n }\n\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n }\n\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n }\n\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n }\n\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n }\n\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\n }\n };\n\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n var animationManager = function () {\n var moduleOb = {};\n var registeredAnimations = [];\n var initTime = 0;\n var len = 0;\n var playingAnimationsNum = 0;\n var _stopped = true;\n var _isFrozen = false;\n\n function removeElement(ev) {\n var i = 0;\n var animItem = ev.target;\n\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1);\n i -= 1;\n len -= 1;\n\n if (!animItem.isPaused) {\n subtractPlayingCount();\n }\n }\n\n i += 1;\n }\n }\n\n function registerAnimation(element, animationData) {\n if (!element) {\n return null;\n }\n\n var i = 0;\n\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation;\n }\n\n i += 1;\n }\n\n var animItem = new AnimationItem();\n setupAnimation(animItem, element);\n animItem.setData(element, animationData);\n return animItem;\n }\n\n function getRegisteredAnimations() {\n var i;\n var lenAnims = registeredAnimations.length;\n var animations = [];\n\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation);\n }\n\n return animations;\n }\n\n function addPlayingCount() {\n playingAnimationsNum += 1;\n activate();\n }\n\n function subtractPlayingCount() {\n playingAnimationsNum -= 1;\n }\n\n function setupAnimation(animItem, element) {\n animItem.addEventListener('destroy', removeElement);\n animItem.addEventListener('_active', addPlayingCount);\n animItem.addEventListener('_idle', subtractPlayingCount);\n registeredAnimations.push({\n elem: element,\n animation: animItem\n });\n len += 1;\n }\n\n function loadAnimation(params) {\n var animItem = new AnimationItem();\n setupAnimation(animItem, null);\n animItem.setParams(params);\n return animItem;\n }\n\n function setSpeed(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation);\n }\n }\n\n function setDirection(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation);\n }\n }\n\n function play(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation);\n }\n }\n\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime;\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime);\n }\n\n initTime = nowTime;\n\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume);\n } else {\n _stopped = true;\n }\n }\n\n function first(nowTime) {\n initTime = nowTime;\n window.requestAnimationFrame(resume);\n }\n\n function pause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation);\n }\n }\n\n function goToAndStop(value, isFrame, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n }\n }\n\n function stop(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation);\n }\n }\n\n function togglePause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation);\n }\n }\n\n function destroy(animation) {\n var i;\n\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation);\n }\n }\n\n function searchAnimations(animationData, standalone, renderer) {\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\n var i;\n var lenAnims = animElements.length;\n\n for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer);\n }\n\n registerAnimation(animElements[i], animationData);\n }\n\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg';\n }\n\n var body = document.getElementsByTagName('body')[0];\n body.innerText = '';\n var div = createTag('div');\n div.style.width = '100%';\n div.style.height = '100%';\n div.setAttribute('data-bm-type', renderer);\n body.appendChild(div);\n registerAnimation(div, animationData);\n }\n }\n\n function resize() {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize();\n }\n }\n\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first);\n _stopped = false;\n }\n }\n }\n\n function freeze() {\n _isFrozen = true;\n }\n\n function unfreeze() {\n _isFrozen = false;\n activate();\n }\n\n function setVolume(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation);\n }\n }\n\n function mute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation);\n }\n }\n\n function unmute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation);\n }\n }\n\n moduleOb.registerAnimation = registerAnimation;\n moduleOb.loadAnimation = loadAnimation;\n moduleOb.setSpeed = setSpeed;\n moduleOb.setDirection = setDirection;\n moduleOb.play = play;\n moduleOb.pause = pause;\n moduleOb.stop = stop;\n moduleOb.togglePause = togglePause;\n moduleOb.searchAnimations = searchAnimations;\n moduleOb.resize = resize; // moduleOb.start = start;\n\n moduleOb.goToAndStop = goToAndStop;\n moduleOb.destroy = destroy;\n moduleOb.freeze = freeze;\n moduleOb.unfreeze = unfreeze;\n moduleOb.setVolume = setVolume;\n moduleOb.mute = mute;\n moduleOb.unmute = unmute;\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\n return moduleOb;\n }();\n\n /* eslint-disable */\n var BezierFactory = function () {\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\n var ob = {};\n ob.getBezierEasing = getBezierEasing;\n var beziers = {};\n\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n\n if (beziers[str]) {\n return beziers[str];\n }\n\n var bezEasing = new BezierEasing([a, b, c, d]);\n beziers[str] = bezEasing;\n return bezEasing;\n } // These values are established by empiricism with tests (tradeoff: performance VS precision)\n\n\n var NEWTON_ITERATIONS = 4;\n var NEWTON_MIN_SLOPE = 0.001;\n var SUBDIVISION_PRECISION = 0.0000001;\n var SUBDIVISION_MAX_ITERATIONS = 10;\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n var float32ArraySupported = typeof Float32Array === 'function';\n\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n\n function C(aA1) {\n return 3.0 * aA1;\n } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n\n\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n\n\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) return aGuessT;\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n\n return aGuessT;\n }\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\n\n\n function BezierEasing(points) {\n this._p = points;\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n this._precomputed = false;\n this.get = this.get.bind(this);\n }\n\n BezierEasing.prototype = {\n get: function get(x) {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n if (!this._precomputed) this._precompute();\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n\n if (x === 0) return 0;\n if (x === 1) return 1;\n return calcBezier(this._getTForX(x), mY1, mY2);\n },\n // Private part\n _precompute: function _precompute() {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n this._precomputed = true;\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n this._calcSampleValues();\n }\n },\n _calcSampleValues: function _calcSampleValues() {\n var mX1 = this._p[0],\n mX2 = this._p[2];\n\n for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n },\n\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\n _getTForX: function _getTForX(aX) {\n var mX1 = this._p[0],\n mX2 = this._p[2],\n mSampleValues = this._mSampleValues;\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample; // Interpolate to provide an initial guess for t\n\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n\n if (initialSlope === 0.0) {\n return guessForT;\n }\n\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n };\n return ob;\n }();\n\n var pooling = function () {\n function _double(arr) {\n return arr.concat(createSizedArray(arr.length));\n }\n\n return {\n \"double\": _double\n };\n }();\n\n var poolFactory = function () {\n return function (initialLength, _create, _release) {\n var _length = 0;\n var _maxLength = initialLength;\n var pool = createSizedArray(_maxLength);\n var ob = {\n newElement: newElement,\n release: release\n };\n\n function newElement() {\n var element;\n\n if (_length) {\n _length -= 1;\n element = pool[_length];\n } else {\n element = _create();\n }\n\n return element;\n }\n\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n if (_release) {\n _release(element);\n }\n\n pool[_length] = element;\n _length += 1;\n }\n\n return ob;\n };\n }();\n\n var bezierLengthPool = function () {\n function create() {\n return {\n addedLength: 0,\n percents: createTypedArray('float32', getDefaultCurveSegments()),\n lengths: createTypedArray('float32', getDefaultCurveSegments())\n };\n }\n\n return poolFactory(8, create);\n }();\n\n var segmentsLengthPool = function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0\n };\n }\n\n function release(element) {\n var i;\n var len = element.lengths.length;\n\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i]);\n }\n\n element.lengths.length = 0;\n }\n\n return poolFactory(8, create, release);\n }();\n\n function bezFunction() {\n var math = Math;\n\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\n return det1 > -0.001 && det1 < 0.001;\n }\n\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n if (z1 === 0 && z2 === 0 && z3 === 0) {\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\n }\n\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\n var diffDist;\n\n if (dist1 > dist2) {\n if (dist1 > dist3) {\n diffDist = dist1 - dist2 - dist3;\n } else {\n diffDist = dist3 - dist2 - dist1;\n }\n } else if (dist3 > dist2) {\n diffDist = dist3 - dist2 - dist1;\n } else {\n diffDist = dist2 - dist1 - dist3;\n }\n\n return diffDist > -0.0001 && diffDist < 0.0001;\n }\n\n var getBezierLength = function () {\n return function (pt1, pt2, pt3, pt4) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point = [];\n var lastPoint = [];\n var lengthData = bezierLengthPool.newElement();\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n\n lastPoint[i] = point[i];\n }\n\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n }\n\n lengthData.percents[k] = perc;\n lengthData.lengths[k] = addedLength;\n }\n\n lengthData.addedLength = addedLength;\n return lengthData;\n };\n }();\n\n function getSegmentsLength(shapeData) {\n var segmentsLength = segmentsLengthPool.newElement();\n var closed = shapeData.c;\n var pathV = shapeData.v;\n var pathO = shapeData.o;\n var pathI = shapeData.i;\n var i;\n var len = shapeData._length;\n var lengths = segmentsLength.lengths;\n var totalLength = 0;\n\n for (i = 0; i < len - 1; i += 1) {\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\n totalLength += lengths[i].addedLength;\n }\n\n if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n totalLength += lengths[i].addedLength;\n }\n\n segmentsLength.totalLength = totalLength;\n return segmentsLength;\n }\n\n function BezierData(length) {\n this.segmentLength = 0;\n this.points = new Array(length);\n }\n\n function PointData(partial, point) {\n this.partialLength = partial;\n this.point = point;\n }\n\n var buildBezierData = function () {\n var storedData = {};\n return function (pt1, pt2, pt3, pt4) {\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\n\n if (!storedData[bezierName]) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point;\n var lastPoint = null;\n\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\n curveSegments = 2;\n }\n\n var bezierData = new BezierData(curveSegments);\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len);\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n }\n\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n bezierData.points[k] = new PointData(ptDistance, point);\n lastPoint = point;\n }\n\n bezierData.segmentLength = addedLength;\n storedData[bezierName] = bezierData;\n }\n\n return storedData[bezierName];\n };\n }();\n\n function getDistancePerc(perc, bezierData) {\n var percents = bezierData.percents;\n var lengths = bezierData.lengths;\n var len = percents.length;\n var initPos = bmFloor((len - 1) * perc);\n var lengthPos = perc * bezierData.addedLength;\n var lPerc = 0;\n\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos];\n }\n\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\n var flag = true;\n\n while (flag) {\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\n flag = false;\n } else {\n initPos += dir;\n }\n\n if (initPos < 0 || initPos >= len - 1) {\n // FIX for TypedArrays that don't store floating point values with enough accuracy\n if (initPos === len - 1) {\n return percents[initPos];\n }\n\n flag = false;\n }\n }\n\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n }\n\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n var t1 = getDistancePerc(percent, bezierData);\n var u1 = 1 - t1;\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\n return [ptX, ptY];\n }\n\n var bezierSegmentPoints = createTypedArray('float32', 8);\n\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n if (startPerc < 0) {\n startPerc = 0;\n } else if (startPerc > 1) {\n startPerc = 1;\n }\n\n var t0 = getDistancePerc(startPerc, bezierData);\n endPerc = endPerc > 1 ? 1 : endPerc;\n var t1 = getDistancePerc(endPerc, bezierData);\n var i;\n var len = pt1.length;\n var u0 = 1 - t0;\n var u1 = 1 - t1;\n var u0u0u0 = u0 * u0 * u0;\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0t0 = t0 * t0 * t0; //\n\n var u0u0u1 = u0 * u0 * u1;\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0t1 = t0 * t0 * t1; //\n\n var u0u1u1 = u0 * u1 * u1;\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1t1 = t0 * t1 * t1; //\n\n var u1u1u1 = u1 * u1 * u1;\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1t1 = t1 * t1 * t1;\n\n for (i = 0; i < len; i += 1) {\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n }\n\n return bezierSegmentPoints;\n }\n\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D\n };\n }\n\n var bez = bezFunction();\n\n var initFrame = initialDefaultFrame;\n var mathAbs = Math.abs;\n\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime;\n var newValue;\n\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length);\n }\n\n var iterationIndex = caching.lastIndex;\n var i = iterationIndex;\n var len = this.keyframes.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = this.keyframes[i];\n nextKeyData = this.keyframes[i + 1];\n\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData;\n }\n\n iterationIndex = 0;\n break;\n }\n\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i;\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n iterationIndex = 0;\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n var k;\n var kLen;\n var perc;\n var jLen;\n var j;\n var fnc;\n var nextKeyTime = nextKeyData.t - offsetTime;\n var keyTime = keyData.t - offsetTime;\n var endValue;\n\n if (keyData.to) {\n if (!keyframeMetadata.bezierData) {\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n }\n\n var bezierData = keyframeMetadata.bezierData;\n\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n kLen = bezierData.points[ind].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k];\n } // caching._lastKeyframeIndex = -1;\n\n } else {\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n var distanceInLine = bezierData.segmentLength * perc;\n var segmentPerc;\n var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\n j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\n flag = true;\n jLen = bezierData.points.length;\n\n while (flag) {\n addedLength += bezierData.points[j].partialLength;\n\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k];\n }\n\n break;\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\n }\n\n break;\n }\n\n if (j < jLen - 1) {\n j += 1;\n } else {\n flag = false;\n }\n }\n\n caching._lastPoint = j;\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\n caching._lastKeyframeIndex = i;\n }\n } else {\n var outX;\n var outY;\n var inX;\n var inY;\n var keyValue;\n len = keyData.s.length;\n endValue = nextKeyData.s || keyData.e;\n\n if (this.sh && keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n newValue[0] = endValue[0];\n newValue[1] = endValue[1];\n newValue[2] = endValue[2];\n } else if (frameNum <= keyTime) {\n newValue[0] = keyData.s[0];\n newValue[1] = keyData.s[1];\n newValue[2] = keyData.s[2];\n } else {\n var quatStart = createQuaternion(keyData.s);\n var quatEnd = createQuaternion(endValue);\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\n }\n } else {\n for (i = 0; i < len; i += 1) {\n if (keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n perc = 1;\n } else if (frameNum < keyTime) {\n perc = 0;\n } else {\n if (keyData.o.x.constructor === Array) {\n if (!keyframeMetadata.__fnct) {\n keyframeMetadata.__fnct = [];\n }\n\n if (!keyframeMetadata.__fnct[i]) {\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyframeMetadata.__fnct[i] = fnc;\n } else {\n fnc = keyframeMetadata.__fnct[i];\n }\n } else if (!keyframeMetadata.__fnct) {\n outX = keyData.o.x;\n outY = keyData.o.y;\n inX = keyData.i.x;\n inY = keyData.i.y;\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyData.keyframeMetadata = fnc;\n } else {\n fnc = keyframeMetadata.__fnct;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n }\n }\n\n endValue = nextKeyData.s || keyData.e;\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\n\n if (this.propType === 'multidimensional') {\n newValue[i] = keyValue;\n } else {\n newValue = keyValue;\n }\n }\n }\n }\n\n caching.lastIndex = iterationIndex;\n return newValue;\n } // based on @Toji's https://github.com/toji/gl-matrix/\n\n\n function slerp(a, b, t) {\n var out = [];\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n var bx = b[0];\n var by = b[1];\n var bz = b[2];\n var bw = b[3];\n var omega;\n var cosom;\n var sinom;\n var scale0;\n var scale1;\n cosom = ax * bx + ay * by + az * bz + aw * bw;\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n }\n\n if (1.0 - cosom > 0.000001) {\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n scale0 = 1.0 - t;\n scale1 = t;\n }\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n }\n\n function quaternionToEuler(out, quat) {\n var qx = quat[0];\n var qy = quat[1];\n var qz = quat[2];\n var qw = quat[3];\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\n out[0] = heading / degToRads;\n out[1] = attitude / degToRads;\n out[2] = bank / degToRads;\n }\n\n function createQuaternion(values) {\n var heading = values[0] * degToRads;\n var attitude = values[1] * degToRads;\n var bank = values[2] * degToRads;\n var c1 = Math.cos(heading / 2);\n var c2 = Math.cos(attitude / 2);\n var c3 = Math.cos(bank / 2);\n var s1 = Math.sin(heading / 2);\n var s2 = Math.sin(attitude / 2);\n var s3 = Math.sin(bank / 2);\n var w = c1 * c2 * c3 - s1 * s2 * s3;\n var x = s1 * s2 * c3 + c1 * c2 * s3;\n var y = s1 * c2 * c3 + c1 * s2 * s3;\n var z = c1 * s2 * c3 - s1 * c2 * s3;\n return [x, y, z, w];\n }\n\n function getValueAtCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n\n if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\n if (this._caching.lastFrame >= frameNum) {\n this._caching._lastKeyframeIndex = -1;\n this._caching.lastIndex = 0;\n }\n\n var renderResult = this.interpolateValue(frameNum, this._caching);\n this.pv = renderResult;\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function setVValue(val) {\n var multipliedValue;\n\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult;\n\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\n this.v = multipliedValue;\n this._mdf = true;\n }\n } else {\n var i = 0;\n var len = this.v.length;\n\n while (i < len) {\n multipliedValue = val[i] * this.mult;\n\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue;\n this._mdf = true;\n }\n\n i += 1;\n }\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = this._isFirstFrame;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = this.kf ? this.pv : this.data.k;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this._isFirstFrame = false;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n function ValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.mult = mult || 1;\n this.data = data;\n this.v = mult ? data.k * mult : data.k;\n this.pv = data.k;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.vel = 0;\n this.effectsSequence = [];\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function MultiDimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n this.mult = mult || 1;\n this.data = data;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.frameId = -1;\n var i;\n var len = data.k.length;\n this.v = createTypedArray('float32', len);\n this.pv = createTypedArray('float32', len);\n this.vel = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n this.v[i] = data.k[i] * this.mult;\n this.pv[i] = data.k[i];\n }\n\n this._isFirstFrame = true;\n this.effectsSequence = [];\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function KeyframedValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.frameId = -1;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: 0,\n _lastKeyframeIndex: -1\n };\n this.k = true;\n this.kf = true;\n this.data = data;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.v = initFrame;\n this.pv = initFrame;\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.addEffect = addEffect;\n }\n\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n var i;\n var len = data.k.length;\n var s;\n var e;\n var to;\n var ti;\n\n for (i = 0; i < len - 1; i += 1) {\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n s = data.k[i].s;\n e = data.k[i + 1].s;\n to = data.k[i].to;\n ti = data.k[i].ti;\n\n if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n }\n }\n }\n\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.data = data;\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.k = true;\n this.kf = true;\n this._isFirstFrame = true;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.frameId = -1;\n var arrLen = data.k[0].s.length;\n this.v = createTypedArray('float32', arrLen);\n this.pv = createTypedArray('float32', arrLen);\n\n for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame;\n this.pv[i] = initFrame;\n }\n\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: createTypedArray('float32', arrLen)\n };\n this.addEffect = addEffect;\n }\n\n var PropertyFactory = function () {\n function getProp(elem, data, type, mult, container) {\n if (data.sid) {\n data = elem.globalData.slotManager.getProp(data);\n }\n\n var p;\n\n if (!data.k.length) {\n p = new ValueProperty(elem, data, mult, container);\n } else if (typeof data.k[0] === 'number') {\n p = new MultiDimensionalProperty(elem, data, mult, container);\n } else {\n switch (type) {\n case 0:\n p = new KeyframedValueProperty(elem, data, mult, container);\n break;\n\n case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n break;\n\n default:\n break;\n }\n }\n\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p);\n }\n\n return p;\n }\n\n var ob = {\n getProp: getProp\n };\n return ob;\n }();\n\n function DynamicPropertyContainer() {}\n\n DynamicPropertyContainer.prototype = {\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n this.container.addDynamicProperty(this);\n this._isAnimated = true;\n }\n },\n iterateDynamicProperties: function iterateDynamicProperties() {\n this._mdf = false;\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this._mdf = true;\n }\n }\n },\n initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\n this.container = container;\n this.dynamicProperties = [];\n this._mdf = false;\n this._isAnimated = false;\n }\n };\n\n var pointPool = function () {\n function create() {\n return createTypedArray('float32', 2);\n }\n\n return poolFactory(8, create);\n }();\n\n function ShapePath() {\n this.c = false;\n this._length = 0;\n this._maxLength = 8;\n this.v = createSizedArray(this._maxLength);\n this.o = createSizedArray(this._maxLength);\n this.i = createSizedArray(this._maxLength);\n }\n\n ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed;\n this.setLength(len);\n var i = 0;\n\n while (i < len) {\n this.v[i] = pointPool.newElement();\n this.o[i] = pointPool.newElement();\n this.i[i] = pointPool.newElement();\n i += 1;\n }\n };\n\n ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength();\n }\n\n this._length = len;\n };\n\n ShapePath.prototype.doubleArrayLength = function () {\n this.v = this.v.concat(createSizedArray(this._maxLength));\n this.i = this.i.concat(createSizedArray(this._maxLength));\n this.o = this.o.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n };\n\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr;\n this._length = Math.max(this._length, pos + 1);\n\n if (this._length >= this._maxLength) {\n this.doubleArrayLength();\n }\n\n switch (type) {\n case 'v':\n arr = this.v;\n break;\n\n case 'i':\n arr = this.i;\n break;\n\n case 'o':\n arr = this.o;\n break;\n\n default:\n arr = [];\n break;\n }\n\n if (!arr[pos] || arr[pos] && !replace) {\n arr[pos] = pointPool.newElement();\n }\n\n arr[pos][0] = x;\n arr[pos][1] = y;\n };\n\n ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n this.setXYAt(vX, vY, 'v', pos, replace);\n this.setXYAt(oX, oY, 'o', pos, replace);\n this.setXYAt(iX, iY, 'i', pos, replace);\n };\n\n ShapePath.prototype.reverse = function () {\n var newPath = new ShapePath();\n newPath.setPathData(this.c, this._length);\n var vertices = this.v;\n var outPoints = this.o;\n var inPoints = this.i;\n var init = 0;\n\n if (this.c) {\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\n init = 1;\n }\n\n var cnt = this._length - 1;\n var len = this._length;\n var i;\n\n for (i = init; i < len; i += 1) {\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\n cnt -= 1;\n }\n\n return newPath;\n };\n\n ShapePath.prototype.length = function () {\n return this._length;\n };\n\n var shapePool = function () {\n function create() {\n return new ShapePath();\n }\n\n function release(shapePath) {\n var len = shapePath._length;\n var i;\n\n for (i = 0; i < len; i += 1) {\n pointPool.release(shapePath.v[i]);\n pointPool.release(shapePath.i[i]);\n pointPool.release(shapePath.o[i]);\n shapePath.v[i] = null;\n shapePath.i[i] = null;\n shapePath.o[i] = null;\n }\n\n shapePath._length = 0;\n shapePath.c = false;\n }\n\n function clone(shape) {\n var cloned = factory.newElement();\n var i;\n var len = shape._length === undefined ? shape.v.length : shape._length;\n cloned.setLength(len);\n cloned.c = shape.c;\n\n for (i = 0; i < len; i += 1) {\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\n }\n\n return cloned;\n }\n\n var factory = poolFactory(4, create, release);\n factory.clone = clone;\n return factory;\n }();\n\n function ShapeCollection() {\n this._length = 0;\n this._maxLength = 4;\n this.shapes = createSizedArray(this._maxLength);\n }\n\n ShapeCollection.prototype.addShape = function (shapeData) {\n if (this._length === this._maxLength) {\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n }\n\n this.shapes[this._length] = shapeData;\n this._length += 1;\n };\n\n ShapeCollection.prototype.releaseShapes = function () {\n var i;\n\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i]);\n }\n\n this._length = 0;\n };\n\n var shapeCollectionPool = function () {\n var ob = {\n newShapeCollection: newShapeCollection,\n release: release\n };\n var _length = 0;\n var _maxLength = 4;\n var pool = createSizedArray(_maxLength);\n\n function newShapeCollection() {\n var shapeCollection;\n\n if (_length) {\n _length -= 1;\n shapeCollection = pool[_length];\n } else {\n shapeCollection = new ShapeCollection();\n }\n\n return shapeCollection;\n }\n\n function release(shapeCollection) {\n var i;\n var len = shapeCollection._length;\n\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i]);\n }\n\n shapeCollection._length = 0;\n\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n pool[_length] = shapeCollection;\n _length += 1;\n }\n\n return ob;\n }();\n\n var ShapePropertyFactory = function () {\n var initFrame = -999999;\n\n function interpolateShape(frameNum, previousValue, caching) {\n var iterationIndex = caching.lastIndex;\n var keyPropS;\n var keyPropE;\n var isHold;\n var j;\n var k;\n var jLen;\n var kLen;\n var perc;\n var vertexValue;\n var kf = this.keyframes;\n\n if (frameNum < kf[0].t - this.offsetTime) {\n keyPropS = kf[0].s[0];\n isHold = true;\n iterationIndex = 0;\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\n /* if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\n\n isHold = true;\n } else {\n var i = iterationIndex;\n var len = kf.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = kf[i];\n nextKeyData = kf[i + 1];\n\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n isHold = keyData.h === 1;\n iterationIndex = i;\n\n if (!isHold) {\n if (frameNum >= nextKeyData.t - this.offsetTime) {\n perc = 1;\n } else if (frameNum < keyData.t - this.offsetTime) {\n perc = 0;\n } else {\n var fnc;\n\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n }\n\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n }\n\n keyPropS = keyData.s[0];\n }\n\n jLen = previousValue._length;\n kLen = keyPropS.i[0].length;\n caching.lastIndex = iterationIndex;\n\n for (j = 0; j < jLen; j += 1) {\n for (k = 0; k < kLen; k += 1) {\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\n previousValue.i[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\n previousValue.o[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\n previousValue.v[j][k] = vertexValue;\n }\n }\n }\n\n function interpolateShapeCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n var lastFrame = this._caching.lastFrame;\n\n if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\n /// /\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\n this.interpolateShape(frameNum, this.pv, this._caching); /// /\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function resetShape() {\n this.paths = this.localShapeCollection;\n }\n\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false;\n }\n\n var i;\n var len = shape1._length;\n\n for (i = 0; i < len; i += 1) {\n if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\n return false;\n }\n }\n\n return true;\n }\n\n function setVValue(newPath) {\n if (!shapesEqual(this.v, newPath)) {\n this.v = shapePool.clone(newPath);\n this.localShapeCollection.releaseShapes();\n this.localShapeCollection.addShape(this.v);\n this._mdf = true;\n this.paths = this.localShapeCollection;\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (!this.effectsSequence.length) {\n this._mdf = false;\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var finalValue;\n\n if (this.kf) {\n finalValue = this.pv;\n } else if (this.data.ks) {\n finalValue = this.data.ks.k;\n } else {\n finalValue = this.data.pt.k;\n }\n\n var i;\n var len = this.effectsSequence.length;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function ShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.container = elem;\n this.elem = elem;\n this.data = data;\n this.k = false;\n this.kf = false;\n this._mdf = false;\n var pathData = type === 3 ? data.pt.k : data.ks.k;\n this.v = shapePool.clone(pathData);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.reset = resetShape;\n this.effectsSequence = [];\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n ShapeProperty.prototype.interpolateShape = interpolateShape;\n ShapeProperty.prototype.getValue = processEffectsSequence;\n ShapeProperty.prototype.setVValue = setVValue;\n ShapeProperty.prototype.addEffect = addEffect;\n\n function KeyframedShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.elem = elem;\n this.container = elem;\n this.offsetTime = elem.data.st;\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\n this.keyframesMetadata = [];\n this.k = true;\n this.kf = true;\n var len = this.keyframes[0].s[0].i.length;\n this.v = shapePool.newElement();\n this.v.setPathData(this.keyframes[0].s[0].c, len);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.lastFrame = initFrame;\n this.reset = resetShape;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0\n };\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\n }\n\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n KeyframedShapeProperty.prototype.setVValue = setVValue;\n KeyframedShapeProperty.prototype.addEffect = addEffect;\n\n var EllShapeProperty = function () {\n var cPoint = roundCorner;\n\n function EllShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 4);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.localShapeCollection.addShape(this.v);\n this.d = data.d;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertEllToPath();\n }\n }\n\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertEllToPath();\n }\n },\n convertEllToPath: function convertEllToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var s0 = this.s.v[0] / 2;\n var s1 = this.s.v[1] / 2;\n\n var _cw = this.d !== 3;\n\n var _v = this.v;\n _v.v[0][0] = p0;\n _v.v[0][1] = p1 - s1;\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.v[1][1] = p1;\n _v.v[2][0] = p0;\n _v.v[2][1] = p1 + s1;\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.v[3][1] = p1;\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.i[0][1] = p1 - s1;\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.i[1][1] = p1 - s1 * cPoint;\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.i[2][1] = p1 + s1;\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.i[3][1] = p1 + s1 * cPoint;\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.o[0][1] = p1 - s1;\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.o[1][1] = p1 + s1 * cPoint;\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.o[2][1] = p1 + s1;\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.o[3][1] = p1 - s1 * cPoint;\n }\n };\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\n return EllShapePropertyFactory;\n }();\n\n var StarShapeProperty = function () {\n function StarShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 0);\n this.elem = elem;\n this.comp = elem.comp;\n this.data = data;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n\n if (data.sy === 1) {\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\n this.convertToPath = this.convertStarToPath;\n } else {\n this.convertToPath = this.convertPolygonToPath;\n }\n\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertToPath();\n }\n }\n\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertToPath();\n }\n },\n convertStarToPath: function convertStarToPath() {\n var numPts = Math.floor(this.pt.v) * 2;\n var angle = Math.PI * 2 / numPts;\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\n\n var longFlag = true;\n var longRad = this.or.v;\n var shortRad = this.ir.v;\n var longRound = this.os.v;\n var shortRound = this.is.v;\n var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\n var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\n var i;\n var rad;\n var roundness;\n var perimSegment;\n var currentAng = -Math.PI / 2;\n currentAng += this.r.v;\n var dir = this.data.d === 3 ? -1 : 1;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n rad = longFlag ? longRad : shortRad;\n roundness = longFlag ? longRound : shortRound;\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\n\n longFlag = !longFlag;\n currentAng += angle * dir;\n }\n },\n convertPolygonToPath: function convertPolygonToPath() {\n var numPts = Math.floor(this.pt.v);\n var angle = Math.PI * 2 / numPts;\n var rad = this.or.v;\n var roundness = this.os.v;\n var perimSegment = 2 * Math.PI * rad / (numPts * 4);\n var i;\n var currentAng = -Math.PI * 0.5;\n var dir = this.data.d === 3 ? -1 : 1;\n currentAng += this.r.v;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n currentAng += angle * dir;\n }\n\n this.paths.length = 0;\n this.paths[0] = this.v;\n }\n };\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n return StarShapePropertyFactory;\n }();\n\n var RectShapeProperty = function () {\n function RectShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.c = true;\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertRectToPath();\n }\n }\n\n RectShapePropertyFactory.prototype = {\n convertRectToPath: function convertRectToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var v0 = this.s.v[0] / 2;\n var v1 = this.s.v[1] / 2;\n var round = bmMin(v0, v1, this.r.v);\n var cPoint = round * (1 - roundCorner);\n this.v._length = 0;\n\n if (this.d === 2 || this.d === 1) {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\n }\n } else {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\n }\n }\n },\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertRectToPath();\n }\n },\n reset: resetShape\n };\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n return RectShapePropertyFactory;\n }();\n\n function getShapeProp(elem, data, type) {\n var prop;\n\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks;\n var keys = dataProp.k;\n\n if (keys.length) {\n prop = new KeyframedShapeProperty(elem, data, type);\n } else {\n prop = new ShapeProperty(elem, data, type);\n }\n } else if (type === 5) {\n prop = new RectShapeProperty(elem, data);\n } else if (type === 6) {\n prop = new EllShapeProperty(elem, data);\n } else if (type === 7) {\n prop = new StarShapeProperty(elem, data);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n }\n\n function getConstructorFunction() {\n return ShapeProperty;\n }\n\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty;\n }\n\n var ob = {};\n ob.getShapeProp = getShapeProp;\n ob.getConstructorFunction = getConstructorFunction;\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n return ob;\n }();\n\n /*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\n\n /**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\n */\n\n var Matrix = function () {\n var _cos = Math.cos;\n var _sin = Math.sin;\n var _tan = Math.tan;\n var _rnd = Math.round;\n\n function reset() {\n this.props[0] = 1;\n this.props[1] = 0;\n this.props[2] = 0;\n this.props[3] = 0;\n this.props[4] = 0;\n this.props[5] = 1;\n this.props[6] = 0;\n this.props[7] = 0;\n this.props[8] = 0;\n this.props[9] = 0;\n this.props[10] = 1;\n this.props[11] = 0;\n this.props[12] = 0;\n this.props[13] = 0;\n this.props[14] = 0;\n this.props[15] = 1;\n return this;\n }\n\n function rotate(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function rotateX(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateY(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateZ(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0);\n }\n\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay));\n }\n\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\n }\n\n function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1;\n }\n\n if (sx === 1 && sy === 1 && sz === 1) {\n return this;\n }\n\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n }\n\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n this.props[0] = a;\n this.props[1] = b;\n this.props[2] = c;\n this.props[3] = d;\n this.props[4] = e;\n this.props[5] = f;\n this.props[6] = g;\n this.props[7] = h;\n this.props[8] = i;\n this.props[9] = j;\n this.props[10] = k;\n this.props[11] = l;\n this.props[12] = m;\n this.props[13] = n;\n this.props[14] = o;\n this.props[15] = p;\n return this;\n }\n\n function translate(tx, ty, tz) {\n tz = tz || 0;\n\n if (tx !== 0 || ty !== 0 || tz !== 0) {\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\n }\n\n return this;\n }\n\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n var _p = this.props;\n\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n _p[12] = _p[12] * a2 + _p[15] * m2;\n _p[13] = _p[13] * f2 + _p[15] * n2;\n _p[14] = _p[14] * k2 + _p[15] * o2;\n _p[15] *= p2; // }\n\n this._identityCalculated = false;\n return this;\n }\n\n var a1 = _p[0];\n var b1 = _p[1];\n var c1 = _p[2];\n var d1 = _p[3];\n var e1 = _p[4];\n var f1 = _p[5];\n var g1 = _p[6];\n var h1 = _p[7];\n var i1 = _p[8];\n var j1 = _p[9];\n var k1 = _p[10];\n var l1 = _p[11];\n var m1 = _p[12];\n var n1 = _p[13];\n var o1 = _p[14];\n var p1 = _p[15];\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\n\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\n this._identityCalculated = false;\n return this;\n }\n\n function multiply(matrix) {\n var matrixProps = matrix.props;\n return this.transform(matrixProps[0], matrixProps[1], matrixProps[2], matrixProps[3], matrixProps[4], matrixProps[5], matrixProps[6], matrixProps[7], matrixProps[8], matrixProps[9], matrixProps[10], matrixProps[11], matrixProps[12], matrixProps[13], matrixProps[14], matrixProps[15]);\n }\n\n function isIdentity() {\n if (!this._identityCalculated) {\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\n this._identityCalculated = true;\n }\n\n return this._identity;\n }\n\n function equals(matr) {\n var i = 0;\n\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n }\n\n function clone(matr) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i];\n }\n\n return matr;\n }\n\n function cloneFromProps(props) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i];\n }\n }\n\n function applyToPoint(x, y, z) {\n return {\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n };\n /* return {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\n }\n\n function applyToX(x, y, z) {\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\n }\n\n function applyToY(x, y, z) {\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\n }\n\n function applyToZ(x, y, z) {\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\n }\n\n function getInverseMatrix() {\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\n var a = this.props[5] / determinant;\n var b = -this.props[1] / determinant;\n var c = -this.props[4] / determinant;\n var d = this.props[0] / determinant;\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\n var inverseMatrix = new Matrix();\n inverseMatrix.props[0] = a;\n inverseMatrix.props[1] = b;\n inverseMatrix.props[4] = c;\n inverseMatrix.props[5] = d;\n inverseMatrix.props[12] = e;\n inverseMatrix.props[13] = f;\n return inverseMatrix;\n }\n\n function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix();\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n }\n\n function inversePoints(pts) {\n var i;\n var len = pts.length;\n var retPts = [];\n\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i]);\n }\n\n return retPts;\n }\n\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6);\n\n if (this.isIdentity()) {\n arr[0] = pt1[0];\n arr[1] = pt1[1];\n arr[2] = pt2[0];\n arr[3] = pt2[1];\n arr[4] = pt3[0];\n arr[5] = pt3[1];\n } else {\n var p0 = this.props[0];\n var p1 = this.props[1];\n var p4 = this.props[4];\n var p5 = this.props[5];\n var p12 = this.props[12];\n var p13 = this.props[13];\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\n }\n\n return arr;\n }\n\n function applyToPointArray(x, y, z) {\n var arr;\n\n if (this.isIdentity()) {\n arr = [x, y, z];\n } else {\n arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\n }\n\n return arr;\n }\n\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y;\n }\n\n var _p = this.props;\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\n }\n\n function toCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var i = 0;\n var props = this.props;\n var cssValue = 'matrix3d(';\n var v = 10000;\n\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v;\n cssValue += i === 15 ? ')' : ',';\n i += 1;\n }\n\n return cssValue;\n }\n\n function roundMatrixProperty(val) {\n var v = 10000;\n\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n return _rnd(val * v) / v;\n }\n\n return val;\n }\n\n function to2dCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var props = this.props;\n\n var _a = roundMatrixProperty(props[0]);\n\n var _b = roundMatrixProperty(props[1]);\n\n var _c = roundMatrixProperty(props[4]);\n\n var _d = roundMatrixProperty(props[5]);\n\n var _e = roundMatrixProperty(props[12]);\n\n var _f = roundMatrixProperty(props[13]);\n\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n }\n\n return function () {\n this.reset = reset;\n this.rotate = rotate;\n this.rotateX = rotateX;\n this.rotateY = rotateY;\n this.rotateZ = rotateZ;\n this.skew = skew;\n this.skewFromAxis = skewFromAxis;\n this.shear = shear;\n this.scale = scale;\n this.setTransform = setTransform;\n this.translate = translate;\n this.transform = transform;\n this.multiply = multiply;\n this.applyToPoint = applyToPoint;\n this.applyToX = applyToX;\n this.applyToY = applyToY;\n this.applyToZ = applyToZ;\n this.applyToPointArray = applyToPointArray;\n this.applyToTriplePoints = applyToTriplePoints;\n this.applyToPointStringified = applyToPointStringified;\n this.toCSS = toCSS;\n this.to2dCSS = to2dCSS;\n this.clone = clone;\n this.cloneFromProps = cloneFromProps;\n this.equals = equals;\n this.inversePoints = inversePoints;\n this.inversePoint = inversePoint;\n this.getInverseMatrix = getInverseMatrix;\n this._t = this.transform;\n this.isIdentity = isIdentity;\n this._identity = true;\n this._identityCalculated = false;\n this.props = createTypedArray('float32', 16);\n this.reset();\n };\n }();\n\n function _typeof$3(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\n var lottie = {};\n var standalone = '__[STANDALONE]__';\n var animationData = '__[ANIMATIONDATA]__';\n var renderer = '';\n\n function setLocation(href) {\n setLocationHref(href);\n }\n\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer);\n } else {\n animationManager.searchAnimations();\n }\n }\n\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag);\n }\n\n function setPrefix(prefix) {\n setIdPrefix(prefix);\n }\n\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData);\n }\n\n return animationManager.loadAnimation(params);\n }\n\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200);\n break;\n\n default:\n case 'medium':\n setDefaultCurveSegments(50);\n break;\n\n case 'low':\n setDefaultCurveSegments(10);\n break;\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value);\n }\n\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false);\n } else {\n roundValues(true);\n }\n }\n\n function inBrowser() {\n return typeof navigator !== 'undefined';\n }\n\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin);\n }\n }\n\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory;\n\n case 'shapePropertyFactory':\n return ShapePropertyFactory;\n\n case 'matrix':\n return Matrix;\n\n default:\n return null;\n }\n }\n\n lottie.play = animationManager.play;\n lottie.pause = animationManager.pause;\n lottie.setLocationHref = setLocation;\n lottie.togglePause = animationManager.togglePause;\n lottie.setSpeed = animationManager.setSpeed;\n lottie.setDirection = animationManager.setDirection;\n lottie.stop = animationManager.stop;\n lottie.searchAnimations = searchAnimations;\n lottie.registerAnimation = animationManager.registerAnimation;\n lottie.loadAnimation = loadAnimation;\n lottie.setSubframeRendering = setSubframeRendering;\n lottie.resize = animationManager.resize; // lottie.start = start;\n\n lottie.goToAndStop = animationManager.goToAndStop;\n lottie.destroy = animationManager.destroy;\n lottie.setQuality = setQuality;\n lottie.inBrowser = inBrowser;\n lottie.installPlugin = installPlugin;\n lottie.freeze = animationManager.freeze;\n lottie.unfreeze = animationManager.unfreeze;\n lottie.setVolume = animationManager.setVolume;\n lottie.mute = animationManager.mute;\n lottie.unmute = animationManager.unmute;\n lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\n lottie.useWebWorker = setWebWorker;\n lottie.setIDPrefix = setPrefix;\n lottie.__getFactory = getFactory;\n lottie.version = '5.12.2';\n\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval);\n searchAnimations();\n }\n }\n\n function getQueryVariable(variable) {\n var vars = queryString.split('&');\n\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=');\n\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1]);\n }\n }\n\n return null;\n }\n\n var queryString = '';\n\n if (standalone) {\n var scripts = document.getElementsByTagName('script');\n var index = scripts.length - 1;\n var myScript = scripts[index] || {\n src: ''\n };\n queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\n\n renderer = getQueryVariable('renderer');\n }\n\n var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\n\n try {\n if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n ) {\n window.bodymovin = lottie;\n }\n } catch (err) {//\n }\n\n var ShapeModifiers = function () {\n var ob = {};\n var modifiers = {};\n ob.registerModifier = registerModifier;\n ob.getModifier = getModifier;\n\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory;\n }\n }\n\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data);\n }\n\n return ob;\n }();\n\n function ShapeModifier() {}\n\n ShapeModifier.prototype.initModifierProperties = function () {};\n\n ShapeModifier.prototype.addShapeToModifier = function () {};\n\n ShapeModifier.prototype.addShape = function (data) {\n if (!this.closed) {\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\n data.sh.container.addDynamicProperty(data.sh);\n var shapeData = {\n shape: data.sh,\n data: data,\n localShapeCollection: shapeCollectionPool.newShapeCollection()\n };\n this.shapes.push(shapeData);\n this.addShapeToModifier(shapeData);\n\n if (this._isAnimated) {\n data.setAsAnimated();\n }\n }\n };\n\n ShapeModifier.prototype.init = function (elem, data) {\n this.shapes = [];\n this.elem = elem;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, data);\n this.frameId = initialDefaultFrame;\n this.closed = false;\n this.k = false;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n function TrimModifier() {}\n\n extendPrototype([ShapeModifier], TrimModifier);\n\n TrimModifier.prototype.initModifierProperties = function (elem, data) {\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\n this.sValue = 0;\n this.eValue = 0;\n this.getValue = this.processKeys;\n this.m = data.m;\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\n };\n\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = [];\n };\n\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = [];\n\n if (e <= 1) {\n segments.push({\n s: s,\n e: e\n });\n } else if (s >= 1) {\n segments.push({\n s: s - 1,\n e: e - 1\n });\n } else {\n segments.push({\n s: s,\n e: 1\n });\n segments.push({\n s: 0,\n e: e - 1\n });\n }\n\n var shapeSegments = [];\n var i;\n var len = segments.length;\n var segmentOb;\n\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i];\n\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n var shapeS;\n var shapeE;\n\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0;\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n }\n\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1;\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n }\n\n shapeSegments.push([shapeS, shapeE]);\n }\n }\n\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0]);\n }\n\n return shapeSegments;\n };\n\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i;\n var len = pathsData.length;\n\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i]);\n }\n\n pathsData.length = 0;\n return pathsData;\n };\n\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s;\n var e;\n\n if (this._mdf || _isFirstFrame) {\n var o = this.o.v % 360 / 360;\n\n if (o < 0) {\n o += 1;\n }\n\n if (this.s.v > 1) {\n s = 1 + o;\n } else if (this.s.v < 0) {\n s = 0 + o;\n } else {\n s = this.s.v + o;\n }\n\n if (this.e.v > 1) {\n e = 1 + o;\n } else if (this.e.v < 0) {\n e = 0 + o;\n } else {\n e = this.e.v + o;\n }\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n s = Math.round(s * 10000) * 0.0001;\n e = Math.round(e * 10000) * 0.0001;\n this.sValue = s;\n this.eValue = e;\n } else {\n s = this.sValue;\n e = this.eValue;\n }\n\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var pathsData;\n var pathData;\n var totalShapeLength;\n var totalModifierLength = 0;\n\n if (e === s) {\n for (i = 0; i < len; i += 1) {\n this.shapes[i].localShapeCollection.releaseShapes();\n this.shapes[i].shape._mdf = true;\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\n\n if (this._mdf) {\n this.shapes[i].pathsData.length = 0;\n }\n }\n } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\n var segments = [];\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n shapeData.shape.paths = shapeData.localShapeCollection;\n } else {\n shapePaths = shapeData.shape.paths;\n jLen = shapePaths._length;\n totalShapeLength = 0;\n\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength;\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData);\n\n for (j = 0; j < jLen; j += 1) {\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\n pathsData.push(pathData);\n totalShapeLength += pathData.totalLength;\n }\n\n shapeData.totalShapeLength = totalShapeLength;\n shapeData.pathsData = pathsData;\n }\n\n totalModifierLength += totalShapeLength;\n shapeData.shape._mdf = true;\n }\n }\n\n var shapeS = s;\n var shapeE = e;\n var addedLength = 0;\n var edges;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i];\n\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection;\n localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n\n if (this.m === 2 && len > 1) {\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\n addedLength += shapeData.totalShapeLength;\n } else {\n edges = [[shapeS, shapeE]];\n }\n\n jLen = edges.length;\n\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0];\n shapeE = edges[j][1];\n segments.length = 0;\n\n if (shapeE <= 1) {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength * shapeE\n });\n } else if (shapeS >= 1) {\n segments.push({\n s: shapeData.totalShapeLength * (shapeS - 1),\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n } else {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength\n });\n segments.push({\n s: 0,\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n }\n\n var newShapesData = this.addShapes(shapeData, segments[0]);\n\n if (segments[0].s !== segments[0].e) {\n if (segments.length > 1) {\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\n\n if (lastShapeInCollection.c) {\n var lastShape = newShapesData.pop();\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\n } else {\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1]);\n }\n }\n\n this.addPaths(newShapesData, localShapeCollection);\n }\n }\n\n shapeData.shape.paths = localShapeCollection;\n }\n }\n } else if (this._mdf) {\n for (i = 0; i < len; i += 1) {\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n // Don't remove this even if it's losing cached info.\n this.shapes[i].pathsData.length = 0;\n this.shapes[i].shape._mdf = true;\n }\n }\n };\n\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i;\n var len = newPaths.length;\n\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i]);\n }\n };\n\n TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n }\n\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n shapePath.setXYAt(points[1], points[5], 'o', pos);\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos);\n }\n\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n var pathsData = shapeData.pathsData;\n var shapePaths = shapeData.shape.paths.shapes;\n var i;\n var len = shapeData.shape.paths._length;\n var j;\n var jLen;\n var addedLength = 0;\n var currentLengthData;\n var segmentCount;\n var lengths;\n var segment;\n var shapes = [];\n var initPos;\n var newShape = true;\n\n if (!shapePath) {\n shapePath = shapePool.newElement();\n segmentCount = 0;\n initPos = 0;\n } else {\n segmentCount = shapePath._length;\n initPos = shapePath._length;\n }\n\n shapes.push(shapePath);\n\n for (i = 0; i < len; i += 1) {\n lengths = pathsData[i].lengths;\n shapePath.c = shapePaths[i].c;\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\n\n for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n addedLength += currentLengthData.addedLength;\n shapePath.c = false;\n } else if (addedLength > shapeSegment.e) {\n shapePath.c = false;\n break;\n } else {\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n }\n\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength;\n\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n } else {\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n\n if (shapePath._length) {\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\n }\n\n if (addedLength > shapeSegment.e) {\n break;\n }\n\n if (i < len - 1) {\n shapePath = shapePool.newElement();\n newShape = true;\n shapes.push(shapePath);\n segmentCount = 0;\n }\n }\n\n return shapes;\n };\n\n function PuckerAndBloatModifier() {}\n\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n\n PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this._isAnimated = !!this.amount.effectsSequence.length;\n };\n\n PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n var percent = amount / 100;\n var centerPoint = [0, 0];\n var pathLength = path._length;\n var i = 0;\n\n for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0];\n centerPoint[1] += path.v[i][1];\n }\n\n centerPoint[0] /= pathLength;\n centerPoint[1] /= pathLength;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < pathLength; i += 1) {\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\n }\n\n return clonedPath;\n };\n\n PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n var TransformPropertyFactory = function () {\n var defaultVector = [0, 0];\n\n function applyToMatrix(mat) {\n var _mdf = this._mdf;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || _mdf;\n\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r) {\n mat.rotate(-this.r.v);\n } else {\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.data.p.s) {\n if (this.data.p.z) {\n mat.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n mat.translate(this.px.v, this.py.v, 0);\n }\n } else {\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (this._isDirty) {\n this.precalculateMatrix();\n this._isDirty = false;\n }\n\n this.iterateDynamicProperties();\n\n if (this._mdf || forceRender) {\n var frameRate;\n this.v.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n this.v.rotate(-this.r.v);\n } else if (!this.r && this.appliedTransformations < 4) {\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.autoOriented) {\n var v1;\n var v2;\n frameRate = this.elem.globalData.frameRate;\n\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\n v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\n } else {\n v1 = this.p.pv;\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\n }\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\n v1 = [];\n v2 = [];\n var px = this.px;\n var py = this.py;\n\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\n v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\n v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\n v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\n } else {\n v1 = [px.pv, py.pv];\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\n }\n } else {\n v2 = defaultVector;\n v1 = v2;\n }\n\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n }\n\n if (this.data.p && this.data.p.s) {\n if (this.data.p.z) {\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n this.v.translate(this.px.v, this.py.v, 0);\n }\n } else {\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n this.frameId = this.elem.globalData.frameId;\n }\n\n function precalculateMatrix() {\n this.appliedTransformations = 0;\n this.pre.reset();\n\n if (!this.a.effectsSequence.length) {\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n this.appliedTransformations = 1;\n } else {\n return;\n }\n\n if (!this.s.effectsSequence.length) {\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n this.appliedTransformations = 2;\n } else {\n return;\n }\n\n if (this.sk) {\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\n this.appliedTransformations = 3;\n } else {\n return;\n }\n }\n\n if (this.r) {\n if (!this.r.effectsSequence.length) {\n this.pre.rotate(-this.r.v);\n this.appliedTransformations = 4;\n }\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n this.appliedTransformations = 4;\n }\n }\n\n function autoOrient() {//\n // var prevP = this.getValueAtTime();\n }\n\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop);\n\n this.elem.addDynamicProperty(prop);\n this._isDirty = true;\n }\n\n function TransformProperty(elem, data, container) {\n this.elem = elem;\n this.frameId = -1;\n this.propType = 'transform';\n this.data = data;\n this.v = new Matrix(); // Precalculated matrix with non animated properties\n\n this.pre = new Matrix();\n this.appliedTransformations = 0;\n this.initDynamicPropertyContainer(container || elem);\n\n if (data.p && data.p.s) {\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\n\n if (data.p.z) {\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\n }\n } else {\n this.p = PropertyFactory.getProp(elem, data.p || {\n k: [0, 0, 0]\n }, 1, 0, this);\n }\n\n if (data.rx) {\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\n\n if (data.or.k[0].ti) {\n var i;\n var len = data.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.or.k[i].to = null;\n data.or.k[i].ti = null;\n }\n }\n\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\n\n this.or.sh = true;\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || {\n k: 0\n }, 0, degToRads, this);\n }\n\n if (data.sk) {\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\n }\n\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: [0, 0, 0]\n }, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: [100, 100, 100]\n }, 1, 0.01, this); // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\n\n if (data.o) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\n } else {\n this.o = {\n _mdf: false,\n v: 1\n };\n }\n\n this._isDirty = true;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n }\n\n TransformProperty.prototype = {\n applyToMatrix: applyToMatrix,\n getValue: processKeys,\n precalculateMatrix: precalculateMatrix,\n autoOrient: autoOrient\n };\n extendPrototype([DynamicPropertyContainer], TransformProperty);\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\n\n function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container);\n }\n\n return {\n getTransformProperty: getTransformProperty\n };\n }();\n\n function RepeaterModifier() {}\n\n extendPrototype([ShapeModifier], RepeaterModifier);\n\n RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\n this.data = data;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n\n this._isAnimated = !!this.dynamicProperties.length;\n this.pMatrix = new Matrix();\n this.rMatrix = new Matrix();\n this.sMatrix = new Matrix();\n this.tMatrix = new Matrix();\n this.matrix = new Matrix();\n };\n\n RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n var dir = inv ? -1 : 1;\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n rMatrix.rotate(-transform.r.v * dir * perc);\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n };\n\n RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n this.elem = elem;\n this.arr = arr;\n this.pos = pos;\n this.elemsData = elemsData;\n this._currentCopies = 0;\n this._elements = [];\n this._groups = [];\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, arr[pos]);\n\n while (pos > 0) {\n pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\n\n this._elements.unshift(arr[pos]);\n }\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false;\n\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it);\n }\n }\n };\n\n RepeaterModifier.prototype.cloneElements = function (elements) {\n var newElements = JSON.parse(JSON.stringify(elements));\n this.resetElements(newElements);\n return newElements;\n };\n\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag;\n\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag);\n }\n }\n };\n\n RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n var items;\n var itemsTransform;\n var i;\n var dir;\n var cont;\n var hasReloaded = false;\n\n if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v);\n\n if (this._groups.length < copies) {\n while (this._groups.length < copies) {\n var group = {\n it: this.cloneElements(this._elements),\n ty: 'gr'\n };\n group.it.push({\n a: {\n a: 0,\n ix: 1,\n k: [0, 0]\n },\n nm: 'Transform',\n o: {\n a: 0,\n ix: 7,\n k: 100\n },\n p: {\n a: 0,\n ix: 2,\n k: [0, 0]\n },\n r: {\n a: 1,\n ix: 6,\n k: [{\n s: 0,\n e: 0,\n t: 0\n }, {\n s: 0,\n e: 0,\n t: 1\n }]\n },\n s: {\n a: 0,\n ix: 3,\n k: [100, 100]\n },\n sa: {\n a: 0,\n ix: 5,\n k: 0\n },\n sk: {\n a: 0,\n ix: 4,\n k: 0\n },\n ty: 'tr'\n });\n this.arr.splice(0, 0, group);\n\n this._groups.splice(0, 0, group);\n\n this._currentCopies += 1;\n }\n\n this.elem.reloadShapes();\n hasReloaded = true;\n }\n\n cont = 0;\n var renderFlag;\n\n for (i = 0; i <= this._groups.length - 1; i += 1) {\n renderFlag = cont < copies;\n this._groups[i]._render = renderFlag;\n this.changeGroupRender(this._groups[i].it, renderFlag);\n\n if (!renderFlag) {\n var elems = this.elemsData[i].it;\n var transformData = elems[elems.length - 1];\n\n if (transformData.transform.op.v !== 0) {\n transformData.transform.op._mdf = true;\n transformData.transform.op.v = 0;\n } else {\n transformData.transform.op._mdf = false;\n }\n }\n\n cont += 1;\n }\n\n this._currentCopies = copies; /// /\n\n var offset = this.o.v;\n var offsetModulo = offset % 1;\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n var pProps = this.pMatrix.props;\n var rProps = this.rMatrix.props;\n var sProps = this.sMatrix.props;\n this.pMatrix.reset();\n this.rMatrix.reset();\n this.sMatrix.reset();\n this.tMatrix.reset();\n this.matrix.reset();\n var iteration = 0;\n\n if (offset > 0) {\n while (iteration < roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n iteration += 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\n iteration += offsetModulo;\n }\n } else if (offset < 0) {\n while (iteration > roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\n iteration -= 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n iteration -= offsetModulo;\n }\n }\n\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\n dir = this.data.m === 1 ? 1 : -1;\n cont = this._currentCopies;\n var j;\n var jLen;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n jLen = itemsTransform.length;\n items[items.length - 1].transform.mProps._mdf = true;\n items[items.length - 1].transform.op._mdf = true;\n items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\n\n if (iteration !== 0) {\n if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n }\n\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n\n this.matrix.reset();\n } else {\n this.matrix.reset();\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n }\n\n iteration += 1;\n cont -= 1;\n i += dir;\n }\n } else {\n cont = this._currentCopies;\n i = 0;\n dir = 1;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n items[items.length - 1].transform.mProps._mdf = false;\n items[items.length - 1].transform.op._mdf = false;\n cont -= 1;\n i += dir;\n }\n }\n\n return hasReloaded;\n };\n\n RepeaterModifier.prototype.addShape = function () {};\n\n function RoundCornersModifier() {}\n\n extendPrototype([ShapeModifier], RoundCornersModifier);\n\n RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this._isAnimated = !!this.rd.effectsSequence.length;\n };\n\n RoundCornersModifier.prototype.processPath = function (path, round) {\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var i;\n var len = path._length;\n var currentV;\n var currentI;\n var currentO;\n var closerV;\n var distance;\n var newPosPerc;\n var index = 0;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < len; i += 1) {\n currentV = path.v[i];\n currentO = path.o[i];\n currentI = path.i[i];\n\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\n if ((i === 0 || i === len - 1) && !path.c) {\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\n\n index += 1;\n } else {\n if (i === 0) {\n closerV = path.v[len - 1];\n } else {\n closerV = path.v[i - 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = iX;\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\n vY = iY;\n oX = vX - (vX - currentV[0]) * roundCorner;\n oY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n\n if (i === len - 1) {\n closerV = path.v[0];\n } else {\n closerV = path.v[i + 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = oX;\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\n vY = oY;\n iX = vX - (vX - currentV[0]) * roundCorner;\n iY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n }\n } else {\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\n index += 1;\n }\n }\n\n return clonedPath;\n };\n\n RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var rd = this.rd.v;\n\n if (rd !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function floatEqual(a, b) {\n return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\n }\n\n function floatZero(f) {\n return Math.abs(f) <= 0.00001;\n }\n\n function lerp(p0, p1, amount) {\n return p0 * (1 - amount) + p1 * amount;\n }\n\n function lerpPoint(p0, p1, amount) {\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n }\n\n function quadRoots(a, b, c) {\n // no root\n if (a === 0) return [];\n var s = b * b - 4 * a * c; // Complex roots\n\n if (s < 0) return [];\n var singleRoot = -b / (2 * a); // 1 root\n\n if (s === 0) return [singleRoot];\n var delta = Math.sqrt(s) / (2 * a); // 2 roots\n\n return [singleRoot - delta, singleRoot + delta];\n }\n\n function polynomialCoefficients(p0, p1, p2, p3) {\n return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\n }\n\n function singlePoint(p) {\n return new PolynomialBezier(p, p, p, p, false);\n }\n\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\n if (linearize && pointEqual(p0, p1)) {\n p1 = lerpPoint(p0, p3, 1 / 3);\n }\n\n if (linearize && pointEqual(p2, p3)) {\n p2 = lerpPoint(p0, p3, 2 / 3);\n }\n\n var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\n var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\n this.a = [coeffx[0], coeffy[0]];\n this.b = [coeffx[1], coeffy[1]];\n this.c = [coeffx[2], coeffy[2]];\n this.d = [coeffx[3], coeffy[3]];\n this.points = [p0, p1, p2, p3];\n }\n\n PolynomialBezier.prototype.point = function (t) {\n return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]];\n };\n\n PolynomialBezier.prototype.derivative = function (t) {\n return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]];\n };\n\n PolynomialBezier.prototype.tangentAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[1], p[0]);\n };\n\n PolynomialBezier.prototype.normalAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[0], p[1]);\n };\n\n PolynomialBezier.prototype.inflectionPoints = function () {\n var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\n if (floatZero(denom)) return [];\n var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\n var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\n if (square < 0) return [];\n var root = Math.sqrt(square);\n\n if (floatZero(root)) {\n if (root > 0 && root < 1) return [tcusp];\n return [];\n }\n\n return [tcusp - root, tcusp + root].filter(function (r) {\n return r > 0 && r < 1;\n });\n };\n\n PolynomialBezier.prototype.split = function (t) {\n if (t <= 0) return [singlePoint(this.points[0]), this];\n if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\n var p10 = lerpPoint(this.points[0], this.points[1], t);\n var p11 = lerpPoint(this.points[1], this.points[2], t);\n var p12 = lerpPoint(this.points[2], this.points[3], t);\n var p20 = lerpPoint(p10, p11, t);\n var p21 = lerpPoint(p11, p12, t);\n var p3 = lerpPoint(p20, p21, t);\n return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\n };\n\n function extrema(bez, comp) {\n var min = bez.points[0][comp];\n var max = bez.points[bez.points.length - 1][comp];\n\n if (min > max) {\n var e = max;\n max = min;\n min = e;\n } // Derivative roots to find min/max\n\n\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\n\n for (var i = 0; i < f.length; i += 1) {\n if (f[i] > 0 && f[i] < 1) {\n var val = bez.point(f[i])[comp];\n if (val < min) min = val;else if (val > max) max = val;\n }\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n PolynomialBezier.prototype.bounds = function () {\n return {\n x: extrema(this, 0),\n y: extrema(this, 1)\n };\n };\n\n PolynomialBezier.prototype.boundingBox = function () {\n var bounds = this.bounds();\n return {\n left: bounds.x.min,\n right: bounds.x.max,\n top: bounds.y.min,\n bottom: bounds.y.max,\n width: bounds.x.max - bounds.x.min,\n height: bounds.y.max - bounds.y.min,\n cx: (bounds.x.max + bounds.x.min) / 2,\n cy: (bounds.y.max + bounds.y.min) / 2\n };\n };\n\n function intersectData(bez, t1, t2) {\n var box = bez.boundingBox();\n return {\n cx: box.cx,\n cy: box.cy,\n width: box.width,\n height: box.height,\n bez: bez,\n t: (t1 + t2) / 2,\n t1: t1,\n t2: t2\n };\n }\n\n function splitData(data) {\n var split = data.bez.split(0.5);\n return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\n }\n\n function boxIntersect(b1, b2) {\n return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\n }\n\n function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n if (!boxIntersect(d1, d2)) return;\n\n if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\n intersections.push([d1.t, d2.t]);\n return;\n }\n\n var d1s = splitData(d1);\n var d2s = splitData(d2);\n intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n }\n\n PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\n if (tolerance === undefined) tolerance = 2;\n if (maxRecursion === undefined) maxRecursion = 7;\n var intersections = [];\n intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\n return intersections;\n };\n\n PolynomialBezier.shapeSegment = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\n };\n\n PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\n };\n\n function crossProduct(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n }\n\n function lineIntersection(start1, end1, start2, end2) {\n var v1 = [start1[0], start1[1], 1];\n var v2 = [end1[0], end1[1], 1];\n var v3 = [start2[0], start2[1], 1];\n var v4 = [end2[0], end2[1], 1];\n var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\n if (floatZero(r[2])) return null;\n return [r[0] / r[2], r[1] / r[2]];\n }\n\n function polarOffset(p, angle, length) {\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n }\n\n function pointDistance(p1, p2) {\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n }\n\n function pointEqual(p1, p2) {\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n }\n\n function ZigZagModifier() {}\n\n extendPrototype([ShapeModifier], ZigZagModifier);\n\n ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\n this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\n this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\n };\n\n function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\n var angO = angle - Math.PI / 2;\n var angI = angle + Math.PI / 2;\n var px = point[0] + Math.cos(angle) * direction * amplitude;\n var py = point[1] - Math.sin(angle) * direction * amplitude;\n outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\n }\n\n function getPerpendicularVector(pt1, pt2) {\n var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\n var rot = -Math.PI * 0.5;\n var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\n return rotatedVector;\n }\n\n function getProjectingAngle(path, cur) {\n var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\n var nextIndex = (cur + 1) % path.length();\n var prevPoint = path.v[prevIndex];\n var nextPoint = path.v[nextIndex];\n var pVector = getPerpendicularVector(prevPoint, nextPoint);\n return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\n }\n\n function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\n var angle = getProjectingAngle(path, cur);\n var point = path.v[cur % path._length];\n var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\n var nextPoint = path.v[(cur + 1) % path._length];\n var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\n var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\n setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\n }\n\n function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\n for (var i = 0; i < frequency; i += 1) {\n var t = (i + 1) / (frequency + 1);\n var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\n var angle = segment.normalAngle(t);\n var point = segment.point(t);\n setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\n direction = -direction;\n }\n\n return direction;\n }\n\n ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\n var count = path._length;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n\n if (!path.c) {\n count -= 1;\n }\n\n if (count === 0) return clonedPath;\n var direction = -1;\n var segment = PolynomialBezier.shapeSegment(path, 0);\n zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\n\n for (var i = 0; i < count; i += 1) {\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n\n if (i === count - 1 && !path.c) {\n segment = null;\n } else {\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n }\n\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n }\n\n return clonedPath;\n };\n\n ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amplitude = this.amplitude.v;\n var frequency = Math.max(0, Math.round(this.frequency.v));\n var pointType = this.pointsType.v;\n\n if (amplitude !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function linearOffset(p1, p2, amount) {\n var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\n return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\n }\n\n function offsetSegment(segment, amount) {\n var p0;\n var p1a;\n var p1b;\n var p2b;\n var p2a;\n var p3;\n var e;\n e = linearOffset(segment.points[0], segment.points[1], amount);\n p0 = e[0];\n p1a = e[1];\n e = linearOffset(segment.points[1], segment.points[2], amount);\n p1b = e[0];\n p2b = e[1];\n e = linearOffset(segment.points[2], segment.points[3], amount);\n p2a = e[0];\n p3 = e[1];\n var p1 = lineIntersection(p0, p1a, p1b, p2b);\n if (p1 === null) p1 = p1a;\n var p2 = lineIntersection(p2a, p3, p1b, p2b);\n if (p2 === null) p2 = p2a;\n return new PolynomialBezier(p0, p1, p2, p3);\n }\n\n function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n var p0 = seg1.points[3];\n var p1 = seg2.points[0]; // Bevel\n\n if (lineJoin === 3) return p0; // Connected, they don't need a joint\n\n if (pointEqual(p0, p1)) return p0; // Round\n\n if (lineJoin === 2) {\n var angleOut = -seg1.tangentAngle(1);\n var angleIn = -seg2.tangentAngle(0) + Math.PI;\n var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\n var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\n var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\n outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\n tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\n outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\n return p1;\n } // Miter\n\n\n var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\n var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\n var intersection = lineIntersection(t0, p0, p1, t1);\n\n if (intersection && pointDistance(intersection, p0) < miterLimit) {\n outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\n return intersection;\n }\n\n return p0;\n }\n\n function getIntersection(a, b) {\n var intersect = a.intersections(b);\n if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\n if (intersect.length) return intersect[0];\n return null;\n }\n\n function pruneSegmentIntersection(a, b) {\n var outa = a.slice();\n var outb = b.slice();\n var intersect = getIntersection(a[a.length - 1], b[0]);\n\n if (intersect) {\n outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\n outb[0] = b[0].split(intersect[1])[1];\n }\n\n if (a.length > 1 && b.length > 1) {\n intersect = getIntersection(a[0], b[b.length - 1]);\n\n if (intersect) {\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n }\n }\n\n return [outa, outb];\n }\n\n function pruneIntersections(segments) {\n var e;\n\n for (var i = 1; i < segments.length; i += 1) {\n e = pruneSegmentIntersection(segments[i - 1], segments[i]);\n segments[i - 1] = e[0];\n segments[i] = e[1];\n }\n\n if (segments.length > 1) {\n e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\n segments[segments.length - 1] = e[0];\n segments[0] = e[1];\n }\n\n return segments;\n }\n\n function offsetSegmentSplit(segment, amount) {\n /*\r\n We split each bezier segment into smaller pieces based\r\n on inflection points, this ensures the control point\r\n polygon is convex.\r\n (A cubic bezier can have none, one, or two inflection points)\r\n */\n var flex = segment.inflectionPoints();\n var left;\n var right;\n var split;\n var mid;\n\n if (flex.length === 0) {\n return [offsetSegment(segment, amount)];\n }\n\n if (flex.length === 1 || floatEqual(flex[1], 1)) {\n split = segment.split(flex[0]);\n left = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(right, amount)];\n }\n\n split = segment.split(flex[0]);\n left = split[0];\n var t = (flex[1] - flex[0]) / (1 - flex[0]);\n split = split[1].split(t);\n mid = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\n }\n\n function OffsetPathModifier() {}\n\n extendPrototype([ShapeModifier], OffsetPathModifier);\n\n OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\n this.lineJoin = data.lj;\n this._isAnimated = this.amount.effectsSequence.length !== 0;\n };\n\n OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\n var outputBezier = shapePool.newElement();\n outputBezier.c = inputBezier.c;\n var count = inputBezier.length();\n\n if (!inputBezier.c) {\n count -= 1;\n }\n\n var i;\n var j;\n var segment;\n var multiSegments = [];\n\n for (i = 0; i < count; i += 1) {\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n\n if (!inputBezier.c) {\n for (i = count - 1; i >= 0; i -= 1) {\n segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n }\n\n multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\n\n var lastPoint = null;\n var lastSeg = null;\n\n for (i = 0; i < multiSegments.length; i += 1) {\n var multiSegment = multiSegments[i];\n if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\n lastSeg = multiSegment[multiSegment.length - 1];\n\n for (j = 0; j < multiSegment.length; j += 1) {\n segment = multiSegment[j];\n\n if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\n outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\n } else {\n outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\n }\n\n outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\n lastPoint = segment.points[3];\n }\n }\n\n if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n return outputBezier;\n };\n\n OffsetPathModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n var miterLimit = this.miterLimit.v;\n var lineJoin = this.lineJoin;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function getFontProperties(fontData) {\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\n var fWeight = 'normal';\n var fStyle = 'normal';\n var len = styles.length;\n var styleName;\n\n for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase();\n\n switch (styleName) {\n case 'italic':\n fStyle = 'italic';\n break;\n\n case 'bold':\n fWeight = '700';\n break;\n\n case 'black':\n fWeight = '900';\n break;\n\n case 'medium':\n fWeight = '500';\n break;\n\n case 'regular':\n case 'normal':\n fWeight = '400';\n break;\n\n case 'light':\n case 'thin':\n fWeight = '200';\n break;\n\n default:\n break;\n }\n }\n\n return {\n style: fStyle,\n weight: fontData.fWeight || fWeight\n };\n }\n\n var FontManager = function () {\n var maxWaitingTime = 5000;\n var emptyChar = {\n w: 0,\n size: 0,\n shapes: [],\n data: {\n shapes: []\n }\n };\n var combinedCharacters = []; // Hindi characters\n\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\n var BLACK_FLAG_CODE_POINT = 127988;\n var CANCEL_TAG_CODE_POINT = 917631;\n var A_TAG_CODE_POINT = 917601;\n var Z_TAG_CODE_POINT = 917626;\n var VARIATION_SELECTOR_16_CODE_POINT = 65039;\n var ZERO_WIDTH_JOINER_CODE_POINT = 8205;\n var REGIONAL_CHARACTER_A_CODE_POINT = 127462;\n var REGIONAL_CHARACTER_Z_CODE_POINT = 127487;\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\n\n function trimFontOptions(font) {\n var familyArray = font.split(',');\n var i;\n var len = familyArray.length;\n var enabledFamilies = [];\n\n for (i = 0; i < len; i += 1) {\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n enabledFamilies.push(familyArray[i]);\n }\n }\n\n return enabledFamilies.join(',');\n }\n\n function setUpNode(font, family) {\n var parentNode = createTag('span'); // Node is invisible to screen readers.\n\n parentNode.setAttribute('aria-hidden', true);\n parentNode.style.fontFamily = family;\n var node = createTag('span'); // Characters that vary significantly among different fonts\n\n node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\n\n parentNode.style.position = 'absolute';\n parentNode.style.left = '-10000px';\n parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\n\n parentNode.style.fontSize = '300px'; // Reset any font properties\n\n parentNode.style.fontVariant = 'normal';\n parentNode.style.fontStyle = 'normal';\n parentNode.style.fontWeight = 'normal';\n parentNode.style.letterSpacing = '0';\n parentNode.appendChild(node);\n document.body.appendChild(parentNode); // Remember width with no applied web font\n\n var width = node.offsetWidth;\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\n return {\n node: node,\n w: width,\n parent: parentNode\n };\n }\n\n function checkLoadedFonts() {\n var i;\n var len = this.fonts.length;\n var node;\n var w;\n var loadedCount = len;\n\n for (i = 0; i < len; i += 1) {\n if (this.fonts[i].loaded) {\n loadedCount -= 1;\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].monoCase.node;\n w = this.fonts[i].monoCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].sansCase.node;\n w = this.fonts[i].sansCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n }\n }\n\n if (this.fonts[i].loaded) {\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\n }\n }\n }\n\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20);\n } else {\n setTimeout(this.setIsLoadedBinded, 10);\n }\n }\n\n function createHelper(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas';\n var helper;\n var fontProps = getFontProperties(fontData);\n\n if (engine === 'svg') {\n var tHelper = createNS('text');\n tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\n\n tHelper.setAttribute('font-family', fontData.fFamily);\n tHelper.setAttribute('font-style', fontProps.style);\n tHelper.setAttribute('font-weight', fontProps.weight);\n tHelper.textContent = '1';\n\n if (fontData.fClass) {\n tHelper.style.fontFamily = 'inherit';\n tHelper.setAttribute('class', fontData.fClass);\n } else {\n tHelper.style.fontFamily = fontData.fFamily;\n }\n\n def.appendChild(tHelper);\n helper = tHelper;\n } else {\n var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\n tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\n helper = tCanvasHelper;\n }\n\n function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text;\n return helper.getComputedTextLength();\n }\n\n return helper.measureText(text).width;\n }\n\n return {\n measureText: measure\n };\n }\n\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true;\n return;\n }\n\n if (this.chars) {\n this.isLoaded = true;\n this.fonts = fontData.list;\n return;\n }\n\n if (!document.body) {\n this.isLoaded = true;\n fontData.list.forEach(function (data) {\n data.helper = createHelper(data);\n data.cache = {};\n });\n this.fonts = fontData.list;\n return;\n }\n\n var fontArr = fontData.list;\n var i;\n var len = fontArr.length;\n var _pendingFonts = len;\n\n for (i = 0; i < len; i += 1) {\n var shouldLoadFont = true;\n var loadedSelector;\n var j;\n fontArr[i].loaded = false;\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\n\n if (!fontArr[i].fPath) {\n fontArr[i].loaded = true;\n _pendingFonts -= 1;\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\n\n if (loadedSelector.length > 0) {\n shouldLoadFont = false;\n }\n\n if (shouldLoadFont) {\n var s = createTag('style');\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\n s.setAttribute('f-origin', fontArr[i].origin);\n s.setAttribute('f-family', fontArr[i].fFamily);\n s.type = 'text/css';\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\n defs.appendChild(s);\n }\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var l = createTag('link');\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\n l.setAttribute('f-origin', fontArr[i].origin);\n l.type = 'text/css';\n l.rel = 'stylesheet';\n l.href = fontArr[i].fPath;\n document.body.appendChild(l);\n }\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (fontArr[i].fPath === loadedSelector[j].src) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var sc = createTag('link');\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\n sc.setAttribute('f-origin', fontArr[i].origin);\n sc.setAttribute('rel', 'stylesheet');\n sc.setAttribute('href', fontArr[i].fPath);\n defs.appendChild(sc);\n }\n }\n\n fontArr[i].helper = createHelper(fontArr[i], defs);\n fontArr[i].cache = {};\n this.fonts.push(fontArr[i]);\n }\n\n if (_pendingFonts === 0) {\n this.isLoaded = true;\n } else {\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n // Adding this timeout seems to fix it\n setTimeout(this.checkLoadedFonts.bind(this), 100);\n }\n }\n\n function addChars(chars) {\n if (!chars) {\n return;\n }\n\n if (!this.chars) {\n this.chars = [];\n }\n\n var i;\n var len = chars.length;\n var j;\n var jLen = this.chars.length;\n var found;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n found = false;\n\n while (j < jLen) {\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\n found = true;\n }\n\n j += 1;\n }\n\n if (!found) {\n this.chars.push(chars[i]);\n jLen += 1;\n }\n }\n }\n\n function getCharData(_char, style, font) {\n var i = 0;\n var len = this.chars.length;\n\n while (i < len) {\n if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n return this.chars[i];\n }\n\n i += 1;\n }\n\n if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\n && !this._warned) {\n this._warned = true;\n console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\n }\n\n return emptyChar;\n }\n\n function measureText(_char2, fontName, size) {\n var fontData = this.getFontByName(fontName); // Using the char instead of char.charCodeAt(0)\n // to avoid collisions between equal chars\n\n var index = _char2;\n\n if (!fontData.cache[index]) {\n var tHelper = fontData.helper;\n\n if (_char2 === ' ') {\n var doubleSize = tHelper.measureText('|' + _char2 + '|');\n var singleSize = tHelper.measureText('||');\n fontData.cache[index] = (doubleSize - singleSize) / 100;\n } else {\n fontData.cache[index] = tHelper.measureText(_char2) / 100;\n }\n }\n\n return fontData.cache[index] * size;\n }\n\n function getFontByName(name) {\n var i = 0;\n var len = this.fonts.length;\n\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i];\n }\n\n i += 1;\n }\n\n return this.fonts[0];\n }\n\n function getCodePoint(string) {\n var codePoint = 0;\n var first = string.charCodeAt(0);\n\n if (first >= 0xD800 && first <= 0xDBFF) {\n var second = string.charCodeAt(1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return codePoint;\n } // Skin tone modifiers\n\n\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n return surrogateModifiers.indexOf(sum) !== -1;\n }\n\n function isZeroWidthJoiner(charCode) {\n return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\n } // This codepoint may change the appearance of the preceding character.\n // If that is a symbol, dingbat or emoji, U+FE0F forces it to be rendered\n // as a colorful image as compared to a monochrome text variant.\n\n\n function isVariationSelector(charCode) {\n return charCode === VARIATION_SELECTOR_16_CODE_POINT;\n } // The regional indicator symbols are a set of 26 alphabetic Unicode\n /// characters (A–Z) intended to be used to encode ISO 3166-1 alpha-2\n // two-letter country codes in a way that allows optional special treatment.\n\n\n function isRegionalCode(string) {\n var codePoint = getCodePoint(string);\n\n if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n return true;\n }\n\n return false;\n } // Some Emoji implementations represent combinations of\n // two “regional indicator” letters as a single flag symbol.\n\n\n function isFlagEmoji(string) {\n return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n }\n\n function isCombinedCharacter(_char3) {\n return combinedCharacters.indexOf(_char3) !== -1;\n } // Regional flags start with a BLACK_FLAG_CODE_POINT\n // folowed by 5 chars in the TAG range\n // and end with a CANCEL_TAG_CODE_POINT\n\n\n function isRegionalFlag(text, index) {\n var codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint !== BLACK_FLAG_CODE_POINT) {\n return false;\n }\n\n var count = 0;\n index += 2;\n\n while (count < 5) {\n codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n return false;\n }\n\n count += 1;\n index += 2;\n }\n\n return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n }\n\n function setIsLoaded() {\n this.isLoaded = true;\n }\n\n var Font = function Font() {\n this.fonts = [];\n this.chars = null;\n this.typekitLoaded = 0;\n this.isLoaded = false;\n this._warned = false;\n this.initTime = Date.now();\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\n };\n\n Font.isModifier = isModifier;\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\n Font.isFlagEmoji = isFlagEmoji;\n Font.isRegionalCode = isRegionalCode;\n Font.isCombinedCharacter = isCombinedCharacter;\n Font.isRegionalFlag = isRegionalFlag;\n Font.isVariationSelector = isVariationSelector;\n Font.BLACK_FLAG_CODE_POINT = BLACK_FLAG_CODE_POINT;\n var fontPrototype = {\n addChars: addChars,\n addFonts: addFonts,\n getCharData: getCharData,\n getFontByName: getFontByName,\n measureText: measureText,\n checkLoadedFonts: checkLoadedFonts,\n setIsLoaded: setIsLoaded\n };\n Font.prototype = fontPrototype;\n return Font;\n }();\n\n function SlotManager(animationData) {\n this.animationData = animationData;\n }\n\n SlotManager.prototype.getProp = function (data) {\n if (this.animationData.slots && this.animationData.slots[data.sid]) {\n return Object.assign(data, this.animationData.slots[data.sid].p);\n }\n\n return data;\n };\n\n function slotFactory(animationData) {\n return new SlotManager(animationData);\n }\n\n function RenderableElement() {}\n\n RenderableElement.prototype = {\n initRenderable: function initRenderable() {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false; // layer's display state\n\n this.hidden = false; // If layer's transparency equals 0, it can be hidden\n\n this.isTransparent = false; // list of animated components\n\n this.renderableComponents = [];\n },\n addRenderableComponent: function addRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) === -1) {\n this.renderableComponents.push(component);\n }\n },\n removeRenderableComponent: function removeRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) !== -1) {\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\n }\n },\n prepareRenderableFrame: function prepareRenderableFrame(num) {\n this.checkLayerLimits(num);\n },\n checkTransparency: function checkTransparency() {\n if (this.finalTransform.mProp.o.v <= 0) {\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n this.isTransparent = true;\n this.hide();\n }\n } else if (this.isTransparent) {\n this.isTransparent = false;\n this.show();\n }\n },\n\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\n */\n checkLayerLimits: function checkLayerLimits(num) {\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n if (this.isInRange !== true) {\n this.globalData._mdf = true;\n this._mdf = true;\n this.isInRange = true;\n this.show();\n }\n } else if (this.isInRange !== false) {\n this.globalData._mdf = true;\n this.isInRange = false;\n this.hide();\n }\n },\n renderRenderable: function renderRenderable() {\n var i;\n var len = this.renderableComponents.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n\n },\n sourceRectAtTime: function sourceRectAtTime() {\n return {\n top: 0,\n left: 0,\n width: 100,\n height: 100\n };\n },\n getLayerSize: function getLayerSize() {\n if (this.data.ty === 5) {\n return {\n w: this.data.textData.width,\n h: this.data.textData.height\n };\n }\n\n return {\n w: this.data.width,\n h: this.data.height\n };\n }\n };\n\n var getBlendMode = function () {\n var blendModeEnums = {\n 0: 'source-over',\n 1: 'multiply',\n 2: 'screen',\n 3: 'overlay',\n 4: 'darken',\n 5: 'lighten',\n 6: 'color-dodge',\n 7: 'color-burn',\n 8: 'hard-light',\n 9: 'soft-light',\n 10: 'difference',\n 11: 'exclusion',\n 12: 'hue',\n 13: 'saturation',\n 14: 'color',\n 15: 'luminosity'\n };\n return function (mode) {\n return blendModeEnums[mode] || '';\n };\n }();\n\n function SliderEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function NoValueEffect() {\n this.p = {};\n }\n\n function EffectsManager(data, element) {\n var effects = data.ef || [];\n this.effectElements = [];\n var i;\n var len = effects.length;\n var effectItem;\n\n for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element);\n this.effectElements.push(effectItem);\n }\n }\n\n function GroupEffect(data, element) {\n this.init(data, element);\n }\n\n extendPrototype([DynamicPropertyContainer], GroupEffect);\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n\n GroupEffect.prototype.init = function (data, element) {\n this.data = data;\n this.effectElements = [];\n this.initDynamicPropertyContainer(element);\n var i;\n var len = this.data.ef.length;\n var eff;\n var effects = this.data.ef;\n\n for (i = 0; i < len; i += 1) {\n eff = null;\n\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this);\n break;\n\n case 1:\n eff = new AngleEffect(effects[i], element, this);\n break;\n\n case 2:\n eff = new ColorEffect(effects[i], element, this);\n break;\n\n case 3:\n eff = new PointEffect(effects[i], element, this);\n break;\n\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this);\n break;\n\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this);\n break;\n\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this);\n break;\n\n case 5:\n eff = new EffectsManager(effects[i], element, this);\n break;\n // case 6:\n\n default:\n eff = new NoValueEffect(effects[i], element, this);\n break;\n }\n\n if (eff) {\n this.effectElements.push(eff);\n }\n }\n };\n\n function BaseElement() {}\n\n BaseElement.prototype = {\n checkMasks: function checkMasks() {\n if (!this.data.hasMask) {\n return false;\n }\n\n var i = 0;\n var len = this.data.masksProperties.length;\n\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true;\n }\n\n i += 1;\n }\n\n return false;\n },\n initExpressions: function initExpressions() {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var LayerExpressionInterface = expressionsInterfaces('layer');\n var EffectsExpressionInterface = expressionsInterfaces('effects');\n var ShapeExpressionInterface = expressionsInterfaces('shape');\n var TextExpressionInterface = expressionsInterfaces('text');\n var CompExpressionInterface = expressionsInterfaces('comp');\n this.layerInterface = LayerExpressionInterface(this);\n\n if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager);\n }\n\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n this.layerInterface.registerEffectsInterface(effectsInterface);\n\n if (this.data.ty === 0 || this.data.xt) {\n this.compInterface = CompExpressionInterface(this);\n } else if (this.data.ty === 4) {\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\n this.layerInterface.content = this.layerInterface.shapeInterface;\n } else if (this.data.ty === 5) {\n this.layerInterface.textInterface = TextExpressionInterface(this);\n this.layerInterface.text = this.layerInterface.textInterface;\n }\n },\n setBlendMode: function setBlendMode() {\n var blendModeValue = getBlendMode(this.data.bm);\n var elem = this.baseElement || this.layerElement;\n elem.style['mix-blend-mode'] = blendModeValue;\n },\n initBaseData: function initBaseData(data, globalData, comp) {\n this.globalData = globalData;\n this.comp = comp;\n this.data = data;\n this.layerId = createElementID(); // Stretch factor for old animations missing this property.\n\n if (!this.data.sr) {\n this.data.sr = 1;\n } // effects manager\n\n\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\n },\n getType: function getType() {\n return this.type;\n },\n sourceRectAtTime: function sourceRectAtTime() {}\n };\n\n /**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\n function FrameElement() {}\n\n FrameElement.prototype = {\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\n initFrame: function initFrame() {\n // set to true when inpoint is rendered\n this._isFirstFrame = false; // list of animated properties\n\n this.dynamicProperties = []; // If layer has been modified in current tick this will be true\n\n this._mdf = false;\n },\n\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\n prepareProperties: function prepareProperties(num, isVisible) {\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this.globalData._mdf = true;\n this._mdf = true;\n }\n }\n }\n },\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n }\n }\n };\n\n function FootageElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\n this.initBaseData(data, globalData, comp);\n }\n\n FootageElement.prototype.prepareFrame = function () {};\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n\n FootageElement.prototype.getBaseElement = function () {\n return null;\n };\n\n FootageElement.prototype.renderFrame = function () {};\n\n FootageElement.prototype.destroy = function () {};\n\n FootageElement.prototype.initExpressions = function () {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var FootageInterface = expressionsInterfaces('footage');\n this.layerInterface = FootageInterface(this);\n };\n\n FootageElement.prototype.getFootageData = function () {\n return this.footageData;\n };\n\n function AudioElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.initBaseData(data, globalData, comp);\n this._isPlaying = false;\n this._canPlay = false;\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.audio = this.globalData.audioController.createAudio(assetPath);\n this._currentTime = 0;\n this.globalData.audioController.addAudio(this);\n this._volumeMultiplier = 1;\n this._volume = 1;\n this._previousVolume = null;\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\n k: [100]\n }, 1, 0.01, this);\n }\n\n AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true);\n this.prepareProperties(num, true);\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n this._currentTime = timeRemapped;\n } else {\n this._currentTime = num / this.data.sr;\n }\n\n this._volume = this.lv.v[0];\n var totalVolume = this._volume * this._volumeMultiplier;\n\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume;\n this.audio.volume(totalVolume);\n }\n };\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n\n AudioElement.prototype.renderFrame = function () {\n if (this.isInRange && this._canPlay) {\n if (!this._isPlaying) {\n this.audio.play();\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n this._isPlaying = true;\n } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n }\n }\n };\n\n AudioElement.prototype.show = function () {// this.audio.play()\n };\n\n AudioElement.prototype.hide = function () {\n this.audio.pause();\n this._isPlaying = false;\n };\n\n AudioElement.prototype.pause = function () {\n this.audio.pause();\n this._isPlaying = false;\n this._canPlay = false;\n };\n\n AudioElement.prototype.resume = function () {\n this._canPlay = true;\n };\n\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue);\n };\n\n AudioElement.prototype.volume = function (volumeValue) {\n this._volumeMultiplier = volumeValue;\n this._previousVolume = volumeValue * this._volume;\n this.audio.volume(this._previousVolume);\n };\n\n AudioElement.prototype.getBaseElement = function () {\n return null;\n };\n\n AudioElement.prototype.destroy = function () {};\n\n AudioElement.prototype.sourceRectAtTime = function () {};\n\n AudioElement.prototype.initExpressions = function () {};\n\n function BaseRenderer() {}\n\n BaseRenderer.prototype.checkLayers = function (num) {\n var i;\n var len = this.layers.length;\n var data;\n this.completeLayers = true;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i];\n\n if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n this.buildItem(i);\n }\n }\n\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer);\n\n case 0:\n return this.createComp(layer);\n\n case 1:\n return this.createSolid(layer);\n\n case 3:\n return this.createNull(layer);\n\n case 4:\n return this.createShape(layer);\n\n case 5:\n return this.createText(layer);\n\n case 6:\n return this.createAudio(layer);\n\n case 13:\n return this.createCamera(layer);\n\n case 15:\n return this.createFootage(layer);\n\n default:\n return this.createNull(layer);\n }\n };\n\n BaseRenderer.prototype.createCamera = function () {\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n };\n\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.buildAllItems = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n this.buildItem(i);\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.includeLayers = function (newLayers) {\n this.completeLayers = false;\n var i;\n var len = newLayers.length;\n var j;\n var jLen = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i];\n break;\n }\n\n j += 1;\n }\n }\n };\n\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface;\n };\n\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems();\n }\n };\n\n BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n var elements = this.elements;\n var layers = this.layers;\n var i = 0;\n var len = layers.length;\n\n while (i < len) {\n if (layers[i].ind == parentName) {\n // eslint-disable-line eqeqeq\n if (!elements[i] || elements[i] === true) {\n this.buildItem(i);\n this.addPendingElement(element);\n } else {\n hierarchy.push(elements[i]);\n elements[i].setAsParent();\n\n if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy);\n } else {\n element.setHierarchy(hierarchy);\n }\n }\n }\n\n i += 1;\n }\n };\n\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element);\n };\n\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i]);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n BaseRenderer.prototype.getElementById = function (ind) {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.ind === ind) {\n return this.elements[i];\n }\n }\n\n return null;\n };\n\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift();\n var element;\n\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue];\n } else {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.nm === pathValue) {\n element = this.elements[i];\n break;\n }\n }\n }\n\n if (path.length === 0) {\n return element;\n }\n\n return element.getElementByPath(path);\n };\n\n BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n this.globalData.fontManager = new FontManager();\n this.globalData.slotManager = slotFactory(animData);\n this.globalData.fontManager.addChars(animData.chars);\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\n this.globalData.imageLoader = this.animationItem.imagePreloader;\n this.globalData.audioController = this.animationItem.audioController;\n this.globalData.frameId = 0;\n this.globalData.frameRate = animData.fr;\n this.globalData.nm = animData.nm;\n this.globalData.compSize = {\n w: animData.w,\n h: animData.h\n };\n };\n\n var effectTypes = {\n TRANSFORM_EFFECT: 'transformEFfect'\n };\n\n function TransformElement() {}\n\n TransformElement.prototype = {\n initTransform: function initTransform() {\n var mat = new Matrix();\n this.finalTransform = {\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\n o: 0\n },\n _matMdf: false,\n _localMatMdf: false,\n _opMdf: false,\n mat: mat,\n localMat: mat,\n localOpacity: 1\n };\n\n if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true;\n } // TODO: check TYPE 11: Guided elements\n\n\n if (this.data.ty !== 11) {// this.createElements();\n }\n },\n renderTransform: function renderTransform() {\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\n\n if (this.hierarchy) {\n var mat;\n var finalMat = this.finalTransform.mat;\n var i = 0;\n var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\n\n if (!this.finalTransform._matMdf) {\n while (i < len) {\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\n this.finalTransform._matMdf = true;\n break;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props;\n finalMat.cloneFromProps(mat);\n\n for (i = 0; i < len; i += 1) {\n finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n }\n }\n }\n\n if (this.finalTransform._matMdf) {\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n }\n\n if (this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n }\n },\n renderLocalTransform: function renderLocalTransform() {\n if (this.localTransforms) {\n var i = 0;\n var len = this.localTransforms.length;\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n\n if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) {\n while (i < len) {\n if (this.localTransforms[i]._mdf) {\n this.finalTransform._localMatMdf = true;\n }\n\n if (this.localTransforms[i]._opMdf && !this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n this.finalTransform._opMdf = true;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._localMatMdf) {\n var localMat = this.finalTransform.localMat;\n this.localTransforms[0].matrix.clone(localMat);\n\n for (i = 1; i < len; i += 1) {\n var lmat = this.localTransforms[i].matrix;\n localMat.multiply(lmat);\n }\n\n localMat.multiply(this.finalTransform.mat);\n }\n\n if (this.finalTransform._opMdf) {\n var localOp = this.finalTransform.localOpacity;\n\n for (i = 0; i < len; i += 1) {\n localOp *= this.localTransforms[i].opacity * 0.01;\n }\n\n this.finalTransform.localOpacity = localOp;\n }\n }\n },\n searchEffectTransforms: function searchEffectTransforms() {\n if (this.renderableEffectsManager) {\n var transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n\n if (transformEffects.length) {\n this.localTransforms = [];\n this.finalTransform.localMat = new Matrix();\n var i = 0;\n var len = transformEffects.length;\n\n for (i = 0; i < len; i += 1) {\n this.localTransforms.push(transformEffects[i]);\n }\n }\n }\n },\n globalToLocal: function globalToLocal(pt) {\n var transforms = [];\n transforms.push(this.finalTransform);\n var flag = true;\n var comp = this.comp;\n\n while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform);\n }\n\n comp = comp.comp;\n } else {\n flag = false;\n }\n }\n\n var i;\n var len = transforms.length;\n var ptNew;\n\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n }\n\n return pt;\n },\n mHelper: new Matrix()\n };\n\n function MaskElement(data, element, globalData) {\n this.data = data;\n this.element = element;\n this.globalData = globalData;\n this.storedData = [];\n this.masksProperties = this.data.masksProperties || [];\n this.maskElement = null;\n var defs = this.globalData.defs;\n var i;\n var len = this.masksProperties ? this.masksProperties.length : 0;\n this.viewData = createSizedArray(len);\n this.solidPath = '';\n var path;\n var properties = this.masksProperties;\n var count = 0;\n var currentMasks = [];\n var j;\n var jLen;\n var layerId = createElementID();\n var rect;\n var expansor;\n var feMorph;\n var x;\n var maskType = 'clipPath';\n var maskRef = 'clip-path';\n\n for (i = 0; i < len; i += 1) {\n if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\n maskType = 'mask';\n maskRef = 'mask';\n }\n\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n rect = createNS('rect');\n rect.setAttribute('fill', '#ffffff');\n rect.setAttribute('width', this.element.comp.data.w || 0);\n rect.setAttribute('height', this.element.comp.data.h || 0);\n currentMasks.push(rect);\n } else {\n rect = null;\n }\n\n path = createNS('path');\n\n if (properties[i].mode === 'n') {\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n elem: path,\n lastPath: ''\n };\n defs.appendChild(path);\n } else {\n count += 1;\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\n path.setAttribute('clip-rule', 'nonzero');\n var filterID;\n\n if (properties[i].x.k !== 0) {\n maskType = 'mask';\n maskRef = 'mask';\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\n filterID = createElementID();\n expansor = createNS('filter');\n expansor.setAttribute('id', filterID);\n feMorph = createNS('feMorphology');\n feMorph.setAttribute('operator', 'erode');\n feMorph.setAttribute('in', 'SourceGraphic');\n feMorph.setAttribute('radius', '0');\n expansor.appendChild(feMorph);\n defs.appendChild(expansor);\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\n } else {\n feMorph = null;\n x = null;\n } // TODO move this to a factory or to a constructor\n\n\n this.storedData[i] = {\n elem: path,\n x: x,\n expan: feMorph,\n lastPath: '',\n lastOperator: '',\n filterId: filterID,\n lastRadius: 0\n };\n\n if (properties[i].mode === 'i') {\n jLen = currentMasks.length;\n var g = createNS('g');\n\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j]);\n }\n\n var mask = createNS('mask');\n mask.setAttribute('mask-type', 'alpha');\n mask.setAttribute('id', layerId + '_' + count);\n mask.appendChild(path);\n defs.appendChild(mask);\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\n currentMasks.length = 0;\n currentMasks.push(g);\n } else {\n currentMasks.push(path);\n }\n\n if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath();\n } // TODO move this to a factory or to a constructor\n\n\n this.viewData[i] = {\n elem: path,\n lastPath: '',\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n invRect: rect\n };\n\n if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n }\n }\n\n this.maskElement = createNS(maskType);\n len = currentMasks.length;\n\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i]);\n }\n\n if (count > 0) {\n this.maskElement.setAttribute('id', layerId);\n this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\n defs.appendChild(this.maskElement);\n }\n\n if (this.viewData.length) {\n this.element.addRenderableComponent(this);\n }\n }\n\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop;\n };\n\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat;\n var i;\n var len = this.masksProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.viewData[i].prop._mdf || isFirstFrame) {\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n\n if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n }\n\n if (this.masksProperties[i].mode !== 'n') {\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\n }\n\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan;\n\n if (this.storedData[i].x.v < 0) {\n if (this.storedData[i].lastOperator !== 'erode') {\n this.storedData[i].lastOperator = 'erode';\n this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\n }\n\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\n } else {\n if (this.storedData[i].lastOperator !== 'dilate') {\n this.storedData[i].lastOperator = 'dilate';\n this.storedData[i].elem.setAttribute('filter', null);\n }\n\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n }\n }\n }\n }\n };\n\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement;\n };\n\n MaskElement.prototype.createLayerSolidPath = function () {\n var path = 'M0,0 ';\n path += ' h' + this.globalData.compSize.w;\n path += ' v' + this.globalData.compSize.h;\n path += ' h-' + this.globalData.compSize.w;\n path += ' v-' + this.globalData.compSize.h + ' ';\n return path;\n };\n\n MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n var i;\n var len;\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\n } // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\n\n\n if (pathNodes.c && len > 1) {\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n } // pathNodes.__renderedString = pathString;\n\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = '';\n\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n }\n\n viewData.elem.setAttribute('d', pathShapeValue);\n }\n\n viewData.lastPath = pathString;\n }\n };\n\n MaskElement.prototype.destroy = function () {\n this.element = null;\n this.globalData = null;\n this.maskElement = null;\n this.data = null;\n this.masksProperties = null;\n };\n\n var filtersFactory = function () {\n var ob = {};\n ob.createFilter = createFilter;\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\n\n function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter');\n fil.setAttribute('id', filId);\n\n if (skipCoordinates !== true) {\n fil.setAttribute('filterUnits', 'objectBoundingBox');\n fil.setAttribute('x', '0%');\n fil.setAttribute('y', '0%');\n fil.setAttribute('width', '100%');\n fil.setAttribute('height', '100%');\n }\n\n return fil;\n }\n\n function createAlphaToLuminanceFilter() {\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\n return feColorMatrix;\n }\n\n return ob;\n }();\n\n var featureSupport = function () {\n var ob = {\n maskType: true,\n svgLumaHidden: true,\n offscreenCanvas: typeof OffscreenCanvas !== 'undefined'\n };\n\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\n ob.maskType = false;\n }\n\n if (/firefox/i.test(navigator.userAgent)) {\n ob.svgLumaHidden = false;\n }\n\n return ob;\n }();\n\n var registeredEffects$1 = {};\n var idPrefix = 'filter_result_';\n\n function SVGEffects(elem) {\n var i;\n var source = 'SourceGraphic';\n var len = elem.data.ef ? elem.data.ef.length : 0;\n var filId = createElementID();\n var fil = filtersFactory.createFilter(filId, true);\n var count = 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects$1[type]) {\n var Effect = registeredEffects$1[type].effect;\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\n source = idPrefix + count;\n\n if (registeredEffects$1[type].countsAsEffect) {\n count += 1;\n }\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (count) {\n elem.globalData.defs.appendChild(fil);\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n SVGEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect$1(id, effect, countsAsEffect) {\n registeredEffects$1[id] = {\n effect: effect,\n countsAsEffect: countsAsEffect\n };\n }\n\n function SVGBaseElement() {}\n\n SVGBaseElement.prototype = {\n initRendererElement: function initRendererElement() {\n this.layerElement = createNS('g');\n },\n createContainerElements: function createContainerElements() {\n this.matteElement = createNS('g');\n this.transformedElement = this.layerElement;\n this.maskedElement = this.layerElement;\n this._sizeChanged = false;\n var layerElementParent = null; // If this layer acts as a mask for the following layer\n\n if (this.data.td) {\n this.matteMasks = {};\n var gg = createNS('g');\n gg.setAttribute('id', this.layerId);\n gg.appendChild(this.layerElement);\n layerElementParent = gg;\n this.globalData.defs.appendChild(gg);\n } else if (this.data.tt) {\n this.matteElement.appendChild(this.layerElement);\n layerElementParent = this.matteElement;\n this.baseElement = this.matteElement;\n } else {\n this.baseElement = this.layerElement;\n }\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n\n\n if (this.data.ty === 0 && !this.data.hd) {\n var cp = createNS('clipPath');\n var pt = createNS('path');\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\n var clipId = createElementID();\n cp.setAttribute('id', clipId);\n cp.appendChild(pt);\n this.globalData.defs.appendChild(cp);\n\n if (this.checkMasks()) {\n var cpGroup = createNS('g');\n cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n cpGroup.appendChild(this.layerElement);\n this.transformedElement = cpGroup;\n\n if (layerElementParent) {\n layerElementParent.appendChild(this.transformedElement);\n } else {\n this.baseElement = this.transformedElement;\n }\n } else {\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n }\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n if (this.finalTransform._localMatMdf) {\n this.transformedElement.setAttribute('transform', this.finalTransform.localMat.to2dCSS());\n }\n\n if (this.finalTransform._opMdf) {\n this.transformedElement.setAttribute('opacity', this.finalTransform.localOpacity);\n }\n },\n destroyBaseElement: function destroyBaseElement() {\n this.layerElement = null;\n this.matteElement = null;\n this.maskManager.destroy();\n },\n getBaseElement: function getBaseElement() {\n if (this.data.hd) {\n return null;\n }\n\n return this.baseElement;\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n this.renderableEffectsManager = new SVGEffects(this);\n this.searchEffectTransforms();\n },\n getMatte: function getMatte(matteType) {\n // This should not be a common case. But for backward compatibility, we'll create the matte object.\n // It solves animations that have two consecutive layers marked as matte masks.\n // Which is an undefined behavior in AE.\n if (!this.matteMasks) {\n this.matteMasks = {};\n }\n\n if (!this.matteMasks[matteType]) {\n var id = this.layerId + '_' + matteType;\n var filId;\n var fil;\n var useElement;\n var gg;\n\n if (matteType === 1 || matteType === 3) {\n var masker = createNS('mask');\n masker.setAttribute('id', id);\n masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n masker.appendChild(useElement);\n this.globalData.defs.appendChild(masker);\n\n if (!featureSupport.maskType && matteType === 1) {\n masker.setAttribute('mask-type', 'luminance');\n filId = createElementID();\n fil = filtersFactory.createFilter(filId);\n this.globalData.defs.appendChild(fil);\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n gg.appendChild(useElement);\n masker.appendChild(gg);\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n } else if (matteType === 2) {\n var maskGroup = createNS('mask');\n maskGroup.setAttribute('id', id);\n maskGroup.setAttribute('mask-type', 'alpha');\n var maskGrouper = createNS('g');\n maskGroup.appendChild(maskGrouper);\n filId = createElementID();\n fil = filtersFactory.createFilter(filId); /// /\n\n var feCTr = createNS('feComponentTransfer');\n feCTr.setAttribute('in', 'SourceGraphic');\n fil.appendChild(feCTr);\n var feFunc = createNS('feFuncA');\n feFunc.setAttribute('type', 'table');\n feFunc.setAttribute('tableValues', '1.0 0.0');\n feCTr.appendChild(feFunc); /// /\n\n this.globalData.defs.appendChild(fil);\n var alphaRect = createNS('rect');\n alphaRect.setAttribute('width', this.comp.data.w);\n alphaRect.setAttribute('height', this.comp.data.h);\n alphaRect.setAttribute('x', '0');\n alphaRect.setAttribute('y', '0');\n alphaRect.setAttribute('fill', '#ffffff');\n alphaRect.setAttribute('opacity', '0');\n maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n maskGrouper.appendChild(alphaRect);\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n maskGrouper.appendChild(useElement);\n\n if (!featureSupport.maskType) {\n maskGroup.setAttribute('mask-type', 'luminance');\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n maskGrouper.appendChild(alphaRect);\n gg.appendChild(this.layerElement);\n maskGrouper.appendChild(gg);\n }\n\n this.globalData.defs.appendChild(maskGroup);\n }\n\n this.matteMasks[matteType] = id;\n }\n\n return this.matteMasks[matteType];\n },\n setMatte: function setMatte(id) {\n if (!this.matteElement) {\n return;\n }\n\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n }\n };\n\n /**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\n function HierarchyElement() {}\n\n HierarchyElement.prototype = {\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\n initHierarchy: function initHierarchy() {\n // element's parent list\n this.hierarchy = []; // if element is parent of another layer _isParent will be true\n\n this._isParent = false;\n this.checkParenting();\n },\n\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\n setHierarchy: function setHierarchy(hierarchy) {\n this.hierarchy = hierarchy;\n },\n\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\n setAsParent: function setAsParent() {\n this._isParent = true;\n },\n\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\n checkParenting: function checkParenting() {\n if (this.data.parent !== undefined) {\n this.comp.buildElementParenting(this, this.data.parent, []);\n }\n }\n };\n\n function RenderableDOMElement() {}\n\n (function () {\n var _prototype = {\n initElement: function initElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n },\n hide: function hide() {\n // console.log('HIDE', this);\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'none';\n this.hidden = true;\n }\n },\n show: function show() {\n // console.log('SHOW', this);\n if (this.isInRange && !this.isTransparent) {\n if (!this.data.hd) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'block';\n }\n\n this.hidden = false;\n this._isFirstFrame = true;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n renderInnerContent: function renderInnerContent() {},\n prepareFrame: function prepareFrame(num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n this.checkTransparency();\n },\n destroy: function destroy() {\n this.innerElem = null;\n this.destroyBaseElement();\n }\n };\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\n })();\n\n function IImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n\n if (this.assetData && this.assetData.sid) {\n this.assetData = globalData.slotManager.getProp(this.assetData);\n }\n\n this.initElement(data, globalData, comp);\n this.sourceRect = {\n top: 0,\n left: 0,\n width: this.assetData.w,\n height: this.assetData.h\n };\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n\n IImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.innerElem = createNS('image');\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.innerElem);\n };\n\n IImageElement.prototype.sourceRectAtTime = function () {\n return this.sourceRect;\n };\n\n function ProcessedElement(element, position) {\n this.elem = element;\n this.pos = position;\n }\n\n function IShapeElement() {}\n\n IShapeElement.prototype = {\n addShapeToModifiers: function addShapeToModifiers(data) {\n var i;\n var len = this.shapeModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapeModifiers[i].addShape(data);\n }\n },\n isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\n var i = 0;\n var len = this.shapeModifiers.length;\n\n while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true;\n }\n }\n\n return false;\n },\n renderModifiers: function renderModifiers() {\n if (!this.shapeModifiers.length) {\n return;\n }\n\n var i;\n var len = this.shapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset();\n }\n\n len = this.shapeModifiers.length;\n var shouldBreakProcess;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n // TODO: find a better solution for this\n\n if (shouldBreakProcess) {\n break;\n }\n }\n },\n searchProcessedElement: function searchProcessedElement(elem) {\n var elements = this.processedElements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos;\n }\n\n i += 1;\n }\n\n return 0;\n },\n addProcessedElement: function addProcessedElement(elem, pos) {\n var elements = this.processedElements;\n var i = elements.length;\n\n while (i) {\n i -= 1;\n\n if (elements[i].elem === elem) {\n elements[i].pos = pos;\n return;\n }\n }\n\n elements.push(new ProcessedElement(elem, pos));\n },\n prepareFrame: function prepareFrame(num) {\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n }\n };\n\n var lineCapEnum = {\n 1: 'butt',\n 2: 'round',\n 3: 'square'\n };\n var lineJoinEnum = {\n 1: 'miter',\n 2: 'round',\n 3: 'bevel'\n };\n\n function SVGShapeData(transformers, level, shape) {\n this.caches = [];\n this.styles = [];\n this.transformers = transformers;\n this.lStr = '';\n this.sh = shape;\n this.lvl = level; // TODO find if there are some cases where _isAnimated can be false.\n // For now, since shapes add up with other shapes. They have to be calculated every time.\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\n\n this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\n\n var i = 0;\n var len = transformers.length;\n\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true;\n break;\n }\n\n i += 1;\n }\n }\n\n SVGShapeData.prototype.setAsAnimated = function () {\n this._isAnimated = true;\n };\n\n function SVGStyleData(data, level) {\n this.data = data;\n this.type = data.ty;\n this.d = '';\n this.lvl = level;\n this._mdf = false;\n this.closed = data.hd === true;\n this.pElem = createNS('path');\n this.msElem = null;\n }\n\n SVGStyleData.prototype.reset = function () {\n this.d = '';\n this._mdf = false;\n };\n\n function DashProperty(elem, data, renderer, container) {\n this.elem = elem;\n this.frameId = -1;\n this.dataProps = createSizedArray(data.length);\n this.renderer = renderer;\n this.k = false;\n this.dashStr = '';\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\n this.dashoffset = createTypedArray('float32', 1);\n this.initDynamicPropertyContainer(container);\n var i;\n var len = data.length || 0;\n var prop;\n\n for (i = 0; i < len; i += 1) {\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\n this.k = prop.k || this.k;\n this.dataProps[i] = {\n n: data[i].n,\n p: prop\n };\n }\n\n if (!this.k) {\n this.getValue(true);\n }\n\n this._isAnimated = this.k;\n }\n\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || forceRender;\n\n if (this._mdf) {\n var i = 0;\n var len = this.dataProps.length;\n\n if (this.renderer === 'svg') {\n this.dashStr = '';\n }\n\n for (i = 0; i < len; i += 1) {\n if (this.dataProps[i].n !== 'o') {\n if (this.renderer === 'svg') {\n this.dashStr += ' ' + this.dataProps[i].p.v;\n } else {\n this.dashArray[i] = this.dataProps[i].p.v;\n }\n } else {\n this.dashoffset[0] = this.dataProps[i].p.v;\n }\n }\n }\n };\n\n extendPrototype([DynamicPropertyContainer], DashProperty);\n\n function SVGStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\n\n function SVGFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\n\n function SVGNoStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\n\n function GradientProperty(elem, data, container) {\n this.data = data;\n this.c = createTypedArray('uint8c', data.p * 4);\n var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\n this.o = createTypedArray('float32', cLength);\n this._cmdf = false;\n this._omdf = false;\n this._collapsable = this.checkCollapsable();\n this._hasOpacity = cLength;\n this.initDynamicPropertyContainer(container);\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\n this.k = this.prop.k;\n this.getValue(true);\n }\n\n GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0;\n var len = this.o.length / 2;\n var diff;\n\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n\n if (diff > 0.01) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n };\n\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false;\n }\n\n if (this.data.k.k[0].s) {\n var i = 0;\n var len = this.data.k.k.length;\n\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false;\n }\n\n i += 1;\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false;\n }\n\n return true;\n };\n\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue();\n this._mdf = false;\n this._cmdf = false;\n this._omdf = false;\n\n if (this.prop._mdf || forceRender) {\n var i;\n var len = this.data.p * 4;\n var mult;\n var val;\n\n for (i = 0; i < len; i += 1) {\n mult = i % 4 === 0 ? 100 : 255;\n val = Math.round(this.prop.v[i] * mult);\n\n if (this.c[i] !== val) {\n this.c[i] = val;\n this._cmdf = !forceRender;\n }\n }\n\n if (this.o.length) {\n len = this.prop.v.length;\n\n for (i = this.data.p * 4; i < len; i += 1) {\n mult = i % 2 === 0 ? 100 : 1;\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\n\n if (this.o[i - this.data.p * 4] !== val) {\n this.o[i - this.data.p * 4] = val;\n this._omdf = !forceRender;\n }\n }\n }\n\n this._mdf = !forceRender;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], GradientProperty);\n\n function SVGGradientFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.initGradientData(elem, data, styleOb);\n }\n\n SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\n this.h = PropertyFactory.getProp(elem, data.h || {\n k: 0\n }, 0, 0.01, this);\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: 0\n }, 0, degToRads, this);\n this.g = new GradientProperty(elem, data.g, this);\n this.style = styleOb;\n this.stops = [];\n this.setGradientData(styleOb.pElem, data);\n this.setGradientOpacity(data, styleOb);\n this._isAnimated = !!this._isAnimated;\n };\n\n SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n var gradientId = createElementID();\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n gfill.setAttribute('id', gradientId);\n gfill.setAttribute('spreadMethod', 'pad');\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\n var stops = [];\n var stop;\n var j;\n var jLen;\n jLen = data.g.p * 4;\n\n for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop');\n gfill.appendChild(stop);\n stops.push(stop);\n }\n\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n this.gf = gfill;\n this.cst = stops;\n };\n\n SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n if (this.g._hasOpacity && !this.g._collapsable) {\n var stop;\n var j;\n var jLen;\n var mask = createNS('mask');\n var maskElement = createNS('path');\n mask.appendChild(maskElement);\n var opacityId = createElementID();\n var maskId = createElementID();\n mask.setAttribute('id', maskId);\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n opFill.setAttribute('id', opacityId);\n opFill.setAttribute('spreadMethod', 'pad');\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\n var stops = this.stops;\n\n for (j = data.g.p * 4; j < jLen; j += 2) {\n stop = createNS('stop');\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\n opFill.appendChild(stop);\n stops.push(stop);\n }\n\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n this.of = opFill;\n this.ms = mask;\n this.ost = stops;\n this.maskId = maskId;\n styleOb.msElem = maskElement;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\n\n function SVGGradientStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.initGradientData(elem, data, styleOb);\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\n\n function ShapeGroupData() {\n this.it = [];\n this.prevViewData = [];\n this.gr = createNS('g');\n }\n\n function SVGTransformData(mProps, op, container) {\n this.transform = {\n mProps: mProps,\n op: op,\n container: container\n };\n this.elements = [];\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\n }\n\n var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\n if (length === 0) {\n return '';\n }\n\n var _o = pathNodes.o;\n var _i = pathNodes.i;\n var _v = pathNodes.v;\n var i;\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n\n for (i = 1; i < length; i += 1) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\n }\n\n if (closed && length) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n shapeString += 'z';\n }\n\n return shapeString;\n };\n\n var SVGElementsRenderer = function () {\n var _identityMatrix = new Matrix();\n\n var _matrixHelper = new Matrix();\n\n var ob = {\n createRenderFunction: createRenderFunction\n };\n\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill;\n\n case 'gf':\n return renderGradient;\n\n case 'gs':\n return renderGradientStroke;\n\n case 'st':\n return renderStroke;\n\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath;\n\n case 'tr':\n return renderContentTransform;\n\n case 'no':\n return renderNoop;\n\n default:\n return null;\n }\n }\n\n function renderContentTransform(styleData, itemData, isFirstFrame) {\n if (isFirstFrame || itemData.transform.op._mdf) {\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\n }\n\n if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n }\n }\n\n function renderNoop() {}\n\n function renderPath(styleData, itemData, isFirstFrame) {\n var j;\n var jLen;\n var pathStringTransformed;\n var redraw;\n var pathNodes;\n var l;\n var lLen = itemData.styles.length;\n var lvl = itemData.lvl;\n var paths;\n var mat;\n var iterations;\n var k;\n\n for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame;\n\n if (itemData.styles[l].lvl < lvl) {\n mat = _matrixHelper.reset();\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw;\n iterations -= 1;\n k -= 1;\n }\n\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (iterations > 0) {\n mat.multiply(itemData.transformers[k].mProps.v);\n iterations -= 1;\n k -= 1;\n }\n }\n } else {\n mat = _identityMatrix;\n }\n\n paths = itemData.sh.paths;\n jLen = paths._length;\n\n if (redraw) {\n pathStringTransformed = '';\n\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n }\n }\n\n itemData.caches[l] = pathStringTransformed;\n } else {\n pathStringTransformed = itemData.caches[l];\n }\n\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n }\n }\n\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n }\n }\n\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame);\n renderStroke(styleData, itemData, isFirstFrame);\n }\n\n function renderGradient(styleData, itemData, isFirstFrame) {\n var gfill = itemData.gf;\n var hasOpacity = itemData.g._hasOpacity;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (itemData.o._mdf || isFirstFrame) {\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\n }\n\n if (itemData.s._mdf || isFirstFrame) {\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\n gfill.setAttribute(attr1, pt1[0]);\n gfill.setAttribute(attr2, pt1[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0]);\n itemData.of.setAttribute(attr2, pt1[1]);\n }\n }\n\n var stops;\n var i;\n var len;\n var stop;\n\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst;\n var cValues = itemData.g.c;\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n stop.setAttribute('offset', cValues[i * 4] + '%');\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\n }\n }\n\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o;\n\n if (itemData.g._collapsable) {\n stops = itemData.cst;\n } else {\n stops = itemData.ost;\n }\n\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%');\n }\n\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n }\n }\n\n if (styleData.t === 1) {\n if (itemData.e._mdf || isFirstFrame) {\n gfill.setAttribute('x2', pt2[0]);\n gfill.setAttribute('y2', pt2[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('x2', pt2[0]);\n itemData.of.setAttribute('y2', pt2[1]);\n }\n }\n } else {\n var rad;\n\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n gfill.setAttribute('r', rad);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad);\n }\n }\n\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n if (!rad) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n }\n\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n gfill.setAttribute('fx', x);\n gfill.setAttribute('fy', y);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x);\n itemData.of.setAttribute('fy', y);\n }\n } // gfill.setAttribute('fy','200');\n\n }\n }\n\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\n }\n\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n }\n\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n }\n }\n }\n\n return ob;\n }();\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = []; // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n\n SVGShapeElement.prototype.initSecondaryElement = function () {};\n\n SVGShapeElement.prototype.identityMatrix = new Matrix();\n\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\n\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n };\n /*\r\n This method searches for multiple shapes that affect a single element and one of them is animated\r\n */\n\n\n SVGShapeElement.prototype.filterUniqueShapes = function () {\n var i;\n var len = this.shapes.length;\n var shape;\n var j;\n var jLen = this.stylesList.length;\n var style;\n var tempShapes = [];\n var areAnimated = false;\n\n for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j];\n areAnimated = false;\n tempShapes.length = 0;\n\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i];\n\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape);\n areAnimated = shape._isAnimated || areAnimated;\n }\n }\n\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes);\n }\n }\n };\n\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i;\n var len = shapes.length;\n\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated();\n }\n };\n\n SVGShapeElement.prototype.createStyleElement = function (data, level) {\n // TODO: prevent drawing of hidden styles\n var elementData;\n var styleOb = new SVGStyleData(data, level);\n var pathElement = styleOb.pElem;\n\n if (data.ty === 'st') {\n elementData = new SVGStrokeStyleData(this, data, styleOb);\n } else if (data.ty === 'fl') {\n elementData = new SVGFillStyleData(this, data, styleOb);\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\n elementData = new GradientConstructor(this, data, styleOb);\n this.globalData.defs.appendChild(elementData.gf);\n\n if (elementData.maskId) {\n this.globalData.defs.appendChild(elementData.ms);\n this.globalData.defs.appendChild(elementData.of);\n pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\n }\n } else if (data.ty === 'no') {\n elementData = new SVGNoStyleData(this, data, styleOb);\n }\n\n if (data.ty === 'st' || data.ty === 'gs') {\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n pathElement.setAttribute('fill-opacity', '0');\n\n if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd');\n }\n\n if (data.ln) {\n pathElement.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n pathElement.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n this.stylesList.push(styleOb);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData();\n\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n return elementData;\n };\n\n SVGShapeElement.prototype.createTransformElement = function (data, container) {\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0;\n var len = this.animatedContents.length;\n\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return;\n }\n\n i += 1;\n }\n\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data\n });\n };\n\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles;\n var j;\n var jLen = this.stylesList.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (!this.stylesList[j].closed) {\n arr.push(this.stylesList[j]);\n }\n }\n };\n\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n };\n\n SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\n var ownTransformers = [].concat(transformers);\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var currentTransform;\n var modifier;\n var processedPos;\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._render = render;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], level);\n } else {\n itemsData[i].style.closed = false;\n }\n\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem);\n }\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n\n if (arr[i]._render) {\n if (itemsData[i].gr.parentNode !== container) {\n container.appendChild(itemsData[i].gr);\n }\n }\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n itemsData[i] = this.createTransformElement(arr[i], container);\n }\n\n currentTransform = itemsData[i].transform;\n ownTransformers.push(currentTransform);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\n }\n\n this.setElementStyles(itemsData[i]);\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n render = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n len = ownStyles.length;\n\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true;\n }\n\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers();\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset();\n }\n\n this.renderShape();\n\n for (i = 0; i < len; i += 1) {\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\n if (this.stylesList[i].msElem) {\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); // Adding M0 0 fixes same mask bug on all browsers\n\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n }\n\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n }\n }\n };\n\n SVGShapeElement.prototype.renderShape = function () {\n var i;\n var len = this.animatedContents.length;\n var animatedContent;\n\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i];\n\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n }\n }\n };\n\n SVGShapeElement.prototype.destroy = function () {\n this.destroyBaseElement();\n this.shapesData = null;\n this.itemsData = null;\n };\n\n function LetterProps(o, sw, sc, fc, m, p) {\n this.o = o;\n this.sw = sw;\n this.sc = sc;\n this.fc = fc;\n this.m = m;\n this.p = p;\n this._mdf = {\n o: true,\n sw: !!sw,\n sc: !!sc,\n fc: !!fc,\n m: true,\n p: true\n };\n }\n\n LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n this._mdf.o = false;\n this._mdf.sw = false;\n this._mdf.sc = false;\n this._mdf.fc = false;\n this._mdf.m = false;\n this._mdf.p = false;\n var updated = false;\n\n if (this.o !== o) {\n this.o = o;\n this._mdf.o = true;\n updated = true;\n }\n\n if (this.sw !== sw) {\n this.sw = sw;\n this._mdf.sw = true;\n updated = true;\n }\n\n if (this.sc !== sc) {\n this.sc = sc;\n this._mdf.sc = true;\n updated = true;\n }\n\n if (this.fc !== fc) {\n this.fc = fc;\n this._mdf.fc = true;\n updated = true;\n }\n\n if (this.m !== m) {\n this.m = m;\n this._mdf.m = true;\n updated = true;\n }\n\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\n this.p = p;\n this._mdf.p = true;\n updated = true;\n }\n\n return updated;\n };\n\n function TextProperty(elem, data) {\n this._frameId = initialDefaultFrame;\n this.pv = '';\n this.v = '';\n this.kf = false;\n this._isFirstFrame = true;\n this._mdf = false;\n\n if (data.d && data.d.sid) {\n data.d = elem.globalData.slotManager.getProp(data.d);\n }\n\n this.data = data;\n this.elem = elem;\n this.comp = this.elem.comp;\n this.keysIndex = 0;\n this.canResize = false;\n this.minimumFontSize = 1;\n this.effectsSequence = [];\n this.currentData = {\n ascent: 0,\n boxWidth: this.defaultBoxWidth,\n f: '',\n fStyle: '',\n fWeight: '',\n fc: '',\n j: '',\n justifyOffset: '',\n l: [],\n lh: 0,\n lineWidths: [],\n ls: '',\n of: '',\n s: '',\n sc: '',\n sw: 0,\n t: 0,\n tr: 0,\n sz: 0,\n ps: null,\n fillColorAnim: false,\n strokeColorAnim: false,\n strokeWidthAnim: false,\n yOffset: 0,\n finalSize: 0,\n finalText: [],\n finalLineHeight: 0,\n __complete: false\n };\n this.copyData(this.currentData, this.data.d.k[0].s);\n\n if (!this.searchProperty()) {\n this.completeTextData(this.currentData);\n }\n }\n\n TextProperty.prototype.defaultBoxWidth = [0, 0];\n\n TextProperty.prototype.copyData = function (obj, data) {\n for (var s in data) {\n if (Object.prototype.hasOwnProperty.call(data, s)) {\n obj[s] = data[s];\n }\n }\n\n return obj;\n };\n\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data);\n }\n\n this.currentData = data;\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n this._mdf = true;\n };\n\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes();\n };\n\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1;\n\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this));\n }\n\n return this.kf;\n };\n\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return;\n }\n\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n var currentValue = this.currentData;\n var currentIndex = this.keysIndex;\n\n if (this.lock) {\n this.setCurrentData(this.currentData);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\n\n for (i = 0; i < len; i += 1) {\n // Checking if index changed to prevent creating a new object every time the expression updates.\n if (currentIndex !== this.keysIndex) {\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\n } else {\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\n }\n }\n\n if (currentValue !== finalValue) {\n this.setCurrentData(finalValue);\n }\n\n this.v = this.currentData;\n this.pv = this.v;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n };\n\n TextProperty.prototype.getKeyframeValue = function () {\n var textKeys = this.data.d.k;\n var frameNum = this.elem.comp.renderedFrame;\n var i = 0;\n var len = textKeys.length;\n\n while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break;\n }\n\n i += 1;\n }\n\n if (this.keysIndex !== i) {\n this.keysIndex = i;\n }\n\n return this.data.d.k[this.keysIndex].s;\n };\n\n TextProperty.prototype.buildFinalText = function (text) {\n var charactersArray = [];\n var i = 0;\n var len = text.length;\n var charCode;\n var secondCharCode;\n var shouldCombine = false;\n var shouldCombineNext = false;\n var currentChars = '';\n\n while (i < len) {\n shouldCombine = shouldCombineNext;\n shouldCombineNext = false;\n charCode = text.charCodeAt(i);\n currentChars = text.charAt(i);\n\n if (FontManager.isCombinedCharacter(charCode)) {\n shouldCombine = true; // It's a potential surrogate pair (this is the High surrogate)\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n if (FontManager.isRegionalFlag(text, i)) {\n currentChars = text.substr(i, 14);\n } else {\n secondCharCode = text.charCodeAt(i + 1); // It's a surrogate pair (this is the Low surrogate)\n\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\n if (FontManager.isModifier(charCode, secondCharCode)) {\n currentChars = text.substr(i, 2);\n shouldCombine = true;\n } else if (FontManager.isFlagEmoji(text.substr(i, 4))) {\n currentChars = text.substr(i, 4);\n } else {\n currentChars = text.substr(i, 2);\n }\n }\n }\n } else if (charCode > 0xDBFF) {\n secondCharCode = text.charCodeAt(i + 1);\n\n if (FontManager.isVariationSelector(charCode)) {\n shouldCombine = true;\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n shouldCombine = true;\n shouldCombineNext = true;\n }\n\n if (shouldCombine) {\n charactersArray[charactersArray.length - 1] += currentChars;\n shouldCombine = false;\n } else {\n charactersArray.push(currentChars);\n }\n\n i += currentChars.length;\n }\n\n return charactersArray;\n };\n\n TextProperty.prototype.completeTextData = function (documentData) {\n documentData.__complete = true;\n var fontManager = this.elem.globalData.fontManager;\n var data = this.data;\n var letters = [];\n var i;\n var len;\n var newLineFlag;\n var index = 0;\n var val;\n var anchorGrouping = data.m.g;\n var currentSize = 0;\n var currentPos = 0;\n var currentLine = 0;\n var lineWidths = [];\n var lineWidth = 0;\n var maxLineWidth = 0;\n var j;\n var jLen;\n var fontData = fontManager.getFontByName(documentData.f);\n var charData;\n var cLength = 0;\n var fontProps = getFontProperties(fontData);\n documentData.fWeight = fontProps.weight;\n documentData.fStyle = fontProps.style;\n documentData.finalSize = documentData.s;\n documentData.finalText = this.buildFinalText(documentData.t);\n len = documentData.finalText.length;\n documentData.finalLineHeight = documentData.lh;\n var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var charCode;\n\n if (documentData.sz) {\n var flag = true;\n var boxWidth = documentData.sz[0];\n var boxHeight = documentData.sz[1];\n var currentHeight;\n var finalText;\n\n while (flag) {\n finalText = this.buildFinalText(documentData.t);\n currentHeight = 0;\n lineWidth = 0;\n len = finalText.length;\n trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var lastSpaceIndex = -1;\n\n for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0);\n newLineFlag = false;\n\n if (finalText[i] === ' ') {\n lastSpaceIndex = i;\n } else if (charCode === 13 || charCode === 3) {\n lineWidth = 0;\n newLineFlag = true;\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\n }\n\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1;\n } else {\n i = lastSpaceIndex;\n }\n\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n\n lastSpaceIndex = -1;\n lineWidth = 0;\n } else {\n lineWidth += cLength;\n lineWidth += trackingOffset;\n }\n }\n\n currentHeight += fontData.ascent * documentData.finalSize / 100;\n\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n documentData.finalSize -= 1;\n documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\n } else {\n documentData.finalText = finalText;\n len = documentData.finalText.length;\n flag = false;\n }\n }\n }\n\n lineWidth = -trackingOffset;\n cLength = 0;\n var uncollapsedSpaces = 0;\n var currentChar;\n\n for (i = 0; i < len; i += 1) {\n newLineFlag = false;\n currentChar = documentData.finalText[i];\n charCode = currentChar.charCodeAt(0);\n\n if (charCode === 13 || charCode === 3) {\n uncollapsedSpaces = 0;\n lineWidths.push(lineWidth);\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidth = -2 * trackingOffset;\n val = '';\n newLineFlag = true;\n currentLine += 1;\n } else {\n val = currentChar;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\n } //\n\n\n if (currentChar === ' ') {\n uncollapsedSpaces += cLength + trackingOffset;\n } else {\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\n uncollapsedSpaces = 0;\n }\n\n letters.push({\n l: cLength,\n an: cLength,\n add: currentSize,\n n: newLineFlag,\n anIndexes: [],\n val: val,\n line: currentLine,\n animatorJustifyOffset: 0\n });\n\n if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n index += 1;\n currentSize = 0;\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n currentSize = 0;\n index += 1;\n }\n } else {\n letters[index].ind = index;\n letters[index].extra = 0;\n index += 1;\n }\n }\n\n documentData.l = letters;\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidths.push(lineWidth);\n\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0];\n documentData.justifyOffset = 0;\n } else {\n documentData.boxWidth = maxLineWidth;\n\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth;\n break;\n\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2;\n break;\n\n default:\n documentData.justifyOffset = 0;\n }\n }\n\n documentData.lineWidths = lineWidths;\n var animators = data.a;\n var animatorData;\n var letterData;\n jLen = animators.length;\n var based;\n var ind;\n var indexes = [];\n\n for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j];\n\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true;\n }\n\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true;\n }\n\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true;\n }\n\n ind = 0;\n based = animatorData.s.b;\n\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n letterData.anIndexes[j] = ind;\n\n if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\n // eslint-disable-line eqeqeq\n if (animatorData.s.rn === 1) {\n indexes.push(ind);\n }\n\n ind += 1;\n }\n }\n\n data.a[j].s.totalChars = ind;\n var currentInd = -1;\n var newInd;\n\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n\n if (currentInd != letterData.anIndexes[j]) {\n // eslint-disable-line eqeqeq\n currentInd = letterData.anIndexes[j];\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\n }\n\n letterData.anIndexes[j] = newInd;\n }\n }\n }\n\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\n documentData.ls = documentData.ls || 0;\n documentData.ascent = fontData.ascent * documentData.finalSize / 100;\n };\n\n TextProperty.prototype.updateDocumentData = function (newData, index) {\n index = index === undefined ? this.keysIndex : index;\n var dData = this.copyData({}, this.data.d.k[index].s);\n dData = this.copyData(dData, newData);\n this.data.d.k[index].s = dData;\n this.recalculate(index);\n this.setCurrentData(dData);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.recalculate = function (index) {\n var dData = this.data.d.k[index].s;\n dData.__complete = false;\n this.keysIndex = 0;\n this._isFirstFrame = true;\n this.getValue(dData);\n };\n\n TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n this.minimumFontSize = Math.floor(_fontValue) || 1;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n var TextSelectorProp = function () {\n var max = Math.max;\n var min = Math.min;\n var floor = Math.floor;\n\n function TextSelectorPropFactory(elem, data) {\n this._currentTextLength = -1;\n this.k = false;\n this.data = data;\n this.elem = elem;\n this.comp = elem.comp;\n this.finalS = 0;\n this.finalE = 0;\n this.initDynamicPropertyContainer(elem);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: 0\n }, 0, 0, this);\n\n if ('e' in data) {\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\n } else {\n this.e = {\n v: 100\n };\n }\n\n this.o = PropertyFactory.getProp(elem, data.o || {\n k: 0\n }, 0, 0, this);\n this.xe = PropertyFactory.getProp(elem, data.xe || {\n k: 0\n }, 0, 0, this);\n this.ne = PropertyFactory.getProp(elem, data.ne || {\n k: 0\n }, 0, 0, this);\n this.sm = PropertyFactory.getProp(elem, data.sm || {\n k: 100\n }, 0, 0, this);\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\n\n if (!this.dynamicProperties.length) {\n this.getValue();\n }\n }\n\n TextSelectorPropFactory.prototype = {\n getMult: function getMult(ind) {\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n this.getValue();\n }\n\n var x1 = 0;\n var y1 = 0;\n var x2 = 1;\n var y2 = 1;\n\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0;\n } else {\n y1 = -this.ne.v / 100.0;\n }\n\n if (this.xe.v > 0) {\n x2 = 1.0 - this.xe.v / 100.0;\n } else {\n y2 = 1.0 + this.xe.v / 100.0;\n }\n\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\n var mult = 0;\n var s = this.finalS;\n var e = this.finalE;\n var type = this.data.sh;\n\n if (type === 2) {\n if (e === s) {\n mult = ind >= e ? 1 : 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 3) {\n if (e === s) {\n mult = ind >= e ? 0 : 1;\n } else {\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 4) {\n if (e === s) {\n mult = 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n\n if (mult < 0.5) {\n mult *= 2;\n } else {\n mult = 1 - 2 * (mult - 0.5);\n }\n }\n\n mult = easer(mult);\n } else if (type === 5) {\n if (e === s) {\n mult = 0;\n } else {\n var tot = e - s;\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n\n ind = min(max(0, ind + 0.5 - s), e - s);\n var x = -tot / 2 + ind;\n var a = tot / 2;\n mult = Math.sqrt(1 - x * x / (a * a));\n }\n\n mult = easer(mult);\n } else if (type === 6) {\n if (e === s) {\n mult = 0;\n } else {\n ind = min(max(0, ind + 0.5 - s), e - s);\n mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\n }\n\n mult = easer(mult);\n } else {\n if (ind >= floor(s)) {\n if (ind - s < 0) {\n mult = max(0, min(min(e, 1) - (s - ind), 1));\n } else {\n mult = max(0, min(e - ind, 1));\n }\n }\n\n mult = easer(mult);\n } // Smoothness implementation.\n // The smoothness represents a reduced range of the original [0; 1] range.\n // if smoothness is 25%, the new range will be [0.375; 0.625]\n // Steps are:\n // - find the lower value of the new range (threshold)\n // - if multiplier is smaller than that value, floor it to 0\n // - if it is larger,\n // - subtract the threshold\n // - divide it by the smoothness (this will return the range to [0; 1])\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n\n\n if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01;\n\n if (smoothness === 0) {\n smoothness = 0.00000001;\n }\n\n var threshold = 0.5 - smoothness * 0.5;\n\n if (mult < threshold) {\n mult = 0;\n } else {\n mult = (mult - threshold) / smoothness;\n\n if (mult > 1) {\n mult = 1;\n }\n }\n }\n\n return mult * this.a.v;\n },\n getValue: function getValue(newCharsFlag) {\n this.iterateDynamicProperties();\n this._mdf = newCharsFlag || this._mdf;\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\n\n if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength;\n }\n\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\n var o = this.o.v / divisor;\n var s = this.s.v / divisor + o;\n var e = this.e.v / divisor + o;\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n this.finalS = s;\n this.finalE = e;\n }\n };\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr);\n }\n\n return {\n getTextSelectorProp: getTextSelectorProp\n };\n }();\n\n function TextAnimatorDataProperty(elem, animatorProps, container) {\n var defaultData = {\n propType: false\n };\n var getProp = PropertyFactory.getProp;\n var textAnimatorAnimatables = animatorProps.a;\n this.a = {\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\n };\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\n this.s.t = animatorProps.s.t;\n }\n\n function TextAnimatorProperty(textData, renderType, elem) {\n this._isFirstFrame = true;\n this._hasMaskedPath = false;\n this._frameId = -1;\n this._textData = textData;\n this._renderType = renderType;\n this._elem = elem;\n this._animatorsData = createSizedArray(this._textData.a.length);\n this._pathData = {};\n this._moreOptions = {\n alignment: {}\n };\n this.renderedLetters = [];\n this.lettersChangedFlag = false;\n this.initDynamicPropertyContainer(elem);\n }\n\n TextAnimatorProperty.prototype.searchProperties = function () {\n var i;\n var len = this._textData.a.length;\n var animatorProps;\n var getProp = PropertyFactory.getProp;\n\n for (i = 0; i < len; i += 1) {\n animatorProps = this._textData.a[i];\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\n }\n\n if (this._textData.p && 'm' in this._textData.p) {\n this._pathData = {\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\n };\n this._hasMaskedPath = true;\n } else {\n this._hasMaskedPath = false;\n }\n\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n };\n\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag;\n\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return;\n }\n\n this._isFirstFrame = false;\n var alignment = this._moreOptions.alignment.v;\n var animators = this._animatorsData;\n var textData = this._textData;\n var matrixHelper = this.mHelper;\n var renderType = this._renderType;\n var renderedLettersCount = this.renderedLetters.length;\n var xPos;\n var yPos;\n var i;\n var len;\n var letters = documentData.l;\n var pathInfo;\n var currentLength;\n var currentPoint;\n var segmentLength;\n var flag;\n var pointInd;\n var segmentInd;\n var prevPoint;\n var points;\n var segments;\n var partialLength;\n var totalLength;\n var perc;\n var tanAngle;\n var mask;\n\n if (this._hasMaskedPath) {\n mask = this._pathData.m;\n\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v;\n\n if (this._pathData.r.v) {\n paths = paths.reverse();\n } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n\n\n pathInfo = {\n tLength: 0,\n segments: []\n };\n len = paths._length - 1;\n var bezierData;\n totalLength = 0;\n\n for (i = 0; i < len; i += 1) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n i = len;\n\n if (mask.v.c) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n this._pathData.pi = pathInfo;\n }\n\n pathInfo = this._pathData.pi;\n currentLength = this._pathData.f.v;\n segmentInd = 0;\n pointInd = 1;\n segmentLength = 0;\n flag = true;\n segments = pathInfo.segments;\n\n if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n }\n\n segmentInd = segments.length - 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength;\n pointInd -= 1;\n\n if (pointInd < 0) {\n segmentInd -= 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n }\n }\n }\n\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n\n len = letters.length;\n xPos = 0;\n yPos = 0;\n var yOff = documentData.finalSize * 1.2 * 0.714;\n var firstLine = true;\n var animatorProps;\n var animatorSelector;\n var j;\n var jLen;\n var letterValue;\n jLen = animators.length;\n var mult;\n var ind = -1;\n var offf;\n var xPathPos;\n var yPathPos;\n var initPathPos = currentLength;\n var initSegmentInd = segmentInd;\n var initPointInd = pointInd;\n var currentLine = -1;\n var elemOpacity;\n var sc;\n var sw;\n var fc;\n var k;\n var letterSw;\n var letterSc;\n var letterFc;\n var letterM = '';\n var letterP = this.defaultPropsArray;\n var letterO; //\n\n if (documentData.j === 2 || documentData.j === 1) {\n var animatorJustifyOffset = 0;\n var animatorFirstCharOffset = 0;\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\n var lastIndex = 0;\n var isNewLine = true;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n\n animatorJustifyOffset = 0;\n isNewLine = true;\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n }\n\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\n } else {\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\n }\n }\n }\n\n isNewLine = false;\n }\n }\n\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n } //\n\n\n for (i = 0; i < len; i += 1) {\n matrixHelper.reset();\n elemOpacity = 1;\n\n if (letters[i].n) {\n xPos = 0;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n currentLength = initPathPos;\n firstLine = false;\n\n if (this._hasMaskedPath) {\n segmentInd = initSegmentInd;\n pointInd = initPointInd;\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n segmentLength = 0;\n }\n\n letterM = '';\n letterFc = '';\n letterSw = '';\n letterO = '';\n letterP = this.defaultPropsArray;\n } else {\n if (this._hasMaskedPath) {\n if (currentLine !== letters[i].line) {\n switch (documentData.j) {\n case 1:\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\n break;\n\n case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n break;\n\n default:\n break;\n }\n\n currentLine = letters[i].line;\n }\n\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra;\n }\n\n currentLength += letters[i].an / 2;\n ind = letters[i].ind;\n }\n\n currentLength += alignment[0] * letters[i].an * 0.005;\n var animatorOffset = 0;\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.p.v[0] * mult;\n }\n }\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.a.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.a.v[0] * mult;\n }\n }\n }\n\n flag = true; // Force alignment only works with a single line for now\n\n if (this._pathData.a.v) {\n currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\n currentLength += this._pathData.f.v;\n }\n\n while (flag) {\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\n flag = false;\n } else if (points) {\n segmentLength += currentPoint.partialLength;\n pointInd += 1;\n\n if (pointInd >= points.length) {\n pointInd = 0;\n segmentInd += 1;\n\n if (!segments[segmentInd]) {\n if (mask.v.c) {\n pointInd = 0;\n segmentInd = 0;\n points = segments[segmentInd].points;\n } else {\n segmentLength -= currentPoint.partialLength;\n points = null;\n }\n } else {\n points = segments[segmentInd].points;\n }\n }\n\n if (points) {\n prevPoint = currentPoint;\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n }\n }\n\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0);\n } else {\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0); // Grouping alignment\n\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n\n if (xPos !== 0 || documentData.j !== 0) {\n if (this._hasMaskedPath) {\n if (mult.length) {\n currentLength += animatorProps.t.v * mult[0];\n } else {\n currentLength += animatorProps.t.v * mult;\n }\n } else if (mult.length) {\n xPos += animatorProps.t.v * mult[0];\n } else {\n xPos += animatorProps.t.v * mult;\n }\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0;\n }\n\n if (documentData.strokeColorAnim) {\n if (documentData.sc) {\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\n } else {\n sc = [0, 0, 0];\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\n } else {\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\n } else {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (animatorProps.sk.propType) {\n if (mult.length) {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\n } else {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\n }\n }\n\n if (animatorProps.r.propType) {\n if (mult.length) {\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\n } else {\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\n }\n }\n\n if (animatorProps.ry.propType) {\n if (mult.length) {\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\n } else {\n matrixHelper.rotateY(animatorProps.ry.v * mult);\n }\n }\n\n if (animatorProps.rx.propType) {\n if (mult.length) {\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\n } else {\n matrixHelper.rotateX(animatorProps.rx.v * mult);\n }\n }\n\n if (animatorProps.o.propType) {\n if (mult.length) {\n elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\n } else {\n elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\n }\n }\n\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n if (mult.length) {\n sw += animatorProps.sw.v * mult[0];\n } else {\n sw += animatorProps.sw.v * mult;\n }\n }\n\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\n } else {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\n }\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n if (animatorProps.fc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\n } else {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\n }\n }\n }\n\n if (animatorProps.fh.propType) {\n if (mult.length) {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\n } else {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\n }\n }\n\n if (animatorProps.fs.propType) {\n if (mult.length) {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\n } else {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\n }\n }\n\n if (animatorProps.fb.propType) {\n if (mult.length) {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\n } else {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\n }\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (this._hasMaskedPath) {\n if (mult.length) {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\n } else {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n } else if (mult.length) {\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\n } else {\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw;\n }\n\n if (documentData.strokeColorAnim) {\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\n }\n\n if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n\n if (this._pathData.p.v) {\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\n var rot = Math.atan(tanAngle) * 180 / Math.PI;\n\n if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180;\n }\n\n matrixHelper.rotate(-rot * Math.PI / 180);\n }\n\n matrixHelper.translate(xPathPos, yPathPos, 0);\n currentLength -= alignment[0] * letters[i].an * 0.005;\n\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\n currentLength += letters[i].an / 2;\n currentLength += documentData.tr * 0.001 * documentData.finalSize;\n }\n } else {\n matrixHelper.translate(xPos, yPos, 0);\n\n if (documentData.ps) {\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(offf, 0, 0);\n matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\n xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\n }\n\n if (renderType === 'html') {\n letterM = matrixHelper.toCSS();\n } else if (renderType === 'svg') {\n letterM = matrixHelper.to2dCSS();\n } else {\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\n }\n\n letterO = elemOpacity;\n }\n\n if (renderedLettersCount <= i) {\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\n this.renderedLetters.push(letterValue);\n renderedLettersCount += 1;\n this.lettersChangedFlag = true;\n } else {\n letterValue = this.renderedLetters[i];\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\n }\n }\n };\n\n TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return;\n }\n\n this._frameId = this._elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n TextAnimatorProperty.prototype.mHelper = new Matrix();\n TextAnimatorProperty.prototype.defaultPropsArray = [];\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n function ITextElement() {}\n\n ITextElement.prototype.initElement = function (data, globalData, comp) {\n this.lettersChangedFlag = true;\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n this.textAnimator.searchProperties(this.dynamicProperties);\n };\n\n ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n };\n\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j;\n var jLen = shapes.length;\n var pathNodes;\n var shapeStr = '';\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n pathNodes = shapes[j].ks.k;\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\n }\n }\n\n return shapeStr;\n };\n\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index);\n };\n\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize);\n };\n\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize);\n };\n\n ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n if (documentData.ps) {\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n matrixHelper.translate(0, -documentData.ls, 0);\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(xPos, yPos, 0);\n };\n\n ITextElement.prototype.buildColor = function (colorData) {\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\n };\n\n ITextElement.prototype.emptyProp = new LetterProps();\n\n ITextElement.prototype.destroy = function () {};\n\n ITextElement.prototype.validateText = function () {\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n this.buildNewText();\n this.textProperty._isFirstFrame = false;\n this.textProperty._mdf = false;\n }\n };\n\n var emptyShapeData = {\n shapes: []\n };\n\n function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = [];\n this.renderType = 'svg';\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text');\n }\n };\n\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0;\n var len = textArray.length;\n var textContents = [];\n var currentTextContent = '';\n\n while (i < len) {\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n textContents.push(currentTextContent);\n currentTextContent = '';\n } else {\n currentTextContent += textArray[i];\n }\n\n i += 1;\n }\n\n textContents.push(currentTextContent);\n return textContents;\n };\n\n SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\n // data should probably be cloned to apply scale separately to each instance of a text on different layers\n // but since text internal content gets only rendered once and then it's never rerendered,\n // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n // Avoiding cloning is preferred since cloning each character shape data is expensive\n if (data.shapes && data.shapes.length) {\n var shape = data.shapes[0];\n\n if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1];\n\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale;\n shapeItem.s.k[1] = scale;\n }\n }\n }\n\n return data;\n };\n\n SVGTextLottieElement.prototype.buildNewText = function () {\n this.addDynamicProperty(this);\n var i;\n var len;\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\n\n if (documentData.fc) {\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\n } else {\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\n }\n\n if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n this.layerElement.setAttribute('stroke-width', documentData.sw);\n }\n\n this.layerElement.setAttribute('font-size', documentData.finalSize);\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (fontData.fClass) {\n this.layerElement.setAttribute('class', fontData.fClass);\n } else {\n this.layerElement.setAttribute('font-family', fontData.fFamily);\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n this.layerElement.setAttribute('font-style', fStyle);\n this.layerElement.setAttribute('font-weight', fWeight);\n }\n\n this.layerElement.setAttribute('aria-label', documentData.t);\n var letters = documentData.l || [];\n var usesGlyphs = !!this.globalData.fontManager.chars;\n len = letters.length;\n var tSpan;\n var matrixHelper = this.mHelper;\n var shapeStr = '';\n var singleShape = this.data.singleShape;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n\n if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer;\n var justify = 'start';\n\n switch (documentData.j) {\n case 1:\n justify = 'end';\n break;\n\n case 2:\n justify = 'middle';\n break;\n\n default:\n justify = 'start';\n break;\n }\n\n tElement.setAttribute('text-anchor', justify);\n tElement.setAttribute('letter-spacing', trackingOffset);\n var textContent = this.buildTextContents(documentData.finalText);\n len = textContent.length;\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\n\n for (i = 0; i < len; i += 1) {\n tSpan = this.textSpans[i].span || createNS('tspan');\n tSpan.textContent = textContent[i];\n tSpan.setAttribute('x', 0);\n tSpan.setAttribute('y', yPos);\n tSpan.style.display = 'inherit';\n tElement.appendChild(tSpan);\n\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null\n };\n }\n\n this.textSpans[i].span = tSpan;\n yPos += documentData.finalLineHeight;\n }\n\n this.layerElement.appendChild(tElement);\n } else {\n var cachedSpansLength = this.textSpans.length;\n var charData;\n\n for (i = 0; i < len; i += 1) {\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n childSpan: null,\n glyph: null\n };\n }\n\n if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n\n if (cachedSpansLength <= i) {\n tSpan.setAttribute('stroke-linecap', 'butt');\n tSpan.setAttribute('stroke-linejoin', 'round');\n tSpan.setAttribute('stroke-miterlimit', '4');\n this.textSpans[i].span = tSpan;\n\n if (usesGlyphs) {\n var childSpan = createNS('g');\n tSpan.appendChild(childSpan);\n this.textSpans[i].childSpan = childSpan;\n }\n\n this.textSpans[i].span = tSpan;\n this.layerElement.appendChild(tSpan);\n }\n\n tSpan.style.display = 'inherit';\n }\n\n matrixHelper.reset();\n\n if (singleShape) {\n if (letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n\n xPos += trackingOffset;\n }\n\n if (usesGlyphs) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var glyphElement; // t === 1 means the character has been replaced with an animated shaped\n\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n } else {\n var data = emptyShapeData;\n\n if (charData.data && charData.data.shapes) {\n data = this.buildShapeData(charData.data, documentData.finalSize);\n }\n\n glyphElement = new SVGShapeElement(data, this.globalData, this);\n }\n\n if (this.textSpans[i].glyph) {\n var glyph = this.textSpans[i].glyph;\n this.textSpans[i].childSpan.removeChild(glyph.layerElement);\n glyph.destroy();\n }\n\n this.textSpans[i].glyph = glyphElement;\n glyphElement._debug = true;\n glyphElement.prepareFrame(0);\n glyphElement.renderFrame();\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n // this might have issues with strokes and might need a different solution\n\n if (charData.t === 1) {\n this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\n }\n } else {\n if (singleShape) {\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\n }\n\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n } //\n\n }\n\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr);\n }\n }\n\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none';\n i += 1;\n }\n\n this._sizeChanged = true;\n };\n\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\n this.renderInnerContent();\n\n if (this._sizeChanged) {\n this._sizeChanged = false;\n var textBox = this.layerElement.getBBox();\n this.bbox = {\n top: textBox.y,\n left: textBox.x,\n width: textBox.width,\n height: textBox.height\n };\n }\n\n return this.bbox;\n };\n\n SVGTextLottieElement.prototype.getValue = function () {\n var i;\n var len = this.textSpans.length;\n var glyphElement;\n this.renderedFrame = this.comp.renderedFrame;\n\n for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n\n if (glyphElement._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n this.validateText();\n\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n this._sizeChanged = true;\n var i;\n var len;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var glyphElement;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n textSpan = this.textSpans[i].span;\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.renderFrame();\n }\n\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o);\n }\n\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter._mdf.fc) {\n textSpan.setAttribute('fill', renderedLetter.fc);\n }\n }\n }\n }\n }\n };\n\n function ISolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([IImageElement], ISolidElement);\n\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\n\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.layerElement.appendChild(rect);\n };\n\n function NullElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initFrame();\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n }\n\n NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n NullElement.prototype.renderFrame = function () {};\n\n NullElement.prototype.getBaseElement = function () {\n return null;\n };\n\n NullElement.prototype.destroy = function () {};\n\n NullElement.prototype.sourceRectAtTime = function () {};\n\n NullElement.prototype.hide = function () {};\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n function SVGRendererBase() {}\n\n extendPrototype([BaseRenderer], SVGRendererBase);\n\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.configAnimation = function (animData) {\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n if (this.renderConfig.viewBoxSize) {\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\n } else {\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\n }\n\n if (!this.renderConfig.viewBoxOnly) {\n this.svgElement.setAttribute('width', animData.w);\n this.svgElement.setAttribute('height', animData.h);\n this.svgElement.style.width = '100%';\n this.svgElement.style.height = '100%';\n this.svgElement.style.transform = 'translate3d(0,0,0)';\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\n }\n\n if (this.renderConfig.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width);\n }\n\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height);\n }\n\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id);\n }\n\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n }\n\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // this.layerElement.style.transform = 'translate3d(0,0,0)';\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n\n this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\n\n var defs = this.globalData.defs;\n this.setupGlobalData(animData, defs);\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.data = animData;\n var maskElement = createNS('clipPath');\n var rect = createNS('rect');\n rect.setAttribute('width', animData.w);\n rect.setAttribute('height', animData.h);\n rect.setAttribute('x', 0);\n rect.setAttribute('y', 0);\n var maskId = createElementID();\n maskElement.setAttribute('id', maskId);\n maskElement.appendChild(rect);\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\n defs.appendChild(maskElement);\n this.layers = animData.layers;\n this.elements = createSizedArray(animData.layers.length);\n };\n\n SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.layerElement = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n SVGRendererBase.prototype.updateContainerSize = function () {};\n\n SVGRendererBase.prototype.findIndexByInd = function (ind) {\n var i = 0;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ind === ind) {\n return i;\n }\n }\n\n return -1;\n };\n\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n elements[pos] = true;\n var element = this.createItem(this.layers[pos]);\n elements[pos] = element;\n\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element);\n }\n\n element.initExpressions();\n }\n\n this.appendElementInPos(element, pos);\n\n if (this.layers[pos].tt) {\n var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n\n if (elementIndex === -1) {\n return;\n }\n\n if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\n this.buildItem(elementIndex);\n this.addPendingElement(element);\n } else {\n var matteElement = elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[pos].tt);\n element.setMatte(matteMask);\n }\n }\n };\n\n SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n\n if (element.data.tt) {\n var i = 0;\n var len = this.elements.length;\n\n while (i < len) {\n if (this.elements[i] === element) {\n var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\n var matteElement = this.elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[i].tt);\n element.setMatte(matteMask);\n break;\n }\n\n i += 1;\n }\n }\n }\n };\n\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return;\n }\n\n if (num === null) {\n num = this.renderedFrame;\n } else {\n this.renderedFrame = num;\n } // console.log('-------');\n // console.log('FRAME ',num);\n\n\n this.globalData.frameNum = num;\n this.globalData.frameId += 1;\n this.globalData.projectInterface.currentFrame = num;\n this.globalData._mdf = false;\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n }\n };\n\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement();\n\n if (!newElement) {\n return;\n }\n\n var i = 0;\n var nextElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n nextElement = this.elements[i].getBaseElement();\n }\n\n i += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement);\n } else {\n this.layerElement.appendChild(newElement);\n }\n };\n\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none';\n };\n\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block';\n };\n\n function ICompElement() {}\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n\n ICompElement.prototype.initElement = function (data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initRenderable();\n this.initHierarchy();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n\n if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems();\n }\n\n this.hide();\n };\n /* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n }; */\n\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n\n if (!this.isInRange && !this.data.xt) {\n return;\n }\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1;\n }\n\n this.renderedFrame = timeRemapped;\n } else {\n this.renderedFrame = num / this.data.sr;\n }\n\n var i;\n var len = this.elements.length;\n\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame);\n } // This iteration needs to be backwards because of how expressions connect between each other\n\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\n\n if (this.elements[i]._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n ICompElement.prototype.renderInnerContent = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n ICompElement.prototype.setElements = function (elems) {\n this.elements = elems;\n };\n\n ICompElement.prototype.getElements = function () {\n return this.elements;\n };\n\n ICompElement.prototype.destroyElements = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n };\n\n ICompElement.prototype.destroy = function () {\n this.destroyElements();\n this.destroyBaseElement();\n };\n\n function SVGCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = true;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n\n SVGCompElement.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function SVGRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.svgElement = createNS('svg');\n var ariaLabel = '';\n\n if (config && config.title) {\n var titleElement = createNS('title');\n var titleId = createElementID();\n titleElement.setAttribute('id', titleId);\n titleElement.textContent = config.title;\n this.svgElement.appendChild(titleElement);\n ariaLabel += titleId;\n }\n\n if (config && config.description) {\n var descElement = createNS('desc');\n var descId = createElementID();\n descElement.setAttribute('id', descId);\n descElement.textContent = config.description;\n this.svgElement.appendChild(descElement);\n ariaLabel += ' ' + descId;\n }\n\n if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n }\n\n var defs = createNS('defs');\n this.svgElement.appendChild(defs);\n var maskElement = createNS('g');\n this.svgElement.appendChild(maskElement);\n this.layerElement = maskElement;\n this.renderConfig = {\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n progressiveLoad: config && config.progressiveLoad || false,\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n viewBoxOnly: config && config.viewBoxOnly || false,\n viewBoxSize: config && config.viewBoxSize || false,\n className: config && config.className || '',\n id: config && config.id || '',\n focusable: config && config.focusable,\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '100%',\n height: config && config.filterSize && config.filterSize.height || '100%',\n x: config && config.filterSize && config.filterSize.x || '0%',\n y: config && config.filterSize && config.filterSize.y || '0%'\n },\n width: config && config.width,\n height: config && config.height,\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n defs: defs,\n renderConfig: this.renderConfig\n };\n this.elements = [];\n this.pendingElements = [];\n this.destroyed = false;\n this.rendererType = 'svg';\n }\n\n extendPrototype([SVGRendererBase], SVGRenderer);\n\n SVGRenderer.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function ShapeTransformManager() {\n this.sequences = {};\n this.sequenceList = [];\n this.transform_key_count = 0;\n }\n\n ShapeTransformManager.prototype = {\n addTransformSequence: function addTransformSequence(transforms) {\n var i;\n var len = transforms.length;\n var key = '_';\n\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_';\n }\n\n var sequence = this.sequences[key];\n\n if (!sequence) {\n sequence = {\n transforms: [].concat(transforms),\n finalTransform: new Matrix(),\n _mdf: false\n };\n this.sequences[key] = sequence;\n this.sequenceList.push(sequence);\n }\n\n return sequence;\n },\n processSequence: function processSequence(sequence, isFirstFrame) {\n var i = 0;\n var len = sequence.transforms.length;\n var _mdf = isFirstFrame;\n\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true;\n break;\n }\n\n i += 1;\n }\n\n if (_mdf) {\n sequence.finalTransform.reset();\n\n for (i = len - 1; i >= 0; i -= 1) {\n sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n }\n }\n\n sequence._mdf = _mdf;\n },\n processSequences: function processSequences(isFirstFrame) {\n var i;\n var len = this.sequenceList.length;\n\n for (i = 0; i < len; i += 1) {\n this.processSequence(this.sequenceList[i], isFirstFrame);\n }\n },\n getNewKey: function getNewKey() {\n this.transform_key_count += 1;\n return '_' + this.transform_key_count;\n }\n };\n\n var lumaLoader = function lumaLoader() {\n var id = '__lottie_element_luma_buffer';\n var lumaBuffer = null;\n var lumaBufferCtx = null;\n var svg = null; // This alternate solution has a slight delay before the filter is applied, resulting in a flicker on the first frame.\n // Keeping this here for reference, and in the future, if offscreen canvas supports url filters, this can be used.\n // For now, neither of them work for offscreen canvas, so canvas workers can't support the luma track matte mask.\n // Naming it solution 2 to mark the extra comment lines.\n\n /*\r\n var svgString = [\r\n '',\r\n '',\r\n ' ',\r\n ' ',\r\n ' ',\r\n ].join('');\r\n var blob = new Blob([svgString], { type: 'image/svg+xml' });\r\n var url = URL.createObjectURL(blob);\r\n */\n\n function createLumaSvgFilter() {\n var _svg = createNS('svg');\n\n var fil = createNS('filter');\n var matrix = createNS('feColorMatrix');\n fil.setAttribute('id', id);\n matrix.setAttribute('type', 'matrix');\n matrix.setAttribute('color-interpolation-filters', 'sRGB');\n matrix.setAttribute('values', '0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0');\n fil.appendChild(matrix);\n\n _svg.appendChild(fil);\n\n _svg.setAttribute('id', id + '_svg');\n\n if (featureSupport.svgLumaHidden) {\n _svg.style.display = 'none';\n }\n\n return _svg;\n }\n\n function loadLuma() {\n if (!lumaBuffer) {\n svg = createLumaSvgFilter();\n document.body.appendChild(svg);\n lumaBuffer = createTag('canvas');\n lumaBufferCtx = lumaBuffer.getContext('2d'); // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n lumaBufferCtx.fillRect(0, 0, 1, 1);\n }\n }\n\n function getLuma(canvas) {\n if (!lumaBuffer) {\n loadLuma();\n }\n\n lumaBuffer.width = canvas.width;\n lumaBuffer.height = canvas.height; // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n return lumaBuffer;\n }\n\n return {\n load: loadLuma,\n get: getLuma\n };\n };\n\n function createCanvas(width, height) {\n if (featureSupport.offscreenCanvas) {\n return new OffscreenCanvas(width, height);\n }\n\n var canvas = createTag('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n\n var assetLoader = function () {\n return {\n loadLumaCanvas: lumaLoader.load,\n getLumaCanvas: lumaLoader.get,\n createCanvas: createCanvas\n };\n }();\n\n var registeredEffects = {};\n\n function CVEffects(elem) {\n var i;\n var len = elem.data.ef ? elem.data.ef.length : 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect;\n filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n CVEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect(id, effect) {\n registeredEffects[id] = {\n effect: effect\n };\n }\n\n function CVMaskElement(data, element) {\n this.data = data;\n this.element = element;\n this.masksProperties = this.data.masksProperties || [];\n this.viewData = createSizedArray(this.masksProperties.length);\n var i;\n var len = this.masksProperties.length;\n var hasMasks = false;\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true;\n }\n\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n }\n\n this.hasMasks = hasMasks;\n\n if (hasMasks) {\n this.element.addRenderableComponent(this);\n }\n }\n\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return;\n }\n\n var transform = this.element.finalTransform.mat;\n var ctx = this.element.canvasContext;\n var i;\n var len = this.masksProperties.length;\n var pt;\n var pts;\n var data;\n ctx.beginPath();\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n if (this.masksProperties[i].inv) {\n ctx.moveTo(0, 0);\n ctx.lineTo(this.element.globalData.compSize.w, 0);\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\n ctx.lineTo(0, this.element.globalData.compSize.h);\n ctx.lineTo(0, 0);\n }\n\n data = this.viewData[i].v;\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\n ctx.moveTo(pt[0], pt[1]);\n var j;\n var jLen = data._length;\n\n for (j = 1; j < jLen; j += 1) {\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n }\n\n this.element.globalData.renderer.save(true);\n ctx.clip();\n };\n\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n\n CVMaskElement.prototype.destroy = function () {\n this.element = null;\n };\n\n function CVBaseElement() {}\n\n var operationsMap = {\n 1: 'source-in',\n 2: 'source-out',\n 3: 'source-in',\n 4: 'source-out'\n };\n CVBaseElement.prototype = {\n createElements: function createElements() {},\n initRendererElement: function initRendererElement() {},\n createContainerElements: function createContainerElements() {\n // If the layer is masked we will use two buffers to store each different states of the drawing\n // This solution is not ideal for several reason. But unfortunately, because of the recursive\n // nature of the render tree, it's the only simple way to make sure one inner mask doesn't override an outer mask.\n // TODO: try to reduce the size of these buffers to the size of the composition contaning the layer\n // It might be challenging because the layer most likely is transformed in some way\n if (this.data.tt >= 1) {\n this.buffers = [];\n var canvasContext = this.globalData.canvasContext;\n var bufferCanvas = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas);\n var bufferCanvas2 = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas2);\n\n if (this.data.tt >= 3 && !document._isProxy) {\n assetLoader.loadLumaCanvas();\n }\n }\n\n this.canvasContext = this.globalData.canvasContext;\n this.transformCanvas = this.globalData.transformCanvas;\n this.renderableEffectsManager = new CVEffects(this);\n this.searchEffectTransforms();\n },\n createContent: function createContent() {},\n setBlendMode: function setBlendMode() {\n var globalData = this.globalData;\n\n if (globalData.blendMode !== this.data.bm) {\n globalData.blendMode = this.data.bm;\n var blendModeValue = getBlendMode(this.data.bm);\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new CVMaskElement(this.data, this);\n this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n },\n hideElement: function hideElement() {\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n this.hidden = true;\n }\n },\n showElement: function showElement() {\n if (this.isInRange && !this.isTransparent) {\n this.hidden = false;\n this._isFirstFrame = true;\n this.maskManager._isFirstFrame = true;\n }\n },\n clearCanvas: function clearCanvas(canvasContext) {\n canvasContext.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy);\n },\n prepareLayer: function prepareLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[0];\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx); // on the first buffer we store the current state of the global drawing\n\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // The next four lines are to clear the canvas\n // TODO: Check if there is a way to clear the canvas without resetting the transform\n\n this.currentTransform = this.canvasContext.getTransform();\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform);\n }\n },\n exitLayer: function exitLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[1]; // On the second buffer we store the current state of the global drawing\n // that only contains the content of this layer\n // (if it is a composition, it also includes the nested layers)\n\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx);\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // We clear the canvas again\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform); // We draw the mask\n\n var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n mask.renderFrame(true); // We draw the second buffer (that contains the content of this layer)\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0); // If the mask is a Luma matte, we need to do two extra painting operations\n // the _isProxy check is to avoid drawing a fake canvas in workers that will throw an error\n\n if (this.data.tt >= 3 && !document._isProxy) {\n // We copy the painted mask to a buffer that has a color matrix filter applied to it\n // that applies the rgb values to the alpha channel\n var lumaBuffer = assetLoader.getLumaCanvas(this.canvasContext.canvas);\n var lumaBufferCtx = lumaBuffer.getContext('2d');\n lumaBufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n this.clearCanvas(this.canvasContext); // we repaint the context with the mask applied to it\n\n this.canvasContext.drawImage(lumaBuffer, 0, 0);\n }\n\n this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n this.canvasContext.drawImage(buffer, 0, 0); // We finally draw the first buffer (that contains the content of the global drawing)\n // We use destination-over to draw the global drawing below the current layer\n\n this.canvasContext.globalCompositeOperation = 'destination-over';\n this.canvasContext.drawImage(this.buffers[0], 0, 0);\n this.canvasContext.setTransform(this.currentTransform); // We reset the globalCompositeOperation to source-over, the standard type of operation\n\n this.canvasContext.globalCompositeOperation = 'source-over';\n }\n },\n renderFrame: function renderFrame(forceRender) {\n if (this.hidden || this.data.hd) {\n return;\n }\n\n if (this.data.td === 1 && !forceRender) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.setBlendMode();\n var forceRealStack = this.data.ty === 0;\n this.prepareLayer();\n this.globalData.renderer.save(forceRealStack);\n this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props);\n this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity);\n this.renderInnerContent();\n this.globalData.renderer.restore(forceRealStack);\n this.exitLayer();\n\n if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true);\n }\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.canvasContext = null;\n this.data = null;\n this.globalData = null;\n this.maskManager.destroy();\n },\n mHelper: new Matrix()\n };\n CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\n CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\n\n function CVShapeData(element, data, styles, transformsManager) {\n this.styledShapes = [];\n this.tr = [0, 0, 0, 0, 0, 0];\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n var i;\n var len = styles.length;\n var styledShape;\n\n for (i = 0; i < len; i += 1) {\n if (!styles[i].closed) {\n styledShape = {\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\n trNodes: []\n };\n this.styledShapes.push(styledShape);\n styles[i].elements.push(styledShape);\n }\n }\n }\n\n CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\n\n function CVShapeElement(data, globalData, comp) {\n this.shapes = [];\n this.shapesData = data.shapes;\n this.stylesList = [];\n this.itemsData = [];\n this.prevViewData = [];\n this.shapeModifiers = [];\n this.processedElements = [];\n this.transformsManager = new ShapeTransformManager();\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\n CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\n CVShapeElement.prototype.transformHelper = {\n opacity: 1,\n _opMdf: false\n };\n CVShapeElement.prototype.dashResetter = [];\n\n CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n };\n\n CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n var styleElem = {\n data: data,\n type: data.ty,\n preTransforms: this.transformsManager.addTransformSequence(transforms),\n transforms: [],\n elements: [],\n closed: data.hd === true\n };\n var elementData = {};\n\n if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n\n if (!elementData.c.k) {\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\n }\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\n elementData.h = PropertyFactory.getProp(this, data.h || {\n k: 0\n }, 0, 0.01, this);\n elementData.a = PropertyFactory.getProp(this, data.a || {\n k: 0\n }, 0, degToRads, this);\n elementData.g = new GradientProperty(this, data.g, this);\n }\n\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2];\n styleElem.lj = lineJoinEnum[data.lj || 2];\n\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml;\n }\n\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v;\n }\n\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this);\n elementData.d = d;\n\n if (!elementData.d.k) {\n styleElem.da = elementData.d.dashArray;\n styleElem[\"do\"] = elementData.d.dashoffset[0];\n }\n }\n } else {\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\n }\n\n this.stylesList.push(styleElem);\n elementData.style = styleElem;\n return elementData;\n };\n\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: []\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createTransformElement = function (data) {\n var elementData = {\n transform: {\n opacity: 1,\n _opMdf: false,\n key: this.transformsManager.getNewKey(),\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\n }\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createShapeElement = function (data) {\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n return elementData;\n };\n\n CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n };\n\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.push(transform);\n }\n }\n };\n\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop();\n }\n }\n };\n\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i;\n var len = styles.length;\n\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var processedPos;\n var modifier;\n var currentTransform;\n var ownTransforms = [].concat(transforms);\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\n } else {\n itemsData[i].style.closed = false;\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n currentTransform = this.createTransformElement(arr[i]);\n itemsData[i] = currentTransform;\n }\n\n ownTransforms.push(itemsData[i]);\n this.addTransformToStyleList(itemsData[i]);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i]);\n }\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n shouldRender = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n this.removeTransformFromStyleList();\n this.closeStyles(ownStyles);\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.renderInnerContent = function () {\n this.transformHelper.opacity = 1;\n this.transformHelper._opMdf = false;\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\n };\n\n CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n groupTransform.opacity = parentTransform.opacity;\n groupTransform.opacity *= groupTransform.op.v;\n groupTransform._opMdf = true;\n }\n };\n\n CVShapeElement.prototype.drawLayer = function () {\n var i;\n var len = this.stylesList.length;\n var j;\n var jLen;\n var k;\n var kLen;\n var elems;\n var nodes;\n var renderer = this.globalData.renderer;\n var ctx = this.globalData.canvasContext;\n var type;\n var currentStyle;\n\n for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i];\n type = currentStyle.type; // Skipping style when\n // Stroke width equals 0\n // style should not be rendered (extra unused repeaters)\n // current opacity equals 0\n // global opacity equals 0\n\n if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\n renderer.save();\n elems = currentStyle.elements;\n\n if (type === 'st' || type === 'gs') {\n renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd); // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n\n renderer.ctxLineWidth(currentStyle.wi); // ctx.lineWidth = currentStyle.wi;\n\n renderer.ctxLineCap(currentStyle.lc); // ctx.lineCap = currentStyle.lc;\n\n renderer.ctxLineJoin(currentStyle.lj); // ctx.lineJoin = currentStyle.lj;\n\n renderer.ctxMiterLimit(currentStyle.ml || 0); // ctx.miterLimit = currentStyle.ml || 0;\n } else {\n renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd); // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n }\n\n renderer.ctxOpacity(currentStyle.coOp);\n\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath();\n }\n\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n jLen = elems.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath();\n\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da);\n ctx.lineDashOffset = currentStyle[\"do\"];\n }\n }\n\n nodes = elems[j].trNodes;\n kLen = nodes.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (nodes[k].t === 'm') {\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\n } else if (nodes[k].t === 'c') {\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\n } else {\n ctx.closePath();\n }\n }\n\n if (type === 'st' || type === 'gs') {\n // ctx.stroke();\n renderer.ctxStroke();\n\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter);\n }\n }\n }\n\n if (type !== 'st' && type !== 'gs') {\n // ctx.fill(currentStyle.r);\n this.globalData.renderer.ctxFill(currentStyle.r);\n }\n\n renderer.restore();\n }\n }\n };\n\n CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n var i;\n var len = items.length - 1;\n var groupTransform;\n groupTransform = parentTransform;\n\n for (i = len; i >= 0; i -= 1) {\n if (items[i].ty === 'tr') {\n groupTransform = data[i].transform;\n this.renderShapeTransform(parentTransform, groupTransform);\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n this.renderPath(items[i], data[i]);\n } else if (items[i].ty === 'fl') {\n this.renderFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'st') {\n this.renderStroke(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n this.renderGradientFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gr') {\n this.renderShape(groupTransform, items[i].it, data[i].it);\n } else if (items[i].ty === 'tm') {//\n }\n }\n\n if (isMain) {\n this.drawLayer();\n }\n };\n\n CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n var shapeNodes = styledShape.trNodes;\n var paths = shape.paths;\n var i;\n var len;\n var j;\n var jLen = paths._length;\n shapeNodes.length = 0;\n var groupTransformMat = styledShape.transforms.finalTransform;\n\n for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n if (i === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n });\n }\n\n if (len === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n if (pathNodes.c && len) {\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\n });\n shapeNodes.push({\n t: 'z'\n });\n }\n }\n }\n\n styledShape.trNodes = shapeNodes;\n }\n };\n\n CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n if (pathData.hd !== true && pathData._shouldRender) {\n var i;\n var len = itemData.styledShapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n }\n }\n };\n\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n };\n\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var grd;\n\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\n var ctx = this.globalData.canvasContext;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (styleData.t === 1) {\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\n } else {\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\n }\n\n var i;\n var len = styleData.g.p;\n var cValues = itemData.g.c;\n var opacity = 1;\n\n for (i = 0; i < len; i += 1) {\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\n opacity = itemData.g.o[i * 2 + 1];\n }\n\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n }\n\n styleElem.grd = grd;\n }\n\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n };\n\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray;\n styleElem[\"do\"] = d.dashoffset[0];\n }\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v;\n }\n };\n\n CVShapeElement.prototype.destroy = function () {\n this.shapesData = null;\n this.globalData = null;\n this.canvasContext = null;\n this.stylesList.length = 0;\n this.itemsData.length = 0;\n };\n\n function CVTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.yOffset = 0;\n this.fillColorAnim = false;\n this.strokeColorAnim = false;\n this.strokeWidthAnim = false;\n this.stroke = false;\n this.fill = false;\n this.justifyOffset = 0;\n this.currentRender = null;\n this.renderType = 'canvas';\n this.values = {\n fill: 'rgba(0,0,0,0)',\n stroke: 'rgba(0,0,0,0)',\n sWidth: 0,\n fValue: ''\n };\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n\n CVTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var hasFill = false;\n\n if (documentData.fc) {\n hasFill = true;\n this.values.fill = this.buildColor(documentData.fc);\n } else {\n this.values.fill = 'rgba(0,0,0,0)';\n }\n\n this.fill = hasFill;\n var hasStroke = false;\n\n if (documentData.sc) {\n hasStroke = true;\n this.values.stroke = this.buildColor(documentData.sc);\n this.values.sWidth = documentData.sw;\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n var i;\n var len;\n var letters = documentData.l;\n var matrixHelper = this.mHelper;\n this.stroke = hasStroke;\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\n len = documentData.finalText.length; // this.tHelper.font = this.values.fValue;\n\n var charData;\n var shapeData;\n var k;\n var kLen;\n var shapes;\n var j;\n var jLen;\n var pathNodes;\n var commands;\n var pathArr;\n var singleShape = this.data.singleShape;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n shapeData = charData && charData.data || {};\n matrixHelper.reset();\n\n if (singleShape && letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n jLen = shapes.length;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n }\n\n commands = createSizedArray(jLen - 1);\n var commandsCounter = 0;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n kLen = shapes[j].ks.k.i.length;\n pathNodes = shapes[j].ks.k;\n pathArr = [];\n\n for (k = 1; k < kLen; k += 1) {\n if (k === 1) {\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n commands[commandsCounter] = pathArr;\n commandsCounter += 1;\n }\n }\n\n if (singleShape) {\n xPos += letters[i].l;\n xPos += trackingOffset;\n }\n\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands;\n } else {\n this.textSpans[cnt] = {\n elem: commands\n };\n }\n\n cnt += 1;\n }\n };\n\n CVTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var ctx = this.canvasContext;\n ctx.font = this.values.fValue;\n this.globalData.renderer.ctxLineCap('butt'); // ctx.lineCap = 'butt';\n\n this.globalData.renderer.ctxLineJoin('miter'); // ctx.lineJoin = 'miter';\n\n this.globalData.renderer.ctxMiterLimit(4); // ctx.miterLimit = 4;\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n }\n\n var i;\n var len;\n var j;\n var jLen;\n var k;\n var kLen;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var lastFill = null;\n var lastStroke = null;\n var lastStrokeW = null;\n var commands;\n var pathArr;\n var renderer = this.globalData.renderer;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n\n if (renderedLetter) {\n renderer.save();\n renderer.ctxTransform(renderedLetter.p);\n renderer.ctxOpacity(renderedLetter.o);\n }\n\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n renderer.ctxFillStyle(renderedLetter.fc);\n lastFill = renderedLetter.fc; // ctx.fillStyle = renderedLetter.fc;\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill;\n renderer.ctxFillStyle(this.values.fill); // ctx.fillStyle = this.values.fill;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxFill(); // this.globalData.canvasContext.fill();\n /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw;\n renderer.ctxLineWidth(renderedLetter.sw); // ctx.lineWidth = renderedLetter.sw;\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth;\n renderer.ctxLineWidth(this.values.sWidth); // ctx.lineWidth = this.values.sWidth;\n }\n\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc;\n renderer.ctxStrokeStyle(renderedLetter.sc); // ctx.strokeStyle = renderedLetter.sc;\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke;\n renderer.ctxStrokeStyle(this.values.stroke); // ctx.strokeStyle = this.values.stroke;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxStroke(); // this.globalData.canvasContext.stroke();\n /// ctx.strokeText(letters[i].val,0,0);\n }\n\n if (renderedLetter) {\n this.globalData.renderer.restore();\n }\n }\n }\n };\n\n function CVImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.img = globalData.imageLoader.getAsset(this.assetData);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVImageElement.prototype.createContent = function () {\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n var canvas = createTag('canvas');\n canvas.width = this.assetData.w;\n canvas.height = this.assetData.h;\n var ctx = canvas.getContext('2d');\n var imgW = this.img.width;\n var imgH = this.img.height;\n var imgRel = imgW / imgH;\n var canvasRel = this.assetData.w / this.assetData.h;\n var widthCrop;\n var heightCrop;\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\n\n if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\n heightCrop = imgH;\n widthCrop = heightCrop * canvasRel;\n } else {\n widthCrop = imgW;\n heightCrop = widthCrop / canvasRel;\n }\n\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\n this.img = canvas;\n }\n };\n\n CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0);\n };\n\n CVImageElement.prototype.destroy = function () {\n this.img = null;\n };\n\n function CVSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVSolidElement.prototype.renderInnerContent = function () {\n // var ctx = this.canvasContext;\n this.globalData.renderer.ctxFillStyle(this.data.sc); // ctx.fillStyle = this.data.sc;\n\n this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh); // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n //\n };\n\n function CanvasRendererBase() {}\n\n extendPrototype([BaseRenderer], CanvasRendererBase);\n\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n CanvasRendererBase.prototype.ctxTransform = function (props) {\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n return;\n }\n\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n };\n\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n };\n\n CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n this.canvasContext.fillStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n this.canvasContext.strokeStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n this.canvasContext.lineWidth = value;\n };\n\n CanvasRendererBase.prototype.ctxLineCap = function (value) {\n this.canvasContext.lineCap = value;\n };\n\n CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n this.canvasContext.lineJoin = value;\n };\n\n CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n this.canvasContext.miterLimit = value;\n };\n\n CanvasRendererBase.prototype.ctxFill = function (rule) {\n this.canvasContext.fill(rule);\n };\n\n CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n this.canvasContext.fillRect(x, y, w, h);\n };\n\n CanvasRendererBase.prototype.ctxStroke = function () {\n this.canvasContext.stroke();\n };\n\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n this.contextData.reset();\n };\n\n CanvasRendererBase.prototype.save = function () {\n this.canvasContext.save();\n };\n\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n if (actionFlag) {\n this.globalData.blendMode = 'source-over';\n }\n\n this.contextData.restore(actionFlag);\n };\n\n CanvasRendererBase.prototype.configAnimation = function (animData) {\n if (this.animationItem.wrapper) {\n this.animationItem.container = createTag('canvas');\n var containerStyle = this.animationItem.container.style;\n containerStyle.width = '100%';\n containerStyle.height = '100%';\n var origin = '0px 0px 0px';\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n containerStyle['-webkit-transform'] = origin;\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\n this.animationItem.wrapper.appendChild(this.animationItem.container);\n this.canvasContext = this.animationItem.container.getContext('2d');\n\n if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\n }\n } else {\n this.canvasContext = this.renderConfig.context;\n }\n\n this.contextData.setContext(this.canvasContext);\n this.data = animData;\n this.layers = animData.layers;\n this.transformCanvas = {\n w: animData.w,\n h: animData.h,\n sx: 0,\n sy: 0,\n tx: 0,\n ty: 0\n };\n this.setupGlobalData(animData, document.body);\n this.globalData.canvasContext = this.canvasContext;\n this.globalData.renderer = this;\n this.globalData.isDashed = false;\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.globalData.transformCanvas = this.transformCanvas;\n this.elements = createSizedArray(animData.layers.length);\n this.updateContainerSize();\n };\n\n CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n this.reset();\n var elementWidth;\n var elementHeight;\n\n if (width) {\n elementWidth = width;\n elementHeight = height;\n this.canvasContext.canvas.width = elementWidth;\n this.canvasContext.canvas.height = elementHeight;\n } else {\n if (this.animationItem.wrapper && this.animationItem.container) {\n elementWidth = this.animationItem.wrapper.offsetWidth;\n elementHeight = this.animationItem.wrapper.offsetHeight;\n } else {\n elementWidth = this.canvasContext.canvas.width;\n elementHeight = this.canvasContext.canvas.height;\n }\n\n this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n }\n\n var elementRel;\n var animationRel;\n\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\n var par = this.renderConfig.preserveAspectRatio.split(' ');\n var fillType = par[1] || 'meet';\n var pos = par[0] || 'xMidYMid';\n var xPos = pos.substr(0, 4);\n var yPos = pos.substr(4);\n elementRel = elementWidth / elementHeight;\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\n\n if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n } else {\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n }\n\n if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\n } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.tx = 0;\n }\n\n if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\n } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.ty = 0;\n }\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n } else {\n this.transformCanvas.sx = this.renderConfig.dpr;\n this.transformCanvas.sy = this.renderConfig.dpr;\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n }\n\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\n /* var i, len = this.elements.length;\r\n for(i=0;i= 0; i -= 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.globalData.canvasContext = null;\n this.animationItem.container = null;\n this.destroyed = true;\n };\n\n CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\n return;\n }\n\n this.renderedFrame = num;\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\n this.globalData.frameId += 1;\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\n this.globalData.projectInterface.currentFrame = num; // console.log('--------');\n // console.log('NEW: ',num);\n\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n if (this.renderConfig.clearCanvas === true) {\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n } else {\n this.save();\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n\n if (this.renderConfig.clearCanvas !== true) {\n this.restore();\n }\n }\n };\n\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n var element = this.createItem(this.layers[pos], this, this.globalData);\n elements[pos] = element;\n element.initExpressions();\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\n };\n\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none';\n };\n\n CanvasRendererBase.prototype.show = function () {\n this.animationItem.container.style.display = 'block';\n };\n\n function CanvasContext() {\n this.opacity = -1;\n this.transform = createTypedArray('float32', 16);\n this.fillStyle = '';\n this.strokeStyle = '';\n this.lineWidth = '';\n this.lineCap = '';\n this.lineJoin = '';\n this.miterLimit = '';\n this.id = Math.random();\n }\n\n function CVContextData() {\n this.stack = [];\n this.cArrPos = 0;\n this.cTr = new Matrix();\n var i;\n var len = 15;\n\n for (i = 0; i < len; i += 1) {\n var canvasContext = new CanvasContext();\n this.stack[i] = canvasContext;\n }\n\n this._length = len;\n this.nativeContext = null;\n this.transformMat = new Matrix();\n this.currentOpacity = 1; //\n\n this.currentFillStyle = '';\n this.appliedFillStyle = ''; //\n\n this.currentStrokeStyle = '';\n this.appliedStrokeStyle = ''; //\n\n this.currentLineWidth = '';\n this.appliedLineWidth = ''; //\n\n this.currentLineCap = '';\n this.appliedLineCap = ''; //\n\n this.currentLineJoin = '';\n this.appliedLineJoin = ''; //\n\n this.appliedMiterLimit = '';\n this.currentMiterLimit = '';\n }\n\n CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2;\n var i = 0;\n\n for (i = this._length; i < newLength; i += 1) {\n this.stack[i] = new CanvasContext();\n }\n\n this._length = newLength;\n };\n\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0;\n this.cTr.reset();\n this.stack[this.cArrPos].opacity = 1;\n };\n\n CVContextData.prototype.restore = function (forceRestore) {\n this.cArrPos -= 1;\n var currentContext = this.stack[this.cArrPos];\n var transform = currentContext.transform;\n var i;\n var arr = this.cTr.props;\n\n for (i = 0; i < 16; i += 1) {\n arr[i] = transform[i];\n }\n\n if (forceRestore) {\n this.nativeContext.restore();\n var prevStack = this.stack[this.cArrPos + 1];\n this.appliedFillStyle = prevStack.fillStyle;\n this.appliedStrokeStyle = prevStack.strokeStyle;\n this.appliedLineWidth = prevStack.lineWidth;\n this.appliedLineCap = prevStack.lineCap;\n this.appliedLineJoin = prevStack.lineJoin;\n this.appliedMiterLimit = prevStack.miterLimit;\n }\n\n this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n\n if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n this.nativeContext.globalAlpha = currentContext.opacity;\n this.currentOpacity = currentContext.opacity;\n }\n\n this.currentFillStyle = currentContext.fillStyle;\n this.currentStrokeStyle = currentContext.strokeStyle;\n this.currentLineWidth = currentContext.lineWidth;\n this.currentLineCap = currentContext.lineCap;\n this.currentLineJoin = currentContext.lineJoin;\n this.currentMiterLimit = currentContext.miterLimit;\n };\n\n CVContextData.prototype.save = function (saveOnNativeFlag) {\n if (saveOnNativeFlag) {\n this.nativeContext.save();\n }\n\n var props = this.cTr.props;\n\n if (this._length <= this.cArrPos) {\n this.duplicate();\n }\n\n var currentStack = this.stack[this.cArrPos];\n var i;\n\n for (i = 0; i < 16; i += 1) {\n currentStack.transform[i] = props[i];\n }\n\n this.cArrPos += 1;\n var newStack = this.stack[this.cArrPos];\n newStack.opacity = currentStack.opacity;\n newStack.fillStyle = currentStack.fillStyle;\n newStack.strokeStyle = currentStack.strokeStyle;\n newStack.lineWidth = currentStack.lineWidth;\n newStack.lineCap = currentStack.lineCap;\n newStack.lineJoin = currentStack.lineJoin;\n newStack.miterLimit = currentStack.miterLimit;\n };\n\n CVContextData.prototype.setOpacity = function (value) {\n this.stack[this.cArrPos].opacity = value;\n };\n\n CVContextData.prototype.setContext = function (value) {\n this.nativeContext = value;\n };\n\n CVContextData.prototype.fillStyle = function (value) {\n if (this.stack[this.cArrPos].fillStyle !== value) {\n this.currentFillStyle = value;\n this.stack[this.cArrPos].fillStyle = value;\n }\n };\n\n CVContextData.prototype.strokeStyle = function (value) {\n if (this.stack[this.cArrPos].strokeStyle !== value) {\n this.currentStrokeStyle = value;\n this.stack[this.cArrPos].strokeStyle = value;\n }\n };\n\n CVContextData.prototype.lineWidth = function (value) {\n if (this.stack[this.cArrPos].lineWidth !== value) {\n this.currentLineWidth = value;\n this.stack[this.cArrPos].lineWidth = value;\n }\n };\n\n CVContextData.prototype.lineCap = function (value) {\n if (this.stack[this.cArrPos].lineCap !== value) {\n this.currentLineCap = value;\n this.stack[this.cArrPos].lineCap = value;\n }\n };\n\n CVContextData.prototype.lineJoin = function (value) {\n if (this.stack[this.cArrPos].lineJoin !== value) {\n this.currentLineJoin = value;\n this.stack[this.cArrPos].lineJoin = value;\n }\n };\n\n CVContextData.prototype.miterLimit = function (value) {\n if (this.stack[this.cArrPos].miterLimit !== value) {\n this.currentMiterLimit = value;\n this.stack[this.cArrPos].miterLimit = value;\n }\n };\n\n CVContextData.prototype.transform = function (props) {\n this.transformMat.cloneFromProps(props); // Taking the last transform value from the stored stack of transforms\n\n var currentTransform = this.cTr; // Applying the last transform value after the new transform to respect the order of transformations\n\n this.transformMat.multiply(currentTransform); // Storing the new transformed value in the stored transform\n\n currentTransform.cloneFromProps(this.transformMat.props);\n var trProps = currentTransform.props; // Applying the new transform to the canvas\n\n this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n };\n\n CVContextData.prototype.opacity = function (op) {\n var currentOpacity = this.stack[this.cArrPos].opacity;\n currentOpacity *= op < 0 ? 0 : op;\n\n if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n if (this.currentOpacity !== op) {\n this.nativeContext.globalAlpha = op;\n this.currentOpacity = op;\n }\n\n this.stack[this.cArrPos].opacity = currentOpacity;\n }\n };\n\n CVContextData.prototype.fill = function (rule) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fill(rule);\n };\n\n CVContextData.prototype.fillRect = function (x, y, w, h) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fillRect(x, y, w, h);\n };\n\n CVContextData.prototype.stroke = function () {\n if (this.appliedStrokeStyle !== this.currentStrokeStyle) {\n this.appliedStrokeStyle = this.currentStrokeStyle;\n this.nativeContext.strokeStyle = this.appliedStrokeStyle;\n }\n\n if (this.appliedLineWidth !== this.currentLineWidth) {\n this.appliedLineWidth = this.currentLineWidth;\n this.nativeContext.lineWidth = this.appliedLineWidth;\n }\n\n if (this.appliedLineCap !== this.currentLineCap) {\n this.appliedLineCap = this.currentLineCap;\n this.nativeContext.lineCap = this.appliedLineCap;\n }\n\n if (this.appliedLineJoin !== this.currentLineJoin) {\n this.appliedLineJoin = this.currentLineJoin;\n this.nativeContext.lineJoin = this.appliedLineJoin;\n }\n\n if (this.appliedMiterLimit !== this.currentMiterLimit) {\n this.appliedMiterLimit = this.currentMiterLimit;\n this.nativeContext.miterLimit = this.appliedMiterLimit;\n }\n\n this.nativeContext.stroke();\n };\n\n function CVCompElement(data, globalData, comp) {\n this.completeLayers = false;\n this.layers = data.layers;\n this.pendingElements = [];\n this.elements = createSizedArray(this.layers.length);\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n\n CVCompElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext;\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(this.data.w, 0);\n ctx.lineTo(this.data.w, this.data.h);\n ctx.lineTo(0, this.data.h);\n ctx.lineTo(0, 0);\n ctx.clip();\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n CVCompElement.prototype.destroy = function () {\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n\n this.layers = null;\n this.elements = null;\n };\n\n CVCompElement.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function CanvasRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: config && config.context || null,\n progressiveLoad: config && config.progressiveLoad || false,\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n className: config && config.className || '',\n id: config && config.id || '',\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.renderConfig.dpr = config && config.dpr || 1;\n\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n }\n\n this.renderedFrame = -1;\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1\n };\n this.contextData = new CVContextData();\n this.elements = [];\n this.pendingElements = [];\n this.transformMat = new Matrix();\n this.completeLayers = false;\n this.rendererType = 'canvas';\n\n if (this.renderConfig.clearCanvas) {\n this.ctxTransform = this.contextData.transform.bind(this.contextData);\n this.ctxOpacity = this.contextData.opacity.bind(this.contextData);\n this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData);\n this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData);\n this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData);\n this.ctxLineCap = this.contextData.lineCap.bind(this.contextData);\n this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData);\n this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData);\n this.ctxFill = this.contextData.fill.bind(this.contextData);\n this.ctxFillRect = this.contextData.fillRect.bind(this.contextData);\n this.ctxStroke = this.contextData.stroke.bind(this.contextData);\n this.save = this.contextData.save.bind(this.contextData);\n }\n }\n\n extendPrototype([CanvasRendererBase], CanvasRenderer);\n\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function HBaseElement() {}\n\n HBaseElement.prototype = {\n checkBlendMode: function checkBlendMode() {},\n initRendererElement: function initRendererElement() {\n this.baseElement = createTag(this.data.tg || 'div');\n\n if (this.data.hasMask) {\n this.svgElement = createNS('svg');\n this.layerElement = createNS('g');\n this.maskedElement = this.layerElement;\n this.svgElement.appendChild(this.layerElement);\n this.baseElement.appendChild(this.svgElement);\n } else {\n this.layerElement = this.baseElement;\n }\n\n styleDiv(this.baseElement);\n },\n createContainerElements: function createContainerElements() {\n this.renderableEffectsManager = new CVEffects(this);\n this.transformedElement = this.baseElement;\n this.maskedElement = this.layerElement;\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\n\n if (this.finalTransform._matMdf) {\n var matrixValue = this.finalTransform.mat.toCSS();\n transformedElementStyle.transform = matrixValue;\n transformedElementStyle.webkitTransform = matrixValue;\n }\n\n if (this.finalTransform._opMdf) {\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.layerElement = null;\n this.transformedElement = null;\n\n if (this.matteElement) {\n this.matteElement = null;\n }\n\n if (this.maskManager) {\n this.maskManager.destroy();\n this.maskManager = null;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n },\n addEffects: function addEffects() {},\n setMatte: function setMatte() {}\n };\n HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\n HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\n HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\n\n function HSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n\n HSolidElement.prototype.createContent = function () {\n var rect;\n\n if (this.data.hasMask) {\n rect = createNS('rect');\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.svgElement.setAttribute('width', this.data.sw);\n this.svgElement.setAttribute('height', this.data.sh);\n } else {\n rect = createTag('div');\n rect.style.width = this.data.sw + 'px';\n rect.style.height = this.data.sh + 'px';\n rect.style.backgroundColor = this.data.sc;\n }\n\n this.layerElement.appendChild(rect);\n };\n\n function HShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.shapesContainer = createNS('g');\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n }\n\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n\n HShapeElement.prototype.createContent = function () {\n var cont;\n this.baseElement.style.fontSize = 0;\n\n if (this.data.hasMask) {\n this.layerElement.appendChild(this.shapesContainer);\n cont = this.svgElement;\n } else {\n cont = createNS('svg');\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\n cont.setAttribute('width', size.w);\n cont.setAttribute('height', size.h);\n cont.appendChild(this.shapesContainer);\n this.layerElement.appendChild(cont);\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n this.filterUniqueShapes();\n this.shapeCont = cont;\n };\n\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n var i;\n var len = transformers.length;\n\n for (i = 0; i < len; i += 1) {\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n }\n\n return point;\n };\n\n HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\n var shape = item.sh.v;\n var transformers = item.transformers;\n var i;\n var len = shape._length;\n var vPoint;\n var oPoint;\n var nextIPoint;\n var nextVPoint;\n\n if (len <= 1) {\n return;\n }\n\n for (i = 0; i < len - 1; i += 1) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n\n if (shape.c) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n };\n\n HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\n var bounds = this.shapeBoundingBox;\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\n };\n\n HShapeElement.prototype.shapeBoundingBox = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n HShapeElement.prototype.tempBoundingBox = {\n x: 0,\n xMax: 0,\n y: 0,\n yMax: 0,\n width: 0,\n height: 0\n };\n\n HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\n // eslint-disable-line no-plusplus\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n c = 3 * p1[i] - 3 * p0[i];\n b |= 0; // eslint-disable-line no-bitwise\n\n a |= 0; // eslint-disable-line no-bitwise\n\n c |= 0; // eslint-disable-line no-bitwise\n\n if (a === 0 && b === 0) {//\n } else if (a === 0) {\n t = -c / b;\n\n if (t > 0 && t < 1) {\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\n }\n } else {\n b2ac = b * b - 4 * c * a;\n\n if (b2ac >= 0) {\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\n }\n }\n }\n\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\n };\n\n HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\n return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\n };\n\n HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n var i;\n var len = itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n if (itemsData[i] && itemsData[i].sh) {\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\n } else if (itemsData[i] && itemsData[i].it) {\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\n } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\n this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\n }\n }\n };\n\n HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n var width = 0;\n\n if (widthProperty.keyframes) {\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n var kfw = widthProperty.keyframes[i].s;\n\n if (kfw > width) {\n width = kfw;\n }\n }\n\n width *= widthProperty.mult;\n } else {\n width = widthProperty.v * widthProperty.mult;\n }\n\n boundingBox.x -= width;\n boundingBox.xMax += width;\n boundingBox.y -= width;\n boundingBox.yMax += width;\n };\n\n HShapeElement.prototype.currentBoxContains = function (box) {\n return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\n };\n\n HShapeElement.prototype.renderInnerContent = function () {\n this._renderShapeFrame();\n\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\n var tempBoundingBox = this.tempBoundingBox;\n var max = 999999;\n tempBoundingBox.x = max;\n tempBoundingBox.xMax = -max;\n tempBoundingBox.y = max;\n tempBoundingBox.yMax = -max;\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y; // var tempBoundingBox = this.shapeCont.getBBox();\n\n if (this.currentBoxContains(tempBoundingBox)) {\n return;\n }\n\n var changed = false;\n\n if (this.currentBBox.w !== tempBoundingBox.width) {\n this.currentBBox.w = tempBoundingBox.width;\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\n changed = true;\n }\n\n if (this.currentBBox.h !== tempBoundingBox.height) {\n this.currentBBox.h = tempBoundingBox.height;\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\n changed = true;\n }\n\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\n this.currentBBox.w = tempBoundingBox.width;\n this.currentBBox.h = tempBoundingBox.height;\n this.currentBBox.x = tempBoundingBox.x;\n this.currentBBox.y = tempBoundingBox.y;\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n var shapeStyle = this.shapeCont.style;\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n shapeStyle.transform = shapeTransform;\n shapeStyle.webkitTransform = shapeTransform;\n }\n }\n };\n\n function HTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.textPaths = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n this.renderType = 'svg';\n this.isMasked = false;\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n\n HTextElement.prototype.createContent = function () {\n this.isMasked = this.checkMasks();\n\n if (this.isMasked) {\n this.renderType = 'svg';\n this.compW = this.comp.data.w;\n this.compH = this.comp.data.h;\n this.svgElement.setAttribute('width', this.compW);\n this.svgElement.setAttribute('height', this.compH);\n var g = createNS('g');\n this.maskedElement.appendChild(g);\n this.innerElem = g;\n } else {\n this.renderType = 'html';\n this.innerElem = this.layerElement;\n }\n\n this.checkParenting();\n };\n\n HTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var innerElemStyle = this.innerElem.style;\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\n innerElemStyle.fill = textColor;\n innerElemStyle.color = textColor;\n\n if (documentData.sc) {\n innerElemStyle.stroke = this.buildColor(documentData.sc);\n innerElemStyle.strokeWidth = documentData.sw + 'px';\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (!this.globalData.fontManager.chars) {\n innerElemStyle.fontSize = documentData.finalSize + 'px';\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\n\n if (fontData.fClass) {\n this.innerElem.className = fontData.fClass;\n } else {\n innerElemStyle.fontFamily = fontData.fFamily;\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n innerElemStyle.fontStyle = fStyle;\n innerElemStyle.fontWeight = fWeight;\n }\n }\n\n var i;\n var len;\n var letters = documentData.l;\n len = letters.length;\n var tSpan;\n var tParent;\n var tCont;\n var matrixHelper = this.mHelper;\n var shapes;\n var shapeStr = '';\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.globalData.fontManager.chars) {\n if (!this.textPaths[cnt]) {\n tSpan = createNS('path');\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\n tSpan.setAttribute('stroke-miterlimit', '4');\n } else {\n tSpan = this.textPaths[cnt];\n }\n\n if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tCont = tParent.children[0];\n } else {\n tParent = createTag('div');\n tParent.style.lineHeight = 0;\n tCont = createNS('svg');\n tCont.appendChild(tSpan);\n styleDiv(tParent);\n }\n }\n } else if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tSpan = this.textPaths[cnt];\n } else {\n tParent = createTag('span');\n styleDiv(tParent);\n tSpan = createTag('span');\n styleDiv(tSpan);\n tParent.appendChild(tSpan);\n }\n } else {\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\n } // tSpan.setAttribute('visibility', 'hidden');\n\n\n if (this.globalData.fontManager.chars) {\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var shapeData;\n\n if (charData) {\n shapeData = charData.data;\n } else {\n shapeData = null;\n }\n\n matrixHelper.reset();\n\n if (shapeData && shapeData.shapes && shapeData.shapes.length) {\n shapes = shapeData.shapes[0].it;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n shapeStr = this.createPathShape(matrixHelper, shapes);\n tSpan.setAttribute('d', shapeStr);\n }\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\n\n if (shapeData && shapeData.shapes) {\n // document.body.appendChild is needed to get exact measure of shape\n document.body.appendChild(tCont);\n var boundingBox = tCont.getBBox();\n tCont.setAttribute('width', boundingBox.width + 2);\n tCont.setAttribute('height', boundingBox.height + 2);\n tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\n var tContStyle = tCont.style;\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\n tContStyle.transform = tContTranslation;\n tContStyle.webkitTransform = tContTranslation;\n letters[i].yOffset = boundingBox.y - 1;\n } else {\n tCont.setAttribute('width', 1);\n tCont.setAttribute('height', 1);\n }\n\n tParent.appendChild(tCont);\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } else {\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent); //\n\n var tStyle = tSpan.style;\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\n tStyle.transform = tSpanTranslation;\n tStyle.webkitTransform = tSpanTranslation;\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } //\n\n\n if (!this.isMasked) {\n this.textSpans[cnt] = tParent;\n } else {\n this.textSpans[cnt] = tSpan;\n }\n\n this.textSpans[cnt].style.display = 'block';\n this.textPaths[cnt] = tSpan;\n cnt += 1;\n }\n\n while (cnt < this.textSpans.length) {\n this.textSpans[cnt].style.display = 'none';\n cnt += 1;\n }\n };\n\n HTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var svgStyle;\n\n if (this.data.singleShape) {\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\n return;\n }\n\n if (this.isMasked && this.finalTransform._matMdf) {\n // Todo Benchmark if using this is better than getBBox\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\n svgStyle = this.svgElement.style;\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\n svgStyle.transform = translation;\n svgStyle.webkitTransform = translation;\n }\n }\n\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n return;\n }\n\n var i;\n var len;\n var count = 0;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var textPath;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n count += 1;\n } else {\n textSpan = this.textSpans[i];\n textPath = this.textPaths[i];\n renderedLetter = renderedLetters[count];\n count += 1;\n\n if (renderedLetter._mdf.m) {\n if (!this.isMasked) {\n textSpan.style.webkitTransform = renderedLetter.m;\n textSpan.style.transform = renderedLetter.m;\n } else {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n } /// /textSpan.setAttribute('opacity',renderedLetter.o);\n\n\n textSpan.style.opacity = renderedLetter.o;\n\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\n textPath.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\n textPath.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\n textPath.setAttribute('fill', renderedLetter.fc);\n textPath.style.color = renderedLetter.fc;\n }\n }\n }\n\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n var boundingBox = this.innerElem.getBBox();\n\n if (this.currentBBox.w !== boundingBox.width) {\n this.currentBBox.w = boundingBox.width;\n this.svgElement.setAttribute('width', boundingBox.width);\n }\n\n if (this.currentBBox.h !== boundingBox.height) {\n this.currentBBox.h = boundingBox.height;\n this.svgElement.setAttribute('height', boundingBox.height);\n }\n\n var margin = 1;\n\n if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\n this.currentBBox.w = boundingBox.width + margin * 2;\n this.currentBBox.h = boundingBox.height + margin * 2;\n this.currentBBox.x = boundingBox.x - margin;\n this.currentBBox.y = boundingBox.y - margin;\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n svgStyle = this.svgElement.style;\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n svgStyle.transform = svgTransform;\n svgStyle.webkitTransform = svgTransform;\n }\n }\n };\n\n function HCameraElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initHierarchy();\n var getProp = PropertyFactory.getProp;\n this.pe = getProp(this, data.pe, 0, 0, this);\n\n if (data.ks.p.s) {\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\n } else {\n this.p = getProp(this, data.ks.p, 1, 0, this);\n }\n\n if (data.ks.a) {\n this.a = getProp(this, data.ks.a, 1, 0, this);\n }\n\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\n var i;\n var len = data.ks.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.ks.or.k[i].to = null;\n data.ks.or.k[i].ti = null;\n }\n }\n\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\n this.or.sh = true;\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\n this.mat = new Matrix();\n this._prevMat = new Matrix();\n this._isFirstFrame = true; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n\n this.finalTransform = {\n mProp: this\n };\n }\n\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n\n HCameraElement.prototype.setup = function () {\n var i;\n var len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n // [perspectiveElem,container]\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n perspectiveStyle = comp.perspectiveElem.style;\n containerStyle = comp.container.style;\n var perspective = this.pe.v + 'px';\n var origin = '0px 0px 0px';\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n perspectiveStyle.perspective = perspective;\n perspectiveStyle.webkitPerspective = perspective;\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n perspectiveStyle.transform = matrix;\n perspectiveStyle.webkitTransform = matrix;\n }\n }\n };\n\n HCameraElement.prototype.createElements = function () {};\n\n HCameraElement.prototype.hide = function () {};\n\n HCameraElement.prototype.renderFrame = function () {\n var _mdf = this._isFirstFrame;\n var i;\n var len;\n\n if (this.hierarchy) {\n len = this.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n }\n }\n\n if (_mdf || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {\n this.mat.reset();\n\n if (this.hierarchy) {\n len = this.hierarchy.length - 1;\n\n for (i = len; i >= 0; i -= 1) {\n var mTransf = this.hierarchy[i].finalTransform.mProp;\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\n }\n }\n\n if (this.p) {\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\n } else {\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\n }\n\n if (this.a) {\n var diffVector;\n\n if (this.p) {\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\n } else {\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\n }\n\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\n var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\n var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\n }\n\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\n this.mat.translate(0, 0, this.pe.v);\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\n\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n if (hasMatrixChanged) {\n var matValue = this.mat.toCSS();\n containerStyle = comp.container.style;\n containerStyle.transform = matValue;\n containerStyle.webkitTransform = matValue;\n }\n\n if (this.pe._mdf) {\n perspectiveStyle = comp.perspectiveElem.style;\n perspectiveStyle.perspective = this.pe.v + 'px';\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\n }\n }\n }\n\n this.mat.clone(this._prevMat);\n }\n }\n\n this._isFirstFrame = false;\n };\n\n HCameraElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n HCameraElement.prototype.destroy = function () {};\n\n HCameraElement.prototype.getBaseElement = function () {\n return null;\n };\n\n function HImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n\n HImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n var img = new Image();\n\n if (this.data.hasMask) {\n this.imageElem = createNS('image');\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.imageElem);\n this.baseElement.setAttribute('width', this.assetData.w);\n this.baseElement.setAttribute('height', this.assetData.h);\n } else {\n this.layerElement.appendChild(img);\n }\n\n img.crossOrigin = 'anonymous';\n img.src = assetPath;\n\n if (this.data.ln) {\n this.baseElement.setAttribute('id', this.data.ln);\n }\n };\n\n function HybridRendererBase(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n }\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([BaseRenderer], HybridRendererBase);\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n\n HybridRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newDOMElement = element.getBaseElement();\n\n if (!newDOMElement) {\n return;\n }\n\n var layer = this.layers[pos];\n\n if (!layer.ddd || !this.supports3d) {\n if (this.threeDElements) {\n this.addTo3dContainer(newDOMElement, pos);\n } else {\n var i = 0;\n var nextDOMElement;\n var nextLayer;\n var tmpDOMElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\n nextLayer = this.elements[i];\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\n nextDOMElement = tmpDOMElement || nextDOMElement;\n }\n\n i += 1;\n }\n\n if (nextDOMElement) {\n if (!layer.ddd || !this.supports3d) {\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\n }\n } else if (!layer.ddd || !this.supports3d) {\n this.layerElement.appendChild(newDOMElement);\n }\n }\n } else {\n this.addTo3dContainer(newDOMElement, pos);\n }\n };\n\n HybridRendererBase.prototype.createShape = function (data) {\n if (!this.supports3d) {\n return new SVGShapeElement(data, this.globalData, this);\n }\n\n return new HShapeElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createText = function (data) {\n if (!this.supports3d) {\n return new SVGTextLottieElement(data, this.globalData, this);\n }\n\n return new HTextElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createCamera = function (data) {\n this.camera = new HCameraElement(data, this.globalData, this);\n return this.camera;\n };\n\n HybridRendererBase.prototype.createImage = function (data) {\n if (!this.supports3d) {\n return new IImageElement(data, this.globalData, this);\n }\n\n return new HImageElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createSolid = function (data) {\n if (!this.supports3d) {\n return new ISolidElement(data, this.globalData, this);\n }\n\n return new HSolidElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n return this.threeDElements[i].perspectiveElem;\n }\n\n i += 1;\n }\n\n return null;\n };\n\n HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\n var perspectiveElem = createTag('div');\n var style;\n var containerStyle;\n styleDiv(perspectiveElem);\n var container = createTag('div');\n styleDiv(container);\n\n if (type === '3d') {\n style = perspectiveElem.style;\n style.width = this.globalData.compSize.w + 'px';\n style.height = this.globalData.compSize.h + 'px';\n var center = '50% 50%';\n style.webkitTransformOrigin = center;\n style.mozTransformOrigin = center;\n style.transformOrigin = center;\n containerStyle = container.style;\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n containerStyle.transform = matrix;\n containerStyle.webkitTransform = matrix;\n }\n\n perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\n\n var threeDContainerData = {\n container: container,\n perspectiveElem: perspectiveElem,\n startPos: pos,\n endPos: pos,\n type: type\n };\n this.threeDElements.push(threeDContainerData);\n return threeDContainerData;\n };\n\n HybridRendererBase.prototype.build3dContainers = function () {\n var i;\n var len = this.layers.length;\n var lastThreeDContainerData;\n var currentContainer = '';\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\n if (currentContainer !== '3d') {\n currentContainer = '3d';\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n } else {\n if (currentContainer !== '2d') {\n currentContainer = '2d';\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n }\n }\n\n len = this.threeDElements.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n }\n };\n\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (pos <= this.threeDElements[i].endPos) {\n var j = this.threeDElements[i].startPos;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.threeDElements[i].container.insertBefore(elem, nextElement);\n } else {\n this.threeDElements[i].container.appendChild(elem);\n }\n\n break;\n }\n\n i += 1;\n }\n };\n\n HybridRendererBase.prototype.configAnimation = function (animData) {\n var resizerElem = createTag('div');\n var wrapper = this.animationItem.wrapper;\n var style = resizerElem.style;\n style.width = animData.w + 'px';\n style.height = animData.h + 'px';\n this.resizerElem = resizerElem;\n styleDiv(resizerElem);\n style.transformStyle = 'flat';\n style.mozTransformStyle = 'flat';\n style.webkitTransformStyle = 'flat';\n\n if (this.renderConfig.className) {\n resizerElem.setAttribute('class', this.renderConfig.className);\n }\n\n wrapper.appendChild(resizerElem);\n style.overflow = 'hidden';\n var svg = createNS('svg');\n svg.setAttribute('width', '1');\n svg.setAttribute('height', '1');\n styleDiv(svg);\n this.resizerElem.appendChild(svg);\n var defs = createNS('defs');\n svg.appendChild(defs);\n this.data = animData; // Mask animation\n\n this.setupGlobalData(animData, svg);\n this.globalData.defs = defs;\n this.layers = animData.layers;\n this.layerElement = this.resizerElem;\n this.build3dContainers();\n this.updateContainerSize();\n };\n\n HybridRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.animationItem.container = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n HybridRendererBase.prototype.updateContainerSize = function () {\n var elementWidth = this.animationItem.wrapper.offsetWidth;\n var elementHeight = this.animationItem.wrapper.offsetHeight;\n var elementRel = elementWidth / elementHeight;\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\n var sx;\n var sy;\n var tx;\n var ty;\n\n if (animationRel > elementRel) {\n sx = elementWidth / this.globalData.compSize.w;\n sy = elementWidth / this.globalData.compSize.w;\n tx = 0;\n ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\n } else {\n sx = elementHeight / this.globalData.compSize.h;\n sy = elementHeight / this.globalData.compSize.h;\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\n ty = 0;\n }\n\n var style = this.resizerElem.style;\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\n style.transform = style.webkitTransform;\n };\n\n HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n\n HybridRendererBase.prototype.hide = function () {\n this.resizerElem.style.display = 'none';\n };\n\n HybridRendererBase.prototype.show = function () {\n this.resizerElem.style.display = 'block';\n };\n\n HybridRendererBase.prototype.initItems = function () {\n this.buildAllItems();\n\n if (this.camera) {\n this.camera.setup();\n } else {\n var cWidth = this.globalData.compSize.w;\n var cHeight = this.globalData.compSize.h;\n var i;\n var len = this.threeDElements.length;\n\n for (i = 0; i < len; i += 1) {\n var style = this.threeDElements[i].perspectiveElem.style;\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\n style.perspective = style.webkitPerspective;\n }\n }\n };\n\n HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n var floatingContainer = createTag('div');\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n function HCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = !data.hasMask;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n\n HCompElement.prototype.createContainerElements = function () {\n this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n\n\n if (this.data.hasMask) {\n this.svgElement.setAttribute('width', this.data.w);\n this.svgElement.setAttribute('height', this.data.h);\n this.transformedElement = this.baseElement;\n } else {\n this.transformedElement = this.layerElement;\n }\n };\n\n HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n var j = 0;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(elem, nextElement);\n } else {\n this.layerElement.appendChild(elem);\n }\n };\n\n HCompElement.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n function HybridRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n },\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([HybridRendererBase], HybridRenderer);\n\n HybridRenderer.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n var CompExpressionInterface = function () {\n return function (comp) {\n function _thisLayerFunction(name) {\n var i = 0;\n var len = comp.layers.length;\n\n while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface;\n }\n\n i += 1;\n }\n\n return null; // return {active:false};\n }\n\n Object.defineProperty(_thisLayerFunction, '_name', {\n value: comp.data.nm\n });\n _thisLayerFunction.layer = _thisLayerFunction;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\n _thisLayerFunction.displayStartTime = 0;\n _thisLayerFunction.numLayers = comp.layers.length;\n return _thisLayerFunction;\n };\n }();\n\n function _typeof$2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\n\n /* eslint-disable */\n\n /*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\n function seedRandom(pool, math) {\n //\n // The following constants are related to IEEE 754 limits.\n //\n var global = this,\n width = 256,\n // each RC4 output is 0 <= x < 256\n chunks = 6,\n // at least six RC4 outputs for each double\n digits = 52,\n // there are 52 significant digits in a double\n rngname = 'random',\n // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n //\n // seedrandom()\n // This is the seedrandom function described above.\n //\n\n function seedrandom(seed, options, callback) {\n var key = [];\n options = options === true ? {\n entropy: true\n } : options || {}; // Flatten the seed string or build one from local entropy if needed.\n\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\n\n var arc4 = new ARC4(key); // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n\n var prng = function prng() {\n var n = arc4.g(chunks),\n // Start with a numerator n < 2 ^ 48\n d = startdenom,\n // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n\n while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n\n d *= width; // denominator and generating a\n\n x = arc4.g(1); // new least-significant-byte.\n }\n\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n\n d /= 2; // right using integer math until\n\n x >>>= 1; // we have exactly the desired bits.\n }\n\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function () {\n return arc4.g(4) | 0;\n };\n\n prng.quick = function () {\n return arc4.g(4) / 0x100000000;\n };\n\n prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\n\n mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\n\n return (options.pass || callback || function (prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) {\n copy(state, arc4);\n } // Only provide the .state method if requested via options.state.\n\n\n prng.state = function () {\n return copy(arc4, {});\n };\n } // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n\n\n if (is_math_call) {\n math[rngname] = prng;\n return seed;\n } // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\n }\n\n math['seed' + rngname] = seedrandom; //\n // ARC4\n //\n // An ARC4 implementation. The constructor takes a key in the form of\n // an array of at most (width) integers that should be 0 <= x < (width).\n //\n // The g(count) method returns a pseudorandom integer that concatenates\n // the next (count) outputs from ARC4. Its return value is a number x\n // that is in the range 0 <= x < (width ^ count).\n //\n\n function ARC4(key) {\n var t,\n keylen = key.length,\n me = this,\n i = 0,\n j = me.i = me.j = 0,\n s = me.S = []; // The empty key [] is treated as [0].\n\n if (!keylen) {\n key = [keylen++];\n } // Set up S using the standard key scheduling algorithm.\n\n\n while (i < width) {\n s[i] = i++;\n }\n\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\n s[j] = t;\n } // The \"g\" method returns the next (count) outputs as one number.\n\n\n me.g = function (count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t,\n r = 0,\n i = me.i,\n j = me.j,\n s = me.S;\n\n while (count--) {\n t = s[i = mask & i + 1];\n r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\n }\n\n me.i = i;\n me.j = j;\n return r; // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n };\n } //\n // copy()\n // Copies internal state of ARC4 to or from a plain object.\n //\n\n\n function copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n } //\n // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n\n\n function flatten(obj, depth) {\n var result = [],\n typ = _typeof$2(obj),\n prop;\n\n if (depth && typ == 'object') {\n for (prop in obj) {\n try {\n result.push(flatten(obj[prop], depth - 1));\n } catch (e) {}\n }\n }\n\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n } //\n // mixkey()\n // Mixes a string seed into a key that is an array of integers, and\n // returns a shortened string seed that is equivalent to the result key.\n //\n\n\n function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0;\n\n while (j < stringseed.length) {\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n }\n\n return tostring(key);\n } //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n\n\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width));\n }\n\n var out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\n }\n } //\n // tostring()\n // Converts an array of charcodes to a string\n //\n\n\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\n } //\n // When seedrandom.js is loaded, we immediately mix a few bits\n // from the built-in RNG into the entropy pool. Because we do\n // not want to interfere with deterministic PRNG state later,\n // seedrandom will not call math.random on its own again after\n // initialization.\n //\n\n\n mixkey(math.random(), pool); //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n // End anonymous scope, and pass initial values.\n }\n\n ;\n\n function initialize$2(BMMath) {\n seedRandom([], BMMath);\n }\n\n var propTypes = {\n SHAPE: 'shape'\n };\n\n function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\n\n var ExpressionManager = function () {\n 'use strict';\n\n var ob = {};\n var Math = BMMath;\n var window = null;\n var document = null;\n var XMLHttpRequest = null;\n var fetch = null;\n var frames = null;\n var _lottieGlobal = {};\n initialize$2(BMMath);\n\n function resetFrame() {\n _lottieGlobal = {};\n }\n\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array;\n }\n\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n }\n\n function $bm_neg(a) {\n var tOfA = _typeof$1(a);\n\n if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n return -a;\n }\n\n if ($bm_isInstanceOfArray(a)) {\n var i;\n var lenA = a.length;\n var retArr = [];\n\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i];\n }\n\n return retArr;\n }\n\n if (a.propType) {\n return a.v;\n }\n\n return -a;\n }\n\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\n\n function sum(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n return a + b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] += b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a + b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] + b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n var add = sum;\n\n function sub(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10);\n }\n\n if (tOfB === 'string') {\n b = parseInt(b, 10);\n }\n\n return a - b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] -= b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a - b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] - b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n function mul(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function div(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10);\n }\n\n if (typeof b === 'string') {\n b = parseInt(b, 10);\n }\n\n return a % b;\n }\n\n var $bm_sum = sum;\n var $bm_sub = sub;\n var $bm_mul = mul;\n var $bm_div = div;\n var $bm_mod = mod;\n\n function clamp(num, min, max) {\n if (min > max) {\n var mm = max;\n max = min;\n min = mm;\n }\n\n return Math.min(Math.max(num, min), max);\n }\n\n function radiansToDegrees(val) {\n return val / degToRads;\n }\n\n var radians_to_degrees = radiansToDegrees;\n\n function degreesToRadians(val) {\n return val * degToRads;\n }\n\n var degrees_to_radians = radiansToDegrees;\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\n\n function length(arr1, arr2) {\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\n arr2 = arr2 || 0;\n return Math.abs(arr1 - arr2);\n }\n\n if (!arr2) {\n arr2 = helperLengthArray;\n }\n\n var i;\n var len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\n }\n\n return Math.sqrt(addedLength);\n }\n\n function normalize(vec) {\n return div(vec, length(vec));\n }\n\n function rgbToHsl(val) {\n var r = val[0];\n var g = val[1];\n var b = val[2];\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n\n if (max === min) {\n h = 0; // achromatic\n\n s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n\n case g:\n h = (b - r) / d + 2;\n break;\n\n case b:\n h = (r - g) / d + 4;\n break;\n\n default:\n break;\n }\n\n h /= 6;\n }\n\n return [h, s, l, val[3]];\n }\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n\n function hslToRgb(val) {\n var h = val[0];\n var s = val[1];\n var l = val[2];\n var r;\n var g;\n var b;\n\n if (s === 0) {\n r = l; // achromatic\n\n b = l; // achromatic\n\n g = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return [r, g, b, val[3]];\n }\n\n function linear(t, tMin, tMax, value1, value2) {\n if (value1 === undefined || value2 === undefined) {\n value1 = tMin;\n value2 = tMax;\n tMin = 0;\n tMax = 1;\n }\n\n if (tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n\n if (t <= tMin) {\n return value1;\n }\n\n if (t >= tMax) {\n return value2;\n }\n\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n\n if (!value1.length) {\n return value1 + (value2 - value1) * perc;\n }\n\n var i;\n var len = value1.length;\n var arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n }\n\n return arr;\n }\n\n function random(min, max) {\n if (max === undefined) {\n if (min === undefined) {\n min = 0;\n max = 1;\n } else {\n max = min;\n min = undefined;\n }\n }\n\n if (max.length) {\n var i;\n var len = max.length;\n\n if (!min) {\n min = createTypedArray('float32', len);\n }\n\n var arr = createTypedArray('float32', len);\n var rnd = BMMath.random();\n\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i]);\n }\n\n return arr;\n }\n\n if (min === undefined) {\n min = 0;\n }\n\n var rndm = BMMath.random();\n return min + rndm * (max - min);\n }\n\n function createPath(points, inTangents, outTangents, closed) {\n var i;\n var len = points.length;\n var path = shapePool.newElement();\n path.setPathData(!!closed, len);\n var arrPlaceholder = [0, 0];\n var inVertexPoint;\n var outVertexPoint;\n\n for (i = 0; i < len; i += 1) {\n inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\n outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\n }\n\n return path;\n }\n\n function initiateExpression(elem, data, property) {\n // Bail out if we don't want expressions\n function noOp(_value) {\n return _value;\n }\n\n if (!elem.globalData.renderConfig.runExpressions) {\n return noOp;\n }\n\n var val = data.x;\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n\n var _needsRandom = val.indexOf('random') !== -1;\n\n var elemType = elem.data.ty;\n var transform;\n var $bm_transform;\n var content;\n var effect;\n var thisProperty = property;\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\n Object.defineProperty(thisProperty, 'value', {\n get: function get() {\n return thisProperty.v;\n }\n });\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\n elem.comp.displayStartTime = 0;\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\n var width = elem.data.sw ? elem.data.sw : 0;\n var height = elem.data.sh ? elem.data.sh : 0;\n var name = elem.data.nm;\n var loopIn;\n var loop_in;\n var loopOut;\n var loop_out;\n var smooth;\n var toWorld;\n var fromWorld;\n var fromComp;\n var toComp;\n var fromCompToSurface;\n var position;\n var rotation;\n var anchorPoint;\n var scale;\n var thisLayer;\n var thisComp;\n var mask;\n var valueAtTime;\n var velocityAtTime;\n var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n\n var numKeys = property.kf ? data.k.length : 0;\n var active = !this.data || this.data.hd !== true;\n\n var wiggle = function wiggle(freq, amp) {\n var iWiggle;\n var j;\n var lenWiggle = this.pv.length ? this.pv.length : 1;\n var addedAmps = createTypedArray('float32', lenWiggle);\n freq = 5;\n var iterations = Math.floor(time * freq);\n iWiggle = 0;\n j = 0;\n\n while (iWiggle < iterations) {\n // var rnd = BMMath.random();\n for (j = 0; j < lenWiggle; j += 1) {\n addedAmps[j] += -amp + amp * 2 * BMMath.random(); // addedAmps[j] += -amp + amp*2*rnd;\n }\n\n iWiggle += 1;\n } // var rnd2 = BMMath.random();\n\n\n var periods = time * freq;\n var perc = periods - Math.floor(periods);\n var arr = createTypedArray('float32', lenWiggle);\n\n if (lenWiggle > 1) {\n for (j = 0; j < lenWiggle; j += 1) {\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n }\n\n return arr;\n }\n\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n }.bind(this);\n\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty);\n loop_in = loopIn;\n }\n\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty);\n loop_out = loopOut;\n }\n\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty);\n }\n\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true);\n }\n\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true);\n }\n\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this);\n }\n\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this);\n }\n\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n\n function lookAt(elem1, elem2) {\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\n return [yaw, pitch, 0];\n }\n\n function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n }\n\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n }\n\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n }\n\n function applyEase(fn, t, tMin, tMax, val1, val2) {\n if (val1 === undefined) {\n val1 = tMin;\n val2 = tMax;\n } else {\n t = (t - tMin) / (tMax - tMin);\n }\n\n if (t > 1) {\n t = 1;\n } else if (t < 0) {\n t = 0;\n }\n\n var mult = fn(t);\n\n if ($bm_isInstanceOfArray(val1)) {\n var iKey;\n var lenKey = val1.length;\n var arr = createTypedArray('float32', lenKey);\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n }\n\n return arr;\n }\n\n return (val2 - val1) * mult + val1;\n }\n\n function nearestKey(time) {\n var iKey;\n var lenKey = data.k.length;\n var index;\n var keyTime;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n index = 0;\n keyTime = 0;\n } else {\n index = -1;\n time *= elem.comp.globalData.frameRate;\n\n if (time < data.k[0].t) {\n index = 1;\n keyTime = data.k[0].t;\n } else {\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n if (time === data.k[iKey].t) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n break;\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n index = iKey + 2;\n keyTime = data.k[iKey + 1].t;\n } else {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n\n break;\n }\n }\n\n if (index === -1) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n }\n }\n\n var obKey = {};\n obKey.index = index;\n obKey.time = keyTime / elem.comp.globalData.frameRate;\n return obKey;\n }\n\n function key(ind) {\n var obKey;\n var iKey;\n var lenKey;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind);\n }\n\n ind -= 1;\n obKey = {\n time: data.k[ind].t / elem.comp.globalData.frameRate,\n value: []\n };\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\n lenKey = arr.length;\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey];\n obKey.value[iKey] = arr[iKey];\n }\n\n return obKey;\n }\n\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return fr / fps;\n }\n\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time;\n }\n\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return t * fps;\n }\n\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed);\n }\n\n function sourceRectAtTime() {\n return elem.sourceRectAtTime();\n }\n\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init);\n }\n\n return value.substring(init, end);\n }\n\n return '';\n }\n\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init);\n }\n\n return value.substr(init, end);\n }\n\n return '';\n }\n\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n value = valueAtTime(time);\n }\n\n var time;\n var velocity;\n var value;\n var text;\n var textIndex;\n var textTotal;\n var selectorValue;\n var index = elem.data.ind;\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n var parent;\n var randSeed = Math.floor(Math.random() * 1000000);\n var globalData = elem.globalData;\n\n function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value;\n\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value;\n }\n\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex;\n textTotal = this.textTotal;\n selectorValue = this.selectorValue;\n }\n\n if (!thisLayer) {\n text = elem.layerInterface.text;\n thisLayer = elem.layerInterface;\n thisComp = elem.comp.compInterface;\n toWorld = thisLayer.toWorld.bind(thisLayer);\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\n fromComp = thisLayer.fromComp.bind(thisLayer);\n toComp = thisLayer.toComp.bind(thisLayer);\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\n fromCompToSurface = fromComp;\n }\n\n if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group');\n $bm_transform = transform;\n\n if (transform) {\n anchorPoint = transform.anchorPoint;\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\n }\n }\n\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group');\n }\n\n if (!effect) {\n effect = thisLayer(4);\n }\n\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface;\n }\n\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n\n if (_needsRandom) {\n seedRandom(randSeed + time);\n }\n\n if (needsVelocity) {\n velocity = velocityAtTime(time);\n }\n\n expression_function();\n this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\n // Changed this to a ternary operation because Rollup failed compiling it correctly\n\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n return scoped_bm_rt;\n } // Bundlers will see these as dead code and unless we reference them\n\n\n executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\n return executeExpression;\n }\n\n ob.initiateExpression = initiateExpression;\n ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath, _lottieGlobal];\n ob.resetFrame = resetFrame;\n return ob;\n }();\n\n var Expressions = function () {\n var ob = {};\n ob.initExpressions = initExpressions;\n ob.resetFrame = ExpressionManager.resetFrame;\n\n function initExpressions(animation) {\n var stackCount = 0;\n var registers = [];\n\n function pushExpression() {\n stackCount += 1;\n }\n\n function popExpression() {\n stackCount -= 1;\n\n if (stackCount === 0) {\n releaseInstances();\n }\n }\n\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression);\n }\n }\n\n function releaseInstances() {\n var i;\n var len = registers.length;\n\n for (i = 0; i < len; i += 1) {\n registers[i].release();\n }\n\n registers.length = 0;\n }\n\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\n animation.renderer.globalData.pushExpression = pushExpression;\n animation.renderer.globalData.popExpression = popExpression;\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\n }\n\n return ob;\n }();\n\n var MaskManagerInterface = function () {\n function MaskInterface(mask, data) {\n this._mask = mask;\n this._data = data;\n }\n\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function get() {\n if (this._mask.prop.k) {\n this._mask.prop.getValue();\n }\n\n return this._mask.prop;\n }\n });\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n get: function get() {\n if (this._mask.op.k) {\n this._mask.op.getValue();\n }\n\n return this._mask.op.v * 100;\n }\n });\n\n var MaskManager = function MaskManager(maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n\n var i;\n var len = maskManager.viewData.length;\n\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n }\n\n var maskFunction = function maskFunction(name) {\n i = 0;\n\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n return maskFunction;\n };\n\n return MaskManager;\n }();\n\n var ExpressionPropertyInterface = function () {\n var defaultUnidimensionalValue = {\n pv: 0,\n v: 0,\n mult: 1\n };\n var defaultMultidimensionalValue = {\n pv: [0, 0, 0],\n v: [0, 0, 0],\n mult: 1\n };\n\n function completeProperty(expressionValue, property, type) {\n Object.defineProperty(expressionValue, 'velocity', {\n get: function get() {\n return property.getVelocityAtTime(property.comp.currentFrame);\n }\n });\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\n\n expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0;\n }\n\n var value = '';\n\n if ('s' in property.keyframes[pos - 1]) {\n value = property.keyframes[pos - 1].s;\n } else if ('e' in property.keyframes[pos - 2]) {\n value = property.keyframes[pos - 2].e;\n } else {\n value = property.keyframes[pos - 2].s;\n }\n\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\n valueProp.value = type === 'unidimensional' ? value[0] : value;\n return valueProp;\n };\n\n expressionValue.valueAtTime = property.getValueAtTime;\n expressionValue.speedAtTime = property.getSpeedAtTime;\n expressionValue.velocityAtTime = property.getVelocityAtTime;\n expressionValue.propertyGroup = property.propertyGroup;\n }\n\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var val = property.pv * mult;\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n val = property.v * mult;\n\n if (expressionValue.value !== val) {\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n }\n\n return expressionValue;\n };\n }\n\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var len = property.data && property.data.l || property.pv.length;\n var expressionValue = createTypedArray('float32', len);\n var arrValue = createTypedArray('float32', len);\n expressionValue.value = arrValue;\n completeProperty(expressionValue, property, 'multidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult;\n expressionValue[i] = arrValue[i];\n }\n\n return expressionValue;\n };\n } // TODO: try to avoid using this getter\n\n\n function defaultGetter() {\n return defaultUnidimensionalValue;\n }\n\n return function (property) {\n if (!property) {\n return defaultGetter;\n }\n\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property);\n }\n\n return MultidimensionalPropertyInterface(property);\n };\n }();\n\n var TransformExpressionInterface = function () {\n return function (transform) {\n function _thisFunction(name) {\n switch (name) {\n case 'scale':\n case 'Scale':\n case 'ADBE Scale':\n case 6:\n return _thisFunction.scale;\n\n case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation;\n\n case 'ADBE Rotate X':\n return _thisFunction.xRotation;\n\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation;\n\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position;\n\n case 'ADBE Position_0':\n return _thisFunction.xPosition;\n\n case 'ADBE Position_1':\n return _thisFunction.yPosition;\n\n case 'ADBE Position_2':\n return _thisFunction.zPosition;\n\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint;\n\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisFunction, 'rotation', {\n get: ExpressionPropertyInterface(transform.r || transform.rz)\n });\n Object.defineProperty(_thisFunction, 'zRotation', {\n get: ExpressionPropertyInterface(transform.rz || transform.r)\n });\n Object.defineProperty(_thisFunction, 'xRotation', {\n get: ExpressionPropertyInterface(transform.rx)\n });\n Object.defineProperty(_thisFunction, 'yRotation', {\n get: ExpressionPropertyInterface(transform.ry)\n });\n Object.defineProperty(_thisFunction, 'scale', {\n get: ExpressionPropertyInterface(transform.s)\n });\n\n var _px;\n\n var _py;\n\n var _pz;\n\n var _transformFactory;\n\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p);\n } else {\n _px = ExpressionPropertyInterface(transform.px);\n _py = ExpressionPropertyInterface(transform.py);\n\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz);\n }\n }\n\n Object.defineProperty(_thisFunction, 'position', {\n get: function get() {\n if (transform.p) {\n return _transformFactory();\n }\n\n return [_px(), _py(), _pz ? _pz() : 0];\n }\n });\n Object.defineProperty(_thisFunction, 'xPosition', {\n get: ExpressionPropertyInterface(transform.px)\n });\n Object.defineProperty(_thisFunction, 'yPosition', {\n get: ExpressionPropertyInterface(transform.py)\n });\n Object.defineProperty(_thisFunction, 'zPosition', {\n get: ExpressionPropertyInterface(transform.pz)\n });\n Object.defineProperty(_thisFunction, 'anchorPoint', {\n get: ExpressionPropertyInterface(transform.a)\n });\n Object.defineProperty(_thisFunction, 'opacity', {\n get: ExpressionPropertyInterface(transform.o)\n });\n Object.defineProperty(_thisFunction, 'skew', {\n get: ExpressionPropertyInterface(transform.sk)\n });\n Object.defineProperty(_thisFunction, 'skewAxis', {\n get: ExpressionPropertyInterface(transform.sa)\n });\n Object.defineProperty(_thisFunction, 'orientation', {\n get: ExpressionPropertyInterface(transform.or)\n });\n return _thisFunction;\n };\n }();\n\n var LayerExpressionInterface = function () {\n function getMatrix(time) {\n var toWorldMat = new Matrix();\n\n if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n\n propMatrix.clone(toWorldMat);\n } else {\n var transformMat = this._elem.finalTransform.mProp;\n transformMat.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat;\n }\n\n function toWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.applyPoint(toWorldMat, arr);\n }\n\n function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.applyPoint(toWorldMat, arr);\n }\n\n function fromWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.invertPoint(toWorldMat, arr);\n }\n\n function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.invertPoint(toWorldMat, arr);\n }\n\n function applyPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n }\n\n function invertPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.inversePoint(arr);\n }\n\n function fromComp(arr) {\n var toWorldMat = new Matrix();\n toWorldMat.reset();\n\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n function sampleImage() {\n return [1, 1, 1, 1];\n }\n\n return function (elem) {\n var transformInterface;\n\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n }\n\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects;\n }\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Root Vectors Group':\n case 'Contents':\n case 2:\n return _thisLayerFunction.shapeInterface;\n\n case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface;\n\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect;\n\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface;\n\n default:\n return null;\n }\n }\n\n _thisLayerFunction.getMatrix = getMatrix;\n _thisLayerFunction.invertPoint = invertPoint;\n _thisLayerFunction.applyPoint = applyPoint;\n _thisLayerFunction.toWorld = toWorld;\n _thisLayerFunction.toWorldVec = toWorldVec;\n _thisLayerFunction.fromWorld = fromWorld;\n _thisLayerFunction.fromWorldVec = fromWorldVec;\n _thisLayerFunction.toComp = toWorld;\n _thisLayerFunction.fromComp = fromComp;\n _thisLayerFunction.sampleImage = sampleImage;\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\n _thisLayerFunction._elem = elem;\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\n Object.defineProperties(_thisLayerFunction, {\n hasParent: {\n get: function get() {\n return elem.hierarchy.length;\n }\n },\n parent: {\n get: function get() {\n return elem.hierarchy[0].layerInterface;\n }\n },\n rotation: getDescriptor(transformInterface, 'rotation'),\n scale: getDescriptor(transformInterface, 'scale'),\n position: getDescriptor(transformInterface, 'position'),\n opacity: getDescriptor(transformInterface, 'opacity'),\n anchorPoint: anchorPointDescriptor,\n anchor_point: anchorPointDescriptor,\n transform: {\n get: function get() {\n return transformInterface;\n }\n },\n active: {\n get: function get() {\n return elem.isInRange;\n }\n }\n });\n _thisLayerFunction.startTime = elem.data.st;\n _thisLayerFunction.index = elem.data.ind;\n _thisLayerFunction.source = elem.data.refId;\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\n _thisLayerFunction._name = elem.data.nm;\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\n return _thisLayerFunction;\n };\n }();\n\n var propertyGroupFactory = function () {\n return function (interfaceFunction, parentPropertyGroup) {\n return function (val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return parentPropertyGroup(val - 1);\n };\n };\n }();\n\n var PropertyInterface = function () {\n return function (propertyName, propertyGroup) {\n var interfaceFunction = {\n _name: propertyName\n };\n\n function _propertyGroup(val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return propertyGroup(val - 1);\n }\n\n return _propertyGroup;\n };\n }();\n\n var EffectsExpressionInterface = function () {\n var ob = {\n createEffectsInterface: createEffectsInterface\n };\n\n function createEffectsInterface(elem, propertyGroup) {\n if (elem.effectsManager) {\n var effectElements = [];\n var effectsData = elem.data.ef;\n var i;\n var len = elem.effectsManager.effectElements.length;\n\n for (i = 0; i < len; i += 1) {\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n }\n\n var effects = elem.data.ef || [];\n\n var groupInterface = function groupInterface(name) {\n i = 0;\n len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function get() {\n return effects.length;\n }\n });\n return groupInterface;\n }\n\n return null;\n }\n\n function createGroupInterface(data, elements, propertyGroup, elem) {\n function groupInterface(name) {\n var effects = data.ef;\n var i = 0;\n var len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n if (effects[i].ty === 5) {\n return effectElements[i];\n }\n\n return effectElements[i]();\n }\n\n i += 1;\n }\n\n throw new Error();\n }\n\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n\n var effectElements = [];\n var i;\n var len = data.ef.length;\n\n for (i = 0; i < len; i += 1) {\n if (data.ef[i].ty === 5) {\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\n } else {\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\n }\n }\n\n if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function get() {\n return effectElements[0]();\n }\n });\n }\n\n Object.defineProperties(groupInterface, {\n numProperties: {\n get: function get() {\n return data.np;\n }\n },\n _name: {\n value: data.nm\n },\n propertyGroup: {\n value: _propertyGroup\n }\n });\n groupInterface.enabled = data.en !== 0;\n groupInterface.active = groupInterface.enabled;\n return groupInterface;\n }\n\n function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p);\n\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v);\n }\n\n return expressionProperty();\n }\n\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n }\n\n return interfaceFunction;\n }\n\n return ob;\n }();\n\n var ShapePathInterface = function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh;\n\n function interfaceFunction(val) {\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\n return interfaceFunction.path;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n path: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n shape: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n _name: {\n value: shape.nm\n },\n ix: {\n value: shape.ix\n },\n propertyIndex: {\n value: shape.ix\n },\n mn: {\n value: shape.mn\n },\n propertyGroup: {\n value: propertyGroup\n }\n });\n return interfaceFunction;\n };\n }();\n\n var ShapeExpressionInterface = function () {\n function iterateElements(shapes, view, propertyGroup) {\n var arr = [];\n var i;\n var len = shapes ? shapes.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'fl') {\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'st') {\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tm') {\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tr') {// arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n } else if (shapes[i].ty === 'el') {\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sr') {\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sh') {\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rc') {\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rd') {\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rp') {\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'gf') {\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else {\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\n }\n }\n\n return arr;\n }\n\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces;\n\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n if (typeof value === 'number') {\n return interfaces[value - 1];\n }\n\n return null;\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\n interfaceFunction.numProperties = interfaces.length;\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.transform = transformInterface;\n interfaceFunction.propertyIndex = shape.cix;\n interfaceFunction._name = shape.nm;\n return interfaceFunction;\n }\n\n function groupInterfaceFactory(shape, view, propertyGroup) {\n var interfaceFunction = function _interfaceFunction(value) {\n switch (value) {\n case 'ADBE Vectors Group':\n case 'Contents':\n case 2:\n return interfaceFunction.content;\n // Not necessary for now. Keeping them here in case a new case appears\n // case 'ADBE Vector Transform Group':\n // case 3:\n\n default:\n return interfaceFunction.transform;\n }\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.content = content;\n interfaceFunction.transform = transformInterface;\n Object.defineProperty(interfaceFunction, '_name', {\n get: function get() {\n return shape.nm;\n }\n }); // interfaceFunction.content = interfaceFunction;\n\n interfaceFunction.numProperties = shape.np;\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.nm = shape.nm;\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint;\n }\n\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n startPoint: {\n get: ExpressionPropertyInterface(view.s)\n },\n endPoint: {\n get: ExpressionPropertyInterface(view.e)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n type: {\n get: function get() {\n return 'a';\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null;\n }\n\n return interfaceFunction;\n }\n\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n });\n }\n\n var i;\n var len = shape.d ? shape.d.length : 0;\n var dashOb = {};\n\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i);\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n }\n\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n strokeWidth: {\n get: ExpressionPropertyInterface(view.w)\n },\n dash: {\n get: function get() {\n return dashOb;\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\n return interfaceFunction;\n }\n\n function trimInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === shape.e.ix || val === 'End' || val === 'end') {\n return interfaceFunction.end;\n }\n\n if (val === shape.s.ix) {\n return interfaceFunction.start;\n }\n\n if (val === shape.o.ix) {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.propertyGroup = propertyGroup;\n Object.defineProperties(interfaceFunction, {\n start: {\n get: ExpressionPropertyInterface(view.s)\n },\n end: {\n get: ExpressionPropertyInterface(view.e)\n },\n offset: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function transformInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.a.ix === value || value === 'Anchor Point') {\n return interfaceFunction.anchorPoint;\n }\n\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity;\n }\n\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation;\n }\n\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale;\n }\n\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n return interfaceFunction.skew;\n }\n\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n return interfaceFunction.skewAxis;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (view.transform.mProps.sk) {\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\n }\n\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n opacity: {\n get: ExpressionPropertyInterface(view.transform.mProps.o)\n },\n position: {\n get: ExpressionPropertyInterface(view.transform.mProps.p)\n },\n anchorPoint: {\n get: ExpressionPropertyInterface(view.transform.mProps.a)\n },\n scale: {\n get: ExpressionPropertyInterface(view.transform.mProps.s)\n },\n rotation: {\n get: ExpressionPropertyInterface(view.transform.mProps.r)\n },\n skew: {\n get: ExpressionPropertyInterface(view.transform.mProps.sk)\n },\n skewAxis: {\n get: ExpressionPropertyInterface(view.transform.mProps.sa)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.ty = 'tr';\n interfaceFunction.mn = shape.mn;\n interfaceFunction.propertyGroup = propertyGroup;\n return interfaceFunction;\n }\n\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.s.ix === value) {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.rotation;\n }\n\n if (shape.pt.ix === value) {\n return interfaceFunction.points;\n }\n\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius;\n }\n\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness;\n }\n\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius;\n }\n\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n }\n\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n rotation: {\n get: ExpressionPropertyInterface(prop.r)\n },\n points: {\n get: ExpressionPropertyInterface(prop.pt)\n },\n outerRadius: {\n get: ExpressionPropertyInterface(prop.or)\n },\n outerRoundness: {\n get: ExpressionPropertyInterface(prop.os)\n },\n innerRadius: {\n get: ExpressionPropertyInterface(prop.ir)\n },\n innerRoundness: {\n get: ExpressionPropertyInterface(prop.is)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.roundness;\n }\n\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n roundness: {\n get: ExpressionPropertyInterface(prop.r)\n },\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function roundedInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.r.ix === value || value === 'Round Corners 1') {\n return interfaceFunction.radius;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n radius: {\n get: ExpressionPropertyInterface(prop.rd)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies;\n }\n\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n copies: {\n get: ExpressionPropertyInterface(prop.c)\n },\n offset: {\n get: ExpressionPropertyInterface(prop.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n return function (shapes, view, propertyGroup) {\n var interfaces;\n\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value;\n\n if (value === 0) {\n return propertyGroup;\n }\n\n return interfaces[value - 1];\n }\n\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function parentGroupWrapper() {\n return propertyGroup;\n }\n\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\n _interfaceFunction.numProperties = interfaces.length;\n _interfaceFunction._name = 'Contents';\n return _interfaceFunction;\n };\n }();\n\n var TextExpressionInterface = function () {\n return function (elem) {\n var _sourceText;\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function get() {\n elem.textProperty.getValue();\n var stringValue = elem.textProperty.currentData.t;\n\n if (!_sourceText || stringValue !== _sourceText.value) {\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n\n Object.defineProperty(_sourceText, 'style', {\n get: function get() {\n return {\n fillColor: elem.textProperty.currentData.fc\n };\n }\n });\n }\n\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\n }();\n\n function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n var FootageInterface = function () {\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n var currentPropertyName = '';\n var currentProperty = elem.getFootageData();\n\n function init() {\n currentPropertyName = '';\n currentProperty = elem.getFootageData();\n return searchProperty;\n }\n\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value;\n currentProperty = currentProperty[value];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n var propertyNameIndex = value.indexOf(currentPropertyName);\n\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n currentProperty = currentProperty[index];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n return '';\n }\n\n return init;\n };\n\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface();\n }\n\n return null;\n }\n\n interfaceFunction._name = 'Outline';\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n return interfaceFunction;\n };\n\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface;\n }\n\n return null;\n }\n\n _interfaceFunction._name = 'Data';\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\n return _interfaceFunction;\n };\n }();\n\n var interfaces = {\n layer: LayerExpressionInterface,\n effects: EffectsExpressionInterface,\n comp: CompExpressionInterface,\n shape: ShapeExpressionInterface,\n text: TextExpressionInterface,\n footage: FootageInterface\n };\n\n function getInterface(type) {\n return interfaces[type] || null;\n }\n\n var expressionHelpers = function () {\n function searchExpressions(elem, data, prop) {\n if (data.x) {\n prop.k = true;\n prop.x = true;\n prop.initiateExpression = ExpressionManager.initiateExpression;\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\n }\n }\n\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastFrame) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\n this._cachingAtTime.lastFrame = frameNum;\n }\n\n return this._cachingAtTime.value;\n }\n\n function getSpeedAtTime(frameNum) {\n var delta = -0.01;\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var speed = 0;\n\n if (v1.length) {\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2);\n }\n\n speed = Math.sqrt(speed) * 100;\n } else {\n speed = 0;\n }\n\n return speed;\n }\n\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel;\n }\n\n var delta = -0.001; // frameNum += this.elem.data.st;\n\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var velocity;\n\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length);\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n // removing frameRate\n // if needed, don't add it here\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n velocity[i] = (v2[i] - v1[i]) / delta;\n }\n } else {\n velocity = (v2 - v1) / delta;\n }\n\n return velocity;\n }\n\n function getStaticValueAtTime() {\n return this.pv;\n }\n\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup;\n }\n\n return {\n searchExpressions: searchExpressions,\n getSpeedAtTime: getSpeedAtTime,\n getVelocityAtTime: getVelocityAtTime,\n getValueAtTime: getValueAtTime,\n getStaticValueAtTime: getStaticValueAtTime,\n setGroupProperty: setGroupProperty\n };\n }();\n\n function addPropertyDecorator() {\n function loopOut(type, duration, durationFlag) {\n if (!this.k || !this.keyframes) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\n\n if (currentFrame <= lastKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var firstKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\n } else {\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\n }\n\n firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (iterations % 2 !== 0) {\n return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n }\n\n return ret;\n }\n\n return (endV - initV) * repeats + current;\n } else if (type === 'continue') {\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(lastValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\n }\n\n return ret;\n }\n\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n }\n\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var firstKeyFrame = keyframes[0].t;\n\n if (currentFrame >= firstKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var lastKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n lastKeyFrame = keyframes[duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\n } else {\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\n }\n\n lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n\n if (iterations % 2 === 0) {\n return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n }\n\n return ret;\n }\n\n return current - (endV - initV) * repeats;\n } else if (type === 'continue') {\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(firstValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return ret;\n }\n\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv;\n }\n\n width = (width || 0.4) * 0.5;\n samples = Math.floor(samples || 5);\n\n if (samples <= 1) {\n return this.pv;\n }\n\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\n var initFrame = currentTime - width;\n var endFrame = currentTime + width;\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n var i = 0;\n var j = 0;\n var value;\n\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n\n var sampleValue;\n\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] += sampleValue[j];\n }\n } else {\n value += sampleValue;\n }\n\n i += 1;\n }\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] /= samples;\n }\n } else {\n value /= samples;\n }\n\n return value;\n }\n\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix()\n };\n } /// /\n\n\n var matrix = this._transformCachingAtTime.v;\n matrix.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n var anchor = this.a.getValueAtTime(time);\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\n }\n\n if (this.appliedTransformations < 2) {\n var scale = this.s.getValueAtTime(time);\n matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n var skew = this.sk.getValueAtTime(time);\n var skewAxis = this.sa.getValueAtTime(time);\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n var rotation = this.r.getValueAtTime(time);\n matrix.rotate(-rotation * this.r.mult);\n } else if (!this.r && this.appliedTransformations < 4) {\n var rotationZ = this.rz.getValueAtTime(time);\n var rotationY = this.ry.getValueAtTime(time);\n var rotationX = this.rx.getValueAtTime(time);\n var orientation = this.or.getValueAtTime(time);\n matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\n }\n\n if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time);\n var positionY = this.py.getValueAtTime(time);\n\n if (this.data.p.z) {\n var positionZ = this.pz.getValueAtTime(time);\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\n } else {\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\n }\n } else {\n var position = this.p.getValueAtTime(time);\n matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\n }\n\n return matrix; /// /\n }\n\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix());\n }\n\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n\n var propertyGetProp = PropertyFactory.getProp;\n\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n prop.loopOut = loopOut;\n prop.loopIn = loopIn;\n prop.smooth = smooth;\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\n prop.numKeys = data.a === 1 ? data.k.length : 0;\n prop.propertyIndex = data.ix;\n var value = 0;\n\n if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem, data, prop);\n\n if (prop.k) {\n container.addDynamicProperty(prop);\n }\n\n return prop;\n };\n\n function getShapeValueAtTime(frameNum) {\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n if (!this._cachingAtTime) {\n this._cachingAtTime = {\n shapeValue: shapePool.clone(this.pv),\n lastIndex: 0,\n lastTime: initialDefaultFrame\n };\n }\n\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastTime) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\n this._cachingAtTime.lastTime = frameNum;\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\n }\n\n return this._cachingAtTime.shapeValue;\n }\n\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n\n function ShapeExpressions() {}\n\n ShapeExpressions.prototype = {\n vertices: function vertices(prop, time) {\n if (this.k) {\n this.getValue();\n }\n\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n var i;\n var len = shapePath._length;\n var vertices = shapePath[prop];\n var points = shapePath.v;\n var arr = createSizedArray(len);\n\n for (i = 0; i < len; i += 1) {\n if (prop === 'i' || prop === 'o') {\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\n } else {\n arr[i] = [vertices[i][0], vertices[i][1]];\n }\n }\n\n return arr;\n },\n points: function points(time) {\n return this.vertices('v', time);\n },\n inTangents: function inTangents(time) {\n return this.vertices('i', time);\n },\n outTangents: function outTangents(time) {\n return this.vertices('o', time);\n },\n isClosed: function isClosed() {\n return this.v.c;\n },\n pointOnPath: function pointOnPath(perc, time) {\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath);\n }\n\n var segmentsLength = this._segmentsLength;\n var lengths = segmentsLength.lengths;\n var lengthPos = segmentsLength.totalLength * perc;\n var i = 0;\n var len = lengths.length;\n var accumulatedLength = 0;\n var pt;\n\n while (i < len) {\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n var initIndex = i;\n var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\n break;\n } else {\n accumulatedLength += lengths[i].addedLength;\n }\n\n i += 1;\n }\n\n if (!pt) {\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\n }\n\n return pt;\n },\n vectorOnPath: function vectorOnPath(perc, time, vectorType) {\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n if (perc == 1) {\n // eslint-disable-line eqeqeq\n perc = this.v.c;\n } else if (perc == 0) {\n // eslint-disable-line eqeqeq\n perc = 0.999;\n }\n\n var pt1 = this.pointOnPath(perc, time);\n var pt2 = this.pointOnPath(perc + 0.001, time);\n var xLength = pt2[0] - pt1[0];\n var yLength = pt2[1] - pt1[1];\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\n\n if (magnitude === 0) {\n return [0, 0];\n }\n\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\n return unitVector;\n },\n tangentOnPath: function tangentOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'tangent');\n },\n normalOnPath: function normalOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'normal');\n },\n setGroupProperty: expressionHelpers.setGroupProperty,\n getValueAtTime: expressionHelpers.getStaticValueAtTime\n };\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\n\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\n prop.propertyIndex = data.ix;\n prop.lock = false;\n\n if (type === 3) {\n expressionHelpers.searchExpressions(elem, data.pt, prop);\n } else if (type === 4) {\n expressionHelpers.searchExpressions(elem, data.ks, prop);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n };\n }\n\n function initialize$1() {\n addPropertyDecorator();\n }\n\n function addDecorator() {\n function searchExpressions() {\n if (this.data.d.x) {\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\n this.addEffect(this.getExpressionValue.bind(this));\n return true;\n }\n\n return null;\n }\n\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text);\n\n if (currentValue.t !== newValue) {\n var newData = {};\n this.copyData(newData, currentValue);\n newData.t = newValue.toString();\n newData.__complete = false;\n return newData;\n }\n\n return currentValue;\n };\n\n TextProperty.prototype.searchProperty = function () {\n var isKeyframed = this.searchKeyframes();\n var hasExpressions = this.searchExpressions();\n this.kf = isKeyframed || hasExpressions;\n return this.kf;\n };\n\n TextProperty.prototype.searchExpressions = searchExpressions;\n }\n\n function initialize() {\n addDecorator();\n }\n\n function SVGComposableEffect() {}\n\n SVGComposableEffect.prototype = {\n createMergeNode: function createMergeNode(resultId, ins) {\n var feMerge = createNS('feMerge');\n feMerge.setAttribute('result', resultId);\n var feMergeNode;\n var i;\n\n for (i = 0; i < ins.length; i += 1) {\n feMergeNode = createNS('feMergeNode');\n feMergeNode.setAttribute('in', ins[i]);\n feMerge.appendChild(feMergeNode);\n feMerge.appendChild(feMergeNode);\n }\n\n return feMerge;\n }\n };\n\n var linearFilterValue = '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0';\n\n function SVGTintFilter(filter, filterManager, elem, id, source) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', linearFilterValue + ' 1 0');\n this.linearFilter = feColorMatrix;\n feColorMatrix.setAttribute('result', id + '_tint_1');\n filter.appendChild(feColorMatrix);\n feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id + '_tint_2');\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\n filter.appendChild(feMerge);\n }\n\n extendPrototype([SVGComposableEffect], SVGTintFilter);\n\n SVGTintFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var colorBlack = this.filterManager.effectElements[0].p.v;\n var colorWhite = this.filterManager.effectElements[1].p.v;\n var opacity = this.filterManager.effectElements[2].p.v / 100;\n this.linearFilter.setAttribute('values', linearFilterValue + ' ' + opacity + ' 0');\n this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 1 0');\n }\n };\n\n function SVGFillFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id);\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n }\n\n SVGFillFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color = this.filterManager.effectElements[2].p.v;\n var opacity = this.filterManager.effectElements[6].p.v;\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\n }\n };\n\n function SVGStrokeEffect(fil, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.elem = elem;\n this.paths = [];\n }\n\n SVGStrokeEffect.prototype.initialize = function () {\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n var path;\n var groupPath;\n var i;\n var len;\n\n if (this.filterManager.effectElements[1].p.v === 1) {\n len = this.elem.maskManager.masksProperties.length;\n i = 0;\n } else {\n i = this.filterManager.effectElements[0].p.v - 1;\n len = i + 1;\n }\n\n groupPath = createNS('g');\n groupPath.setAttribute('fill', 'none');\n groupPath.setAttribute('stroke-linecap', 'round');\n groupPath.setAttribute('stroke-dashoffset', 1);\n\n for (i; i < len; i += 1) {\n path = createNS('path');\n groupPath.appendChild(path);\n this.paths.push({\n p: path,\n m: i\n });\n }\n\n if (this.filterManager.effectElements[10].p.v === 3) {\n var mask = createNS('mask');\n var id = createElementID();\n mask.setAttribute('id', id);\n mask.setAttribute('mask-type', 'alpha');\n mask.appendChild(groupPath);\n this.elem.globalData.defs.appendChild(mask);\n var g = createNS('g');\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n\n while (elemChildren[0]) {\n g.appendChild(elemChildren[0]);\n }\n\n this.elem.layerElement.appendChild(g);\n this.masker = mask;\n groupPath.setAttribute('stroke', '#fff');\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (this.filterManager.effectElements[10].p.v === 2) {\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n\n while (elemChildren.length) {\n this.elem.layerElement.removeChild(elemChildren[0]);\n }\n }\n\n this.elem.layerElement.appendChild(groupPath);\n this.elem.layerElement.removeAttribute('mask');\n groupPath.setAttribute('stroke', '#fff');\n }\n\n this.initialized = true;\n this.pathMasker = groupPath;\n };\n\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n if (!this.initialized) {\n this.initialize();\n }\n\n var i;\n var len = this.paths.length;\n var mask;\n var path;\n\n for (i = 0; i < len; i += 1) {\n if (this.paths[i].m !== -1) {\n mask = this.elem.maskManager.viewData[this.paths[i].m];\n path = this.paths[i].p;\n\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n path.setAttribute('d', mask.lastPath);\n }\n\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\n var dasharrayValue;\n\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var l = path.getTotalLength();\n dasharrayValue = '0 0 0 ' + l * s + ' ';\n var lineLength = l * (e - s);\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n var units = Math.floor(lineLength / segment);\n var j;\n\n for (j = 0; j < units; j += 1) {\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\n }\n\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\n } else {\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n }\n\n path.setAttribute('stroke-dasharray', dasharrayValue);\n }\n }\n }\n\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\n }\n\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n }\n\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\n var color = this.filterManager.effectElements[3].p.v;\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\n }\n }\n };\n\n function SVGTritoneFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n filter.appendChild(feColorMatrix);\n var feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n this.matrixFilter = feComponentTransfer;\n var feFuncR = createNS('feFuncR');\n feFuncR.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncR);\n this.feFuncR = feFuncR;\n var feFuncG = createNS('feFuncG');\n feFuncG.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncG);\n this.feFuncG = feFuncG;\n var feFuncB = createNS('feFuncB');\n feFuncB.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncB);\n this.feFuncB = feFuncB;\n filter.appendChild(feComponentTransfer);\n }\n\n SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color1 = this.filterManager.effectElements[0].p.v;\n var color2 = this.filterManager.effectElements[1].p.v;\n var color3 = this.filterManager.effectElements[2].p.v;\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\n this.feFuncR.setAttribute('tableValues', tableR);\n this.feFuncG.setAttribute('tableValues', tableG);\n this.feFuncB.setAttribute('tableValues', tableB);\n }\n };\n\n function SVGProLevelsFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var effectElements = this.filterManager.effectElements;\n var feComponentTransfer = createNS('feComponentTransfer'); // Red\n\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\n } // Green\n\n\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\n } // Blue\n\n\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\n } // Alpha\n\n\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\n } // RGB\n\n\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\n }\n\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\n feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n filter.appendChild(feComponentTransfer);\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\n }\n }\n\n SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\n var feFunc = createNS(type);\n feFunc.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFunc);\n return feFunc;\n };\n\n SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\n var cnt = 0;\n var segments = 256;\n var perc;\n var min = Math.min(inputBlack, inputWhite);\n var max = Math.max(inputBlack, inputWhite);\n var table = Array.call(null, {\n length: segments\n });\n var colorValue;\n var pos = 0;\n var outputDelta = outputWhite - outputBlack;\n var inputDelta = inputWhite - inputBlack;\n\n while (cnt <= 256) {\n perc = cnt / 256;\n\n if (perc <= min) {\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\n } else if (perc >= max) {\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n } else {\n colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\n }\n\n table[pos] = colorValue;\n pos += 1;\n cnt += 256 / (segments - 1);\n }\n\n return table.join(' ');\n };\n\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var val;\n var effectElements = this.filterManager.effectElements;\n\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\n this.feFuncRComposed.setAttribute('tableValues', val);\n this.feFuncGComposed.setAttribute('tableValues', val);\n this.feFuncBComposed.setAttribute('tableValues', val);\n }\n\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\n this.feFuncR.setAttribute('tableValues', val);\n }\n\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\n this.feFuncG.setAttribute('tableValues', val);\n }\n\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\n this.feFuncB.setAttribute('tableValues', val);\n }\n\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\n this.feFuncA.setAttribute('tableValues', val);\n }\n }\n };\n\n function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\n var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\n var filterSize = filterManager.data.fs || globalFilterSize;\n filter.setAttribute('x', filterSize.x || globalFilterSize.x);\n filter.setAttribute('y', filterSize.y || globalFilterSize.y);\n filter.setAttribute('width', filterSize.width || globalFilterSize.width);\n filter.setAttribute('height', filterSize.height || globalFilterSize.height);\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\n feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\n feGaussianBlur.setAttribute('stdDeviation', '0');\n this.feGaussianBlur = feGaussianBlur;\n filter.appendChild(feGaussianBlur);\n var feOffset = createNS('feOffset');\n feOffset.setAttribute('dx', '25');\n feOffset.setAttribute('dy', '0');\n feOffset.setAttribute('in', id + '_drop_shadow_1');\n feOffset.setAttribute('result', id + '_drop_shadow_2');\n this.feOffset = feOffset;\n filter.appendChild(feOffset);\n var feFlood = createNS('feFlood');\n feFlood.setAttribute('flood-color', '#00ff00');\n feFlood.setAttribute('flood-opacity', '1');\n feFlood.setAttribute('result', id + '_drop_shadow_3');\n this.feFlood = feFlood;\n filter.appendChild(feFlood);\n var feComposite = createNS('feComposite');\n feComposite.setAttribute('in', id + '_drop_shadow_3');\n feComposite.setAttribute('in2', id + '_drop_shadow_2');\n feComposite.setAttribute('operator', 'in');\n feComposite.setAttribute('result', id + '_drop_shadow_4');\n filter.appendChild(feComposite);\n var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\n filter.appendChild(feMerge); //\n }\n\n extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\n\n SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\n }\n\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\n var col = this.filterManager.effectElements[0].p.v;\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\n }\n\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n }\n\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\n var distance = this.filterManager.effectElements[3].p.v;\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\n var x = distance * Math.cos(angle);\n var y = distance * Math.sin(angle);\n this.feOffset.setAttribute('dx', x);\n this.feOffset.setAttribute('dy', y);\n }\n }\n };\n\n var _svgMatteSymbols = [];\n\n function SVGMatte3Effect(filterElem, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.filterElem = filterElem;\n this.elem = elem;\n elem.matteElement = createNS('g');\n elem.matteElement.appendChild(elem.layerElement);\n elem.matteElement.appendChild(elem.transformedElement);\n elem.baseElement = elem.matteElement;\n }\n\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\n var i = 0;\n var len = _svgMatteSymbols.length;\n\n while (i < len) {\n if (_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n\n if (!parentNode) {\n return;\n }\n\n var children = parentNode.children;\n var i = 0;\n var len = children.length;\n\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n\n i += 1;\n }\n\n var nextChild;\n\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n\n if (nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\n }\n };\n\n SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\n if (!this.findSymbol(mask)) {\n var symbolId = createElementID();\n var masker = createNS('mask');\n masker.setAttribute('id', mask.layerId);\n masker.setAttribute('mask-type', 'alpha');\n\n _svgMatteSymbols.push(mask);\n\n var defs = elem.globalData.defs;\n defs.appendChild(masker);\n var symbol = createNS('symbol');\n symbol.setAttribute('id', symbolId);\n this.replaceInParent(mask, symbolId);\n symbol.appendChild(mask.layerElement);\n defs.appendChild(symbol);\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n masker.appendChild(useElem);\n mask.data.hd = false;\n mask.show();\n }\n\n elem.setMatte(mask.layerId);\n };\n\n SVGMatte3Effect.prototype.initialize = function () {\n var ind = this.filterManager.effectElements[0].p.v;\n var elements = this.elem.comp.elements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i] && elements[i].data.ind === ind) {\n this.setElementAsMask(this.elem, elements[i]);\n }\n\n i += 1;\n }\n\n this.initialized = true;\n };\n\n SVGMatte3Effect.prototype.renderFrame = function () {\n if (!this.initialized) {\n this.initialize();\n }\n };\n\n function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\n filter.setAttribute('x', '-100%');\n filter.setAttribute('y', '-100%');\n filter.setAttribute('width', '300%');\n filter.setAttribute('height', '300%');\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('result', id);\n filter.appendChild(feGaussianBlur);\n this.feGaussianBlur = feGaussianBlur;\n }\n\n SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n // Empirical value, matching AE's blur appearance.\n var kBlurrinessToSigma = 0.3;\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma; // Dimensions mapping:\n //\n // 1 -> horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n };\n\n function TransformEffect() {}\n\n TransformEffect.prototype.init = function (effectsManager) {\n this.effectsManager = effectsManager;\n this.type = effectTypes.TRANSFORM_EFFECT;\n this.matrix = new Matrix();\n this.opacity = -1;\n this._mdf = false;\n this._opMdf = false;\n };\n\n TransformEffect.prototype.renderFrame = function (forceFrame) {\n this._opMdf = false;\n this._mdf = false;\n\n if (forceFrame || this.effectsManager._mdf) {\n var effectElements = this.effectsManager.effectElements;\n var anchor = effectElements[0].p.v;\n var position = effectElements[1].p.v;\n var isUniformScale = effectElements[2].p.v === 1;\n var scaleHeight = effectElements[3].p.v;\n var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v;\n var skew = effectElements[5].p.v;\n var skewAxis = effectElements[6].p.v;\n var rotation = effectElements[7].p.v;\n this.matrix.reset();\n this.matrix.translate(-anchor[0], -anchor[1], anchor[2]);\n this.matrix.scale(scaleWidth * 0.01, scaleHeight * 0.01, 1);\n this.matrix.rotate(-rotation * degToRads);\n this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads);\n this.matrix.translate(position[0], position[1], 0);\n this._mdf = true;\n\n if (this.opacity !== effectElements[8].p.v) {\n this.opacity = effectElements[8].p.v;\n this._opMdf = true;\n }\n }\n };\n\n function SVGTransformEffect(_, filterManager) {\n this.init(filterManager);\n }\n\n extendPrototype([TransformEffect], SVGTransformEffect);\n\n function CVTransformEffect(effectsManager) {\n this.init(effectsManager);\n }\n\n extendPrototype([TransformEffect], CVTransformEffect);\n\n registerRenderer('canvas', CanvasRenderer);\n registerRenderer('html', HybridRenderer);\n registerRenderer('svg', SVGRenderer); // Registering shape modifiers\n\n ShapeModifiers.registerModifier('tm', TrimModifier);\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\n ShapeModifiers.registerModifier('rp', RepeaterModifier);\n ShapeModifiers.registerModifier('rd', RoundCornersModifier);\n ShapeModifiers.registerModifier('zz', ZigZagModifier);\n ShapeModifiers.registerModifier('op', OffsetPathModifier); // Registering expression plugin\n\n setExpressionsPlugin(Expressions);\n setExpressionInterfaces(getInterface);\n initialize$1();\n initialize(); // Registering svg effects\n\n registerEffect$1(20, SVGTintFilter, true);\n registerEffect$1(21, SVGFillFilter, true);\n registerEffect$1(22, SVGStrokeEffect, false);\n registerEffect$1(23, SVGTritoneFilter, true);\n registerEffect$1(24, SVGProLevelsFilter, true);\n registerEffect$1(25, SVGDropShadowEffect, true);\n registerEffect$1(28, SVGMatte3Effect, false);\n registerEffect$1(29, SVGGaussianBlurEffect, true);\n registerEffect$1(35, SVGTransformEffect, false);\n registerEffect(35, CVTransformEffect);\n\n return lottie;\n\n}));\n","import lottie from 'lottie-web';\nexport { default as LottiePlayer } from 'lottie-web';\nimport React, { useState, useRef, useEffect } from 'react';\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nvar _excluded$1 = [\"animationData\", \"loop\", \"autoplay\", \"initialSegment\", \"onComplete\", \"onLoopComplete\", \"onEnterFrame\", \"onSegmentStart\", \"onConfigReady\", \"onDataReady\", \"onDataFailed\", \"onLoadedImages\", \"onDOMLoaded\", \"onDestroy\", \"lottieRef\", \"renderer\", \"name\", \"assetsPath\", \"rendererSettings\"];\nvar useLottie = function useLottie(props, style) {\n var animationData = props.animationData,\n loop = props.loop,\n autoplay = props.autoplay,\n initialSegment = props.initialSegment,\n onComplete = props.onComplete,\n onLoopComplete = props.onLoopComplete,\n onEnterFrame = props.onEnterFrame,\n onSegmentStart = props.onSegmentStart,\n onConfigReady = props.onConfigReady,\n onDataReady = props.onDataReady,\n onDataFailed = props.onDataFailed,\n onLoadedImages = props.onLoadedImages,\n onDOMLoaded = props.onDOMLoaded,\n onDestroy = props.onDestroy;\n props.lottieRef;\n props.renderer;\n props.name;\n props.assetsPath;\n props.rendererSettings;\n var rest = _objectWithoutProperties(props, _excluded$1);\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n animationLoaded = _useState2[0],\n setAnimationLoaded = _useState2[1];\n var animationInstanceRef = useRef();\n var animationContainer = useRef(null);\n /*\n ======================================\n INTERACTION METHODS\n ======================================\n */\n /**\n * Play\n */\n var play = function play() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.play();\n };\n /**\n * Stop\n */\n var stop = function stop() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.stop();\n };\n /**\n * Pause\n */\n var pause = function pause() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.pause();\n };\n /**\n * Set animation speed\n * @param speed\n */\n var setSpeed = function setSpeed(speed) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setSpeed(speed);\n };\n /**\n * Got to frame and play\n * @param value\n * @param isFrame\n */\n var goToAndPlay = function goToAndPlay(value, isFrame) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.goToAndPlay(value, isFrame);\n };\n /**\n * Got to frame and stop\n * @param value\n * @param isFrame\n */\n var goToAndStop = function goToAndStop(value, isFrame) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.goToAndStop(value, isFrame);\n };\n /**\n * Set animation direction\n * @param direction\n */\n var setDirection = function setDirection(direction) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setDirection(direction);\n };\n /**\n * Play animation segments\n * @param segments\n * @param forceFlag\n */\n var playSegments = function playSegments(segments, forceFlag) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.playSegments(segments, forceFlag);\n };\n /**\n * Set sub frames\n * @param useSubFrames\n */\n var setSubframe = function setSubframe(useSubFrames) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setSubframe(useSubFrames);\n };\n /**\n * Get animation duration\n * @param inFrames\n */\n var getDuration = function getDuration(inFrames) {\n var _a;\n return (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.getDuration(inFrames);\n };\n /**\n * Destroy animation\n */\n var destroy = function destroy() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n // Removing the reference to the animation so separate cleanups are skipped.\n // Without it the internal `lottie-react` instance throws exceptions as it already cleared itself on destroy.\n animationInstanceRef.current = undefined;\n };\n /*\n ======================================\n LOTTIE\n ======================================\n */\n /**\n * Load a new animation, and if it's the case, destroy the previous one\n * @param {Object} forcedConfigs\n */\n var loadAnimation = function loadAnimation() {\n var forcedConfigs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _a;\n // Return if the container ref is null\n if (!animationContainer.current) {\n return;\n }\n // Destroy any previous instance\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n // Build the animation configuration\n var config = _objectSpread2(_objectSpread2(_objectSpread2({}, props), forcedConfigs), {}, {\n container: animationContainer.current\n });\n // Save the animation instance\n animationInstanceRef.current = lottie.loadAnimation(config);\n setAnimationLoaded(!!animationInstanceRef.current);\n // Return a function that will clean up\n return function () {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n animationInstanceRef.current = undefined;\n };\n };\n /**\n * (Re)Initialize when animation data changed\n */\n useEffect(function () {\n var onUnmount = loadAnimation();\n // Clean up on unmount\n return function () {\n return onUnmount === null || onUnmount === void 0 ? void 0 : onUnmount();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [animationData, loop]);\n // Update the autoplay state\n useEffect(function () {\n if (!animationInstanceRef.current) {\n return;\n }\n animationInstanceRef.current.autoplay = !!autoplay;\n }, [autoplay]);\n // Update the initial segment state\n useEffect(function () {\n if (!animationInstanceRef.current) {\n return;\n }\n // When null should reset to default animation length\n if (!initialSegment) {\n animationInstanceRef.current.resetSegments(true);\n return;\n }\n // If it's not a valid segment, do nothing\n if (!Array.isArray(initialSegment) || !initialSegment.length) {\n return;\n }\n // If the current position it's not in the new segment\n // set the current position to start\n if (animationInstanceRef.current.currentRawFrame < initialSegment[0] || animationInstanceRef.current.currentRawFrame > initialSegment[1]) {\n animationInstanceRef.current.currentRawFrame = initialSegment[0];\n }\n // Update the segment\n animationInstanceRef.current.setSegment(initialSegment[0], initialSegment[1]);\n }, [initialSegment]);\n /*\n ======================================\n EVENTS\n ======================================\n */\n /**\n * Reinitialize listener on change\n */\n useEffect(function () {\n var partialListeners = [{\n name: \"complete\",\n handler: onComplete\n }, {\n name: \"loopComplete\",\n handler: onLoopComplete\n }, {\n name: \"enterFrame\",\n handler: onEnterFrame\n }, {\n name: \"segmentStart\",\n handler: onSegmentStart\n }, {\n name: \"config_ready\",\n handler: onConfigReady\n }, {\n name: \"data_ready\",\n handler: onDataReady\n }, {\n name: \"data_failed\",\n handler: onDataFailed\n }, {\n name: \"loaded_images\",\n handler: onLoadedImages\n }, {\n name: \"DOMLoaded\",\n handler: onDOMLoaded\n }, {\n name: \"destroy\",\n handler: onDestroy\n }];\n var listeners = partialListeners.filter(function (listener) {\n return listener.handler != null;\n });\n if (!listeners.length) {\n return;\n }\n var deregisterList = listeners.map(\n /**\n * Handle the process of adding an event listener\n * @param {Listener} listener\n * @return {Function} Function that deregister the listener\n */\n function (listener) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener(listener.name, listener.handler);\n // Return a function to deregister this listener\n return function () {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener(listener.name, listener.handler);\n };\n });\n // Deregister listeners on unmount\n return function () {\n deregisterList.forEach(function (deregister) {\n return deregister();\n });\n };\n }, [onComplete, onLoopComplete, onEnterFrame, onSegmentStart, onConfigReady, onDataReady, onDataFailed, onLoadedImages, onDOMLoaded, onDestroy]);\n /**\n * Build the animation view\n */\n var View = /*#__PURE__*/React.createElement(\"div\", _objectSpread2({\n style: style,\n ref: animationContainer\n }, rest));\n return {\n View: View,\n play: play,\n stop: stop,\n pause: pause,\n setSpeed: setSpeed,\n goToAndStop: goToAndStop,\n goToAndPlay: goToAndPlay,\n setDirection: setDirection,\n playSegments: playSegments,\n setSubframe: setSubframe,\n getDuration: getDuration,\n destroy: destroy,\n animationContainerRef: animationContainer,\n animationLoaded: animationLoaded,\n animationItem: animationInstanceRef.current\n };\n};\n\n// helpers\nfunction getContainerVisibility(container) {\n var _container$getBoundin = container.getBoundingClientRect(),\n top = _container$getBoundin.top,\n height = _container$getBoundin.height;\n var current = window.innerHeight - top;\n var max = window.innerHeight + height;\n return current / max;\n}\nfunction getContainerCursorPosition(container, cursorX, cursorY) {\n var _container$getBoundin2 = container.getBoundingClientRect(),\n top = _container$getBoundin2.top,\n left = _container$getBoundin2.left,\n width = _container$getBoundin2.width,\n height = _container$getBoundin2.height;\n var x = (cursorX - left) / width;\n var y = (cursorY - top) / height;\n return {\n x: x,\n y: y\n };\n}\nvar useInitInteractivity = function useInitInteractivity(_ref) {\n var wrapperRef = _ref.wrapperRef,\n animationItem = _ref.animationItem,\n mode = _ref.mode,\n actions = _ref.actions;\n useEffect(function () {\n var wrapper = wrapperRef.current;\n if (!wrapper || !animationItem || !actions.length) {\n return;\n }\n animationItem.stop();\n var scrollModeHandler = function scrollModeHandler() {\n var assignedSegment = null;\n var scrollHandler = function scrollHandler() {\n var currentPercent = getContainerVisibility(wrapper);\n // Find the first action that satisfies the current position conditions\n var action = actions.find(function (_ref2) {\n var visibility = _ref2.visibility;\n return visibility && currentPercent >= visibility[0] && currentPercent <= visibility[1];\n });\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n if (action.type === \"seek\" && action.visibility && action.frames.length === 2) {\n // Seek: Go to a frame based on player scroll position action\n var frameToGo = action.frames[0] + Math.ceil((currentPercent - action.visibility[0]) / (action.visibility[1] - action.visibility[0]) * action.frames[1]);\n //! goToAndStop must be relative to the start of the current segment\n animationItem.goToAndStop(frameToGo - animationItem.firstFrame - 1, true);\n }\n if (action.type === \"loop\") {\n // Loop: Loop a given frames\n if (assignedSegment === null) {\n // if not playing any segments currently. play those segments and save to state\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n } else {\n // if playing any segments currently.\n //check if segments in state are equal to the frames selected by action\n if (assignedSegment !== action.frames) {\n // if they are not equal. new segments are to be loaded\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n } else if (animationItem.isPaused) {\n // if they are equal the play method must be called only if lottie is paused\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n }\n }\n }\n if (action.type === \"play\" && animationItem.isPaused) {\n // Play: Reset segments and continue playing full animation from current position\n animationItem.resetSegments(true);\n animationItem.play();\n }\n if (action.type === \"stop\") {\n // Stop: Stop playback\n animationItem.goToAndStop(action.frames[0] - animationItem.firstFrame - 1, true);\n }\n };\n document.addEventListener(\"scroll\", scrollHandler);\n return function () {\n document.removeEventListener(\"scroll\", scrollHandler);\n };\n };\n var cursorModeHandler = function cursorModeHandler() {\n var handleCursor = function handleCursor(_x, _y) {\n var x = _x;\n var y = _y;\n // Resolve cursor position if cursor is inside container\n if (x !== -1 && y !== -1) {\n // Get container cursor position\n var pos = getContainerCursorPosition(wrapper, x, y);\n // Use the resolved position\n x = pos.x;\n y = pos.y;\n }\n // Find the first action that satisfies the current position conditions\n var action = actions.find(function (_ref3) {\n var position = _ref3.position;\n if (position && Array.isArray(position.x) && Array.isArray(position.y)) {\n return x >= position.x[0] && x <= position.x[1] && y >= position.y[0] && y <= position.y[1];\n }\n if (position && !Number.isNaN(position.x) && !Number.isNaN(position.y)) {\n return x === position.x && y === position.y;\n }\n return false;\n });\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n // Process action types:\n if (action.type === \"seek\" && action.position && Array.isArray(action.position.x) && Array.isArray(action.position.y) && action.frames.length === 2) {\n // Seek: Go to a frame based on player scroll position action\n var xPercent = (x - action.position.x[0]) / (action.position.x[1] - action.position.x[0]);\n var yPercent = (y - action.position.y[0]) / (action.position.y[1] - action.position.y[0]);\n animationItem.playSegments(action.frames, true);\n animationItem.goToAndStop(Math.ceil((xPercent + yPercent) / 2 * (action.frames[1] - action.frames[0])), true);\n }\n if (action.type === \"loop\") {\n animationItem.playSegments(action.frames, true);\n }\n if (action.type === \"play\") {\n // Play: Reset segments and continue playing full animation from current position\n if (animationItem.isPaused) {\n animationItem.resetSegments(false);\n }\n animationItem.playSegments(action.frames);\n }\n if (action.type === \"stop\") {\n animationItem.goToAndStop(action.frames[0], true);\n }\n };\n var mouseMoveHandler = function mouseMoveHandler(ev) {\n handleCursor(ev.clientX, ev.clientY);\n };\n var mouseOutHandler = function mouseOutHandler() {\n handleCursor(-1, -1);\n };\n wrapper.addEventListener(\"mousemove\", mouseMoveHandler);\n wrapper.addEventListener(\"mouseout\", mouseOutHandler);\n return function () {\n wrapper.removeEventListener(\"mousemove\", mouseMoveHandler);\n wrapper.removeEventListener(\"mouseout\", mouseOutHandler);\n };\n };\n switch (mode) {\n case \"scroll\":\n return scrollModeHandler();\n case \"cursor\":\n return cursorModeHandler();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mode, animationItem]);\n};\nvar useLottieInteractivity = function useLottieInteractivity(_ref4) {\n var actions = _ref4.actions,\n mode = _ref4.mode,\n lottieObj = _ref4.lottieObj;\n var animationItem = lottieObj.animationItem,\n View = lottieObj.View,\n animationContainerRef = lottieObj.animationContainerRef;\n useInitInteractivity({\n actions: actions,\n animationItem: animationItem,\n mode: mode,\n wrapperRef: animationContainerRef\n });\n return View;\n};\n\nvar _excluded = [\"style\", \"interactivity\"];\nvar Lottie = function Lottie(props) {\n var _a, _b, _c;\n var style = props.style,\n interactivity = props.interactivity,\n lottieProps = _objectWithoutProperties(props, _excluded);\n /**\n * Initialize the 'useLottie' hook\n */\n var _useLottie = useLottie(lottieProps, style),\n View = _useLottie.View,\n play = _useLottie.play,\n stop = _useLottie.stop,\n pause = _useLottie.pause,\n setSpeed = _useLottie.setSpeed,\n goToAndStop = _useLottie.goToAndStop,\n goToAndPlay = _useLottie.goToAndPlay,\n setDirection = _useLottie.setDirection,\n playSegments = _useLottie.playSegments,\n setSubframe = _useLottie.setSubframe,\n getDuration = _useLottie.getDuration,\n destroy = _useLottie.destroy,\n animationContainerRef = _useLottie.animationContainerRef,\n animationLoaded = _useLottie.animationLoaded,\n animationItem = _useLottie.animationItem;\n /**\n * Make the hook variables/methods available through the provided 'lottieRef'\n */\n useEffect(function () {\n if (props.lottieRef) {\n props.lottieRef.current = {\n play: play,\n stop: stop,\n pause: pause,\n setSpeed: setSpeed,\n goToAndPlay: goToAndPlay,\n goToAndStop: goToAndStop,\n setDirection: setDirection,\n playSegments: playSegments,\n setSubframe: setSubframe,\n getDuration: getDuration,\n destroy: destroy,\n animationContainerRef: animationContainerRef,\n animationLoaded: animationLoaded,\n animationItem: animationItem\n };\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [(_a = props.lottieRef) === null || _a === void 0 ? void 0 : _a.current]);\n return useLottieInteractivity({\n lottieObj: {\n View: View,\n play: play,\n stop: stop,\n pause: pause,\n setSpeed: setSpeed,\n goToAndStop: goToAndStop,\n goToAndPlay: goToAndPlay,\n setDirection: setDirection,\n playSegments: playSegments,\n setSubframe: setSubframe,\n getDuration: getDuration,\n destroy: destroy,\n animationContainerRef: animationContainerRef,\n animationLoaded: animationLoaded,\n animationItem: animationItem\n },\n actions: (_b = interactivity === null || interactivity === void 0 ? void 0 : interactivity.actions) !== null && _b !== void 0 ? _b : [],\n mode: (_c = interactivity === null || interactivity === void 0 ? void 0 : interactivity.mode) !== null && _c !== void 0 ? _c : \"scroll\"\n });\n};\n\nexport { Lottie as default, useLottie, useLottieInteractivity };\n//# sourceMappingURL=index.es.js.map\n","import { useLottie } from \"lottie-react\";\n\nimport AnimationData from \"../../../assets/lottie-animations/loader.json\" with { type: \"json\" };\nimport css from \"./loader.module.pcss\";\nimport stylesheet from \"./loader.module.pcss?inline\";\n\nimport { useCss } from \"@gef1/dax-react-sdk\";\nexport const Loader = () => {\n useCss(stylesheet);\n console.log({stylesheet});\n const options = {\n animationData: AnimationData,\n loop: true,\n };\n const { View: LoadingAnimation } = useLottie(options);\n\n return {LoadingAnimation}
;\n};\n","import { FC, PropsWithChildren } from \"react\";\n\nimport css from \"./avatar-container.module.pcss\";\nimport stylesheet from \"./avatar-container.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\n\ninterface AvatarContainerProps extends PropsWithChildren {\n inverted?: boolean;\n size?: \"small\" | \"large\";\n}\n\nexport const AvatarContainer: FC = ({ children, inverted = false, size = \"small\" }) => {\n const avatarSize = size === \"small\" ? \"32px\" : \"56px\";\n useCss(stylesheet)\n const style = {\n height: avatarSize,\n width: avatarSize,\n };\n\n return (\n \n {children}\n
\n );\n};\n","import { ActionButton, BodyText, Icon, Padder, TitleText } from \"belfius.geui.client.ui-react\";\nimport { FC, useState } from \"react\";\n\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\nimport { useDaxNavigation, useImageWithFallback, useMessageSender } from \"@/hooks\";\nimport { getAssetsUrl } from \"@/utils\";\n\nimport { AvatarContainer } from \"../avatars/avatar-container/avatar-container.tsx\";\nimport { FunctionalMessagePayload } from \"../message.interface.ts\";\nimport { StatusMessageButton, StatusMessageElementProps, StatusMessageImage } from \"./status-message.interface.ts\";\nimport css from \"./status-message.module.pcss\";\nimport stylesheet from \"./status-message.module.pcss?inline\";\n\ninterface StatusMessageProps {\n payload: FunctionalMessagePayload;\n}\n\nexport const StatusMessage: FC = ({ payload }) => {\n const [disabled, setDisabled] = useState(false);\n const t = useTranslator();\n useCss(stylesheet);\n const { navigate } = useDaxNavigation();\n const { sendBackWithoutShown } = useMessageSender();\n\n const getImage = (image: StatusMessageImage) => {\n return (\n \n {image.type === \"icon\" && (\n \n )}\n {image.type === \"url\" && (\n \n )}\n \n );\n };\n\n const handleAction = (button: StatusMessageButton) => {\n if (button.type === \"url\" && button.url && button.target) {\n navigate(button.url, button.target);\n } else if (button.type === \"action\" && button.action && typeof button.action === \"function\") {\n button.action();\n } else if (button.type === \"postback\" && button.action && typeof button.action === \"string\") {\n sendBackWithoutShown(button.title, button.action);\n setDisabled(true);\n }\n };\n\n const imageElement = payload.message.image ? getImage(payload.message.image) : \"\";\n const buttonElements = payload.message.buttons?.map((button) => (\n handleAction(button)}\n text={t(`statusMessage.${button.title}`)}\n type={\"secondary\"}\n > \n ));\n\n return (\n \n {imageElement}\n
\n {payload.message.title && (\n \n {t(`statusMessage.${payload.message.title}`).replace(\"{{agentName}}\", payload.agent_firstname)}\n \n )}\n {payload.message.text && (\n \n {t(`statusMessage.${payload.message.text}`)}\n \n )}\n \n {buttonElements}\n
\n );\n};\n","import { format, isToday, isYesterday } from \"date-fns\";\nimport { FC } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\n\nimport { RootState } from \"@/store\";\nimport { getDateFNSLocale } from \"@/utils\";\n\nimport css from \"./history-date-label.module.pcss\";\nimport stylesheet from \"./history-date-label.module.pcss?inline\";\n\ninterface HistoryDateLabelProps {\n date: string;\n}\n\nexport const HistoryDateLabel: FC = ({ date }) => {\n const t = useTranslator();\n useCss(stylesheet);\n const { locale } = useSelector((state: RootState) => state.application);\n const getFormattedTime = (date: string): string => {\n const d = new Date(date);\n if (isToday(d)) {\n return t(\"history.today\");\n }\n\n if (isYesterday(d)) {\n return t(\"history.yesterday\");\n }\n\n return format(d, \"EEEE dd MMM\", { locale: getDateFNSLocale(locale) });\n };\n\n const formattedDate = getFormattedTime(date);\n\n const dateLabel = `${formattedDate.charAt(0).toUpperCase()}${formattedDate.slice(1)}`;\n\n return (\n \n {dateLabel} \n
\n );\n};\n","import { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\n\nimport css from \"./kore-avatar.module.pcss\";\nimport stylesheet from \"./kore-avatar.module.pcss?inline\";\n\nexport const KoreAvatarIcon = () => {\n const t = useTranslator();\n useCss(stylesheet)\n\n return (\n \n );\n};\n","import { FC } from \"react\";\n\nimport css from \"./initials-avatar.module.pcss\";\nimport stylesheet from \"./initials-avatar.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\n\ninterface InitialsAvatarProps {\n initials: string;\n size?: \"small\" | \"large\";\n}\n\nexport const InitialsAvatar: FC = ({ initials, size = \"small\" }) => {\n const avatarSize = size === \"small\" ? \"32px\" : \"56px\";\n useCss(stylesheet)\n const style = {\n height: avatarSize,\n width: avatarSize,\n };\n\n return (\n \n );\n};\n","import { FC } from \"react\";\n\nimport { KoreAvatarIcon } from \"@/components/chat-elements/avatars/kore-avatar/kore-avatar-icon.tsx\";\nimport { MessageSender } from \"@/types\";\n\nimport { InitialsAvatar } from \"./initials-avatar/initials-avatar.tsx\";\n\ninterface AvatarProps {\n from: MessageSender;\n}\nexport const Avatar: FC = ({ from }) => {\n const { agent_initials, agent_flag } = from;\n\n if (agent_flag === undefined) {\n return null;\n }\n\n if (agent_flag === true && agent_initials) {\n return ;\n }\n\n return ;\n};\n","export const ArrowUpIcon = () => {\n return (\n \n \n \n );\n};\n","export const SmallCloseIcon = () => (\n \n \n \n);\n","export const SmallWarningIcon = () => {\n return (\n \n \n \n );\n};\n","import { format } from \"date-fns\";\nimport { utcToZonedTime } from \"date-fns-tz\";\nimport { FC } from \"react\";\n\nimport { SmallWarningIcon } from \"@/components/icons\";\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\n\nimport { MessageSender } from \"@/types\";\n\nimport css from \"./timestamp.module.pcss\";\nimport stylesheet from \"./timestamp.module.pcss?inline\";\n\ninterface TimestampProps {\n from: MessageSender;\n isFailed: boolean;\n time: Date;\n}\n\nexport const Timestamp: FC = ({ from, isFailed, time }) => {\n const t = useTranslator();\n useCss(stylesheet);\n const parsedTime = utcToZonedTime(time, Intl.DateTimeFormat().resolvedOptions().timeZone);\n const formattedTime = format(parsedTime, \"HH:mm\");\n const { agent_firstname, agent_flag } = from;\n\n const content = !agent_flag ? formattedTime : `${formattedTime} ${agent_firstname}`;\n const failed = (\n \n \n {t(\"labels.sendingMessageFailed\")}\n
\n );\n\n return {isFailed ? failed : content}
;\n};\n","import { FC } from \"react\";\n\nimport { MessageSender } from \"@/types\";\n\nimport { Avatar } from \"../avatars/avatar.tsx\";\nimport { Timestamp } from \"../timestamp/timestamp.tsx\";\nimport css from \"./avatar-and-timestamp.module.pcss\";\nimport stylesheet from \"./avatar-and-timestamp.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\n\ninterface AvatarAndTimestampProps {\n from: MessageSender;\n isFailed: boolean;\n timestamp: Date;\n}\n\nexport const AvatarAndTimestamp: FC = ({ from, isFailed, timestamp }) => {\n useCss(stylesheet);\n return (\n \n );\n};\n","import*as e from\"react\";function t(){return t=Object.assign?Object.assign.bind():function(e){for(var t=1;t(e[t.toLowerCase()]=t,e),{class:\"className\",for:\"htmlFor\"}),a={amp:\"&\",apos:\"'\",gt:\">\",lt:\"<\",nbsp:\" \",quot:\"“\"},o=[\"style\",\"script\"],c=/([-A-Z0-9_:]+)(?:\\s*=\\s*(?:(?:\"((?:\\\\.|[^\"])*)\")|(?:'((?:\\\\.|[^'])*)')|(?:\\{((?:\\\\.|{[^}]*?}|[^}])*)\\})))?/gi,s=/mailto:/i,d=/\\n{2,}$/,p=/^(\\s*>[\\s\\S]*?)(?=\\n\\n|$)/,u=/^ *> ?/gm,f=/^(?:\\[!([^\\]]*)\\]\\n)?([\\s\\S]*)/,h=/^ {2,}\\n/,m=/^(?:( *[-*_])){3,} *(?:\\n *)+\\n/,g=/^(?: {1,3})?(`{3,}|~{3,}) *(\\S+)? *([^\\n]*?)?\\n([\\s\\S]*?)(?:\\1\\n?|$)/,y=/^(?: {4}[^\\n]+\\n*)+(?:\\n *)+\\n?/,k=/^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,x=/^(?:\\n *)*\\n/,b=/\\r\\n?/g,v=/^\\[\\^([^\\]]+)](:(.*)((\\n+ {4,}.*)|(\\n(?!\\[\\^).+))*)/,S=/^\\[\\^([^\\]]+)]/,C=/\\f/g,$=/^---[ \\t]*\\n(.|\\n)*\\n---[ \\t]*\\n/,E=/^\\s*?\\[(x|\\s)\\]/,w=/^ *(#{1,6}) *([^\\n]+?)(?: +#*)?(?:\\n *)*(?:\\n|$)/,z=/^ *(#{1,6}) +([^\\n]+?)(?: +#*)?(?:\\n *)*(?:\\n|$)/,L=/^([^\\n]+)\\n *(=|-){3,} *(?:\\n *)+\\n/,A=/^ *(?!<[a-z][^ >/]* ?\\/>)<([a-z][^ >/]*) ?((?:[^>]*[^/])?)>\\n?(\\s*(?:<\\1[^>]*?>[\\s\\S]*?<\\/\\1>|(?!<\\1\\b)[\\s\\S])*?)<\\/\\1>(?!<\\/\\1>)\\n*/i,T=/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});/gi,O=/^)/,B=/^(data|aria|x)-[a-z_][a-z\\d_.-]*$/,M=/^ *<([a-z][a-z0-9:]*)(?:\\s+((?:<.*?>|[^>])*))?\\/?>(?!<\\/\\1>)(\\s*\\n)?/i,R=/^\\{.*\\}$/,I=/^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,U=/^<([^ >]+@[^ >]+)>/,D=/^<([^ >]+:\\/[^ >]+)>/,N=/-([a-z])?/gi,j=/^(\\|.*)\\n(?: *(\\|? *[-:]+ *\\|[-| :]*)\\n((?:.*\\|.*\\n)*))?\\n?/,H=/^\\[([^\\]]*)\\]:\\s+([^\\s>]+)>?\\s*(\"([^\"]*)\")?/,P=/^!\\[([^\\]]*)\\] ?\\[([^\\]]*)\\]/,F=/^\\[([^\\]]*)\\] ?\\[([^\\]]*)\\]/,_=/(\\n|^[-*]\\s|^#|^ {2,}|^-{2,}|^>\\s)/,G=/\\t/g,W=/(^ *\\||\\| *$)/g,Z=/^ *:-+: *$/,q=/^ *:-+ *$/,Q=/^ *-+: *$/,V=\"((?:\\\\[.*?\\\\][([].*?[)\\\\]]|<.*?>(?:.*?<.*?>)?|`.*?`|~~.*?~~|==.*?==|.|\\\\n)*?)\",X=new RegExp(`^([*_])\\\\1${V}\\\\1\\\\1(?!\\\\1)`),J=new RegExp(`^([*_])${V}\\\\1(?!\\\\1|\\\\w)`),K=new RegExp(`^==${V}==`),Y=new RegExp(`^~~${V}~~`),ee=/^\\\\([^0-9A-Za-z\\s])/,te=/^[\\s\\S]+?(?=[^0-9A-Z\\s\\u00c0-\\uffff.()'\"]|\\d+\\.|\\n\\n| {2,}\\n|\\w+:\\S|$)/i,ne=/^\\n+/,re=/^([ \\t]*)/,ie=/\\\\([^\\\\])/g,le=/ *\\n+$/,ae=/(?:^|\\n)( *)$/,oe=\"(?:\\\\d+\\\\.)\",ce=\"(?:[*+-])\";function se(e){return\"( *)(\"+(1===e?oe:ce)+\") +\"}const de=se(1),pe=se(2);function ue(e){return new RegExp(\"^\"+(1===e?de:pe))}const fe=ue(1),he=ue(2);function me(e){return new RegExp(\"^\"+(1===e?de:pe)+\"[^\\\\n]*(?:\\\\n(?!\\\\1\"+(1===e?oe:ce)+\" )[^\\\\n]*)*(\\\\n|$)\",\"gm\")}const ge=me(1),ye=me(2);function ke(e){const t=1===e?oe:ce;return new RegExp(\"^( *)(\"+t+\") [\\\\s\\\\S]+?(?:\\\\n{2,}(?! )(?!\\\\1\"+t+\" (?!\"+t+\" ))\\\\n*|\\\\s*\\\\n*$)\")}const xe=ke(1),be=ke(2);function ve(e,t){const n=1===t,i=n?xe:be,l=n?ge:ye,a=n?fe:he;return{match(e,t){const n=ae.exec(t.prevCapture);return n&&(t.list||!t.inline&&!t.simple)?i.exec(e=n[1]+e):null},order:1,parse(e,t,r){const i=n?+e[2]:void 0,o=e[0].replace(d,\"\\n\").match(l);let c=!1;return{items:o.map(function(e,n){const i=a.exec(e)[0].length,l=new RegExp(\"^ {1,\"+i+\"}\",\"gm\"),s=e.replace(l,\"\").replace(a,\"\"),d=n===o.length-1,p=-1!==s.indexOf(\"\\n\\n\")||d&&c;c=p;const u=r.inline,f=r.list;let h;r.list=!0,p?(r.inline=!1,h=s.replace(le,\"\\n\\n\")):(r.inline=!0,h=s.replace(le,\"\"));const m=t(h,r);return r.inline=u,r.list=f,m}),ordered:n,start:i}},render:(t,n,i)=>e(t.ordered?\"ol\":\"ul\",{key:i.key,start:t.type===r.orderedList?t.start:void 0},t.items.map(function(t,r){return e(\"li\",{key:r},n(t,i))}))}}const Se=new RegExp(\"^\\\\[((?:\\\\[[^\\\\]]*\\\\]|[^\\\\[\\\\]]|\\\\](?=[^\\\\[]*\\\\]))*)\\\\]\\\\(\\\\s*((?:\\\\([^)]*\\\\)|[^\\\\s\\\\\\\\]|\\\\\\\\.)*?)>?(?:\\\\s+['\\\"]([\\\\s\\\\S]*?)['\\\"])?\\\\s*\\\\)\"),Ce=/^!\\[(.*?)\\]\\( *((?:\\([^)]*\\)|[^() ])*) *\"?([^)\"]*)?\"?\\)/,$e=[p,g,y,w,L,z,O,j,ge,xe,ye,be],Ee=[...$e,/^[^\\n]+(?: \\n|\\n{2,})/,A,M];function we(e){return e.replace(/[ÀÁÂÃÄÅàáâãäåæÆ]/g,\"a\").replace(/[çÇ]/g,\"c\").replace(/[ðÐ]/g,\"d\").replace(/[ÈÉÊËéèêë]/g,\"e\").replace(/[ÏïÎîÍíÌì]/g,\"i\").replace(/[Ññ]/g,\"n\").replace(/[øØœŒÕõÔôÓóÒò]/g,\"o\").replace(/[ÜüÛûÚúÙù]/g,\"u\").replace(/[ŸÿÝý]/g,\"y\").replace(/[^a-z0-9- ]/gi,\"\").replace(/ /gi,\"-\").toLowerCase()}function ze(e){return Q.test(e)?\"right\":Z.test(e)?\"center\":q.test(e)?\"left\":null}function Le(e,t,n,i){const l=n.inTable;n.inTable=!0;let a=e.trim().split(/( *(?:`[^`]*`|\\\\\\||\\|) *)/).reduce((e,l)=>(\"|\"===l.trim()?e.push(i?{type:r.tableSeparator}:{type:r.text,text:l}):\"\"!==l&&e.push.apply(e,t(l,n)),e),[]);n.inTable=l;let o=[[]];return a.forEach(function(e,t){e.type===r.tableSeparator?0!==t&&t!==a.length-1&&o.push([]):(e.type!==r.text||null!=a[t+1]&&a[t+1].type!==r.tableSeparator||(e.text=e.text.trimEnd()),o[o.length-1].push(e))}),o}function Ae(e,t,n){n.inline=!0;const i=e[2]?e[2].replace(W,\"\").split(\"|\").map(ze):[],l=e[3]?function(e,t,n){return e.trim().split(\"\\n\").map(function(e){return Le(e,t,n,!0)})}(e[3],t,n):[],a=Le(e[1],t,n,!!l.length);return n.inline=!1,l.length?{align:i,cells:l,header:a,type:r.table}:{children:a,type:r.paragraph}}function Te(e,t){return null==e.align[t]?{}:{textAlign:e.align[t]}}function Oe(e){return function(t,n){return n.inline?e.exec(t):null}}function Be(e){return function(t,n){return n.inline||n.simple?e.exec(t):null}}function Me(e){return function(t,n){return n.inline||n.simple?null:e.exec(t)}}function Re(e){return function(t){return e.exec(t)}}function Ie(e,t){if(t.inline||t.simple)return null;let n=\"\";e.split(\"\\n\").every(e=>!$e.some(t=>t.test(e))&&(n+=e+\"\\n\",e.trim()));const r=n.trimEnd();return\"\"==r?null:[n,r]}function Ue(e){try{if(decodeURIComponent(e).replace(/[^A-Za-z0-9/:]/g,\"\").match(/^\\s*(javascript|vbscript|data(?!:image)):/i))return null}catch(e){return null}return e}function De(e){return e.replace(ie,\"$1\")}function Ne(e,t,n){const r=n.inline||!1,i=n.simple||!1;n.inline=!0,n.simple=!0;const l=e(t,n);return n.inline=r,n.simple=i,l}function je(e,t,n){const r=n.inline||!1,i=n.simple||!1;n.inline=!1,n.simple=!0;const l=e(t,n);return n.inline=r,n.simple=i,l}function He(e,t,n){const r=n.inline||!1;n.inline=!1;const i=e(t,n);return n.inline=r,i}const Pe=(e,t,n)=>({children:Ne(t,e[1],n)});function Fe(){return{}}function _e(){return null}function Ge(...e){return e.filter(Boolean).join(\" \")}function We(e,t,n){let r=e;const i=t.split(\".\");for(;i.length&&(r=r[i[0]],void 0!==r);)i.shift();return r||n}function Ze(n=\"\",i={}){function d(e,n,...r){const l=We(i.overrides,`${e}.props`,{});return i.createElement(function(e,t){const n=We(t,e);return n?\"function\"==typeof n||\"object\"==typeof n&&\"render\"in n?n:We(t,`${e}.component`,e):e}(e,i.overrides),t({},n,l,{className:Ge(null==n?void 0:n.className,l.className)||void 0}),...r)}function W(e){e=e.replace($,\"\");let t=!1;i.forceInline?t=!0:i.forceBlock||(t=!1===_.test(e));const n=le(ie(t?e:`${e.trimEnd().replace(ne,\"\")}\\n\\n`,{inline:t}));for(;\"string\"==typeof n[n.length-1]&&!n[n.length-1].trim();)n.pop();if(null===i.wrapper)return n;const r=i.wrapper||(t?\"span\":\"div\");let l;if(n.length>1||i.forceWrapper)l=n;else{if(1===n.length)return l=n[0],\"string\"==typeof l?d(\"span\",{key:\"outer\"},l):l;l=null}return i.createElement(r,{key:\"outer\"},l)}function Z(e,t){const n=t.match(c);return n?n.reduce(function(t,n){const r=n.indexOf(\"=\");if(-1!==r){const a=function(e){return-1!==e.indexOf(\"-\")&&null===e.match(B)&&(e=e.replace(N,function(e,t){return t.toUpperCase()})),e}(n.slice(0,r)).trim(),o=function(e){const t=e[0];return('\"'===t||\"'\"===t)&&e.length>=2&&e[e.length-1]===t?e.slice(1,-1):e}(n.slice(r+1).trim()),c=l[a]||a;if(\"ref\"===c)return t;const s=t[c]=function(e,t,n,r){return\"style\"===t?n.split(/;\\s?/).reduce(function(e,t){const n=t.slice(0,t.indexOf(\":\"));return e[n.trim().replace(/(-[a-z])/g,e=>e[1].toUpperCase())]=t.slice(n.length+1).trim(),e},{}):\"href\"===t||\"src\"===t?r(n,e,t):(n.match(R)&&(n=n.slice(1,n.length-1)),\"true\"===n||\"false\"!==n&&n)}(e,a,o,i.sanitizer);\"string\"==typeof s&&(A.test(s)||M.test(s))&&(t[c]=W(s.trim()))}else\"style\"!==n&&(t[l[n]||n]=!0);return t},{}):null}i.overrides=i.overrides||{},i.sanitizer=i.sanitizer||Ue,i.slugify=i.slugify||we,i.namedCodesToUnicode=i.namedCodesToUnicode?t({},a,i.namedCodesToUnicode):a,i.createElement=i.createElement||e.createElement;const q=[],Q={},V={[r.blockQuote]:{match:Me(p),order:1,parse(e,t,n){const[,r,i]=e[0].replace(u,\"\").match(f);return{alert:r,children:t(i,n)}},render(e,t,n){const l={key:n.key};return e.alert&&(l.className=\"markdown-alert-\"+i.slugify(e.alert.toLowerCase(),we),e.children.unshift({attrs:{},children:[{type:r.text,text:e.alert}],noInnerParse:!0,type:r.htmlBlock,tag:\"header\"})),d(\"blockquote\",l,t(e.children,n))}},[r.breakLine]:{match:Re(h),order:1,parse:Fe,render:(e,t,n)=>d(\"br\",{key:n.key})},[r.breakThematic]:{match:Me(m),order:1,parse:Fe,render:(e,t,n)=>d(\"hr\",{key:n.key})},[r.codeBlock]:{match:Me(y),order:0,parse:e=>({lang:void 0,text:e[0].replace(/^ {4}/gm,\"\").replace(/\\n+$/,\"\")}),render:(e,n,r)=>d(\"pre\",{key:r.key},d(\"code\",t({},e.attrs,{className:e.lang?`lang-${e.lang}`:\"\"}),e.text))},[r.codeFenced]:{match:Me(g),order:0,parse:e=>({attrs:Z(\"code\",e[3]||\"\"),lang:e[2]||void 0,text:e[4],type:r.codeBlock})},[r.codeInline]:{match:Be(k),order:3,parse:e=>({text:e[2]}),render:(e,t,n)=>d(\"code\",{key:n.key},e.text)},[r.footnote]:{match:Me(v),order:0,parse:e=>(q.push({footnote:e[2],identifier:e[1]}),{}),render:_e},[r.footnoteReference]:{match:Oe(S),order:1,parse:e=>({target:`#${i.slugify(e[1],we)}`,text:e[1]}),render:(e,t,n)=>d(\"a\",{key:n.key,href:i.sanitizer(e.target,\"a\",\"href\")},d(\"sup\",{key:n.key},e.text))},[r.gfmTask]:{match:Oe(E),order:1,parse:e=>({completed:\"x\"===e[1].toLowerCase()}),render:(e,t,n)=>d(\"input\",{checked:e.completed,key:n.key,readOnly:!0,type:\"checkbox\"})},[r.heading]:{match:Me(i.enforceAtxHeadings?z:w),order:1,parse:(e,t,n)=>({children:Ne(t,e[2],n),id:i.slugify(e[2],we),level:e[1].length}),render:(e,t,n)=>d(`h${e.level}`,{id:e.id,key:n.key},t(e.children,n))},[r.headingSetext]:{match:Me(L),order:0,parse:(e,t,n)=>({children:Ne(t,e[1],n),level:\"=\"===e[2]?1:2,type:r.heading})},[r.htmlBlock]:{match:Re(A),order:1,parse(e,t,n){const[,r]=e[3].match(re),i=new RegExp(`^${r}`,\"gm\"),l=e[3].replace(i,\"\"),a=(c=l,Ee.some(e=>e.test(c))?He:Ne);var c;const s=e[1].toLowerCase(),d=-1!==o.indexOf(s),p=(d?s:e[1]).trim(),u={attrs:Z(p,e[2]),noInnerParse:d,tag:p};return n.inAnchor=n.inAnchor||\"a\"===s,d?u.text=e[3]:u.children=a(t,l,n),n.inAnchor=!1,u},render:(e,n,r)=>d(e.tag,t({key:r.key},e.attrs),e.text||(e.children?n(e.children,r):\"\"))},[r.htmlSelfClosing]:{match:Re(M),order:1,parse(e){const t=e[1].trim();return{attrs:Z(t,e[2]||\"\"),tag:t}},render:(e,n,r)=>d(e.tag,t({},e.attrs,{key:r.key}))},[r.htmlComment]:{match:Re(O),order:1,parse:()=>({}),render:_e},[r.image]:{match:Be(Ce),order:1,parse:e=>({alt:e[1],target:De(e[2]),title:e[3]}),render:(e,t,n)=>d(\"img\",{key:n.key,alt:e.alt||void 0,title:e.title||void 0,src:i.sanitizer(e.target,\"img\",\"src\")})},[r.link]:{match:Oe(Se),order:3,parse:(e,t,n)=>({children:je(t,e[1],n),target:De(e[2]),title:e[3]}),render:(e,t,n)=>d(\"a\",{key:n.key,href:i.sanitizer(e.target,\"a\",\"href\"),title:e.title},t(e.children,n))},[r.linkAngleBraceStyleDetector]:{match:Oe(D),order:0,parse:e=>({children:[{text:e[1],type:r.text}],target:e[1],type:r.link})},[r.linkBareUrlDetector]:{match:(e,t)=>t.inAnchor||i.disableAutoLink?null:Oe(I)(e,t),order:0,parse:e=>({children:[{text:e[1],type:r.text}],target:e[1],title:void 0,type:r.link})},[r.linkMailtoDetector]:{match:Oe(U),order:0,parse(e){let t=e[1],n=e[1];return s.test(n)||(n=\"mailto:\"+n),{children:[{text:t.replace(\"mailto:\",\"\"),type:r.text}],target:n,type:r.link}}},[r.orderedList]:ve(d,1),[r.unorderedList]:ve(d,2),[r.newlineCoalescer]:{match:Me(x),order:3,parse:Fe,render:()=>\"\\n\"},[r.paragraph]:{match:Ie,order:3,parse:Pe,render:(e,t,n)=>d(\"p\",{key:n.key},t(e.children,n))},[r.ref]:{match:Oe(H),order:0,parse:e=>(Q[e[1]]={target:e[2],title:e[4]},{}),render:_e},[r.refImage]:{match:Be(P),order:0,parse:e=>({alt:e[1]||void 0,ref:e[2]}),render:(e,t,n)=>Q[e.ref]?d(\"img\",{key:n.key,alt:e.alt,src:i.sanitizer(Q[e.ref].target,\"img\",\"src\"),title:Q[e.ref].title}):null},[r.refLink]:{match:Oe(F),order:0,parse:(e,t,n)=>({children:t(e[1],n),fallbackChildren:e[0],ref:e[2]}),render:(e,t,n)=>Q[e.ref]?d(\"a\",{key:n.key,href:i.sanitizer(Q[e.ref].target,\"a\",\"href\"),title:Q[e.ref].title},t(e.children,n)):d(\"span\",{key:n.key},e.fallbackChildren)},[r.table]:{match:Me(j),order:1,parse:Ae,render(e,t,n){const r=e;return d(\"table\",{key:n.key},d(\"thead\",null,d(\"tr\",null,r.header.map(function(e,i){return d(\"th\",{key:i,style:Te(r,i)},t(e,n))}))),d(\"tbody\",null,r.cells.map(function(e,i){return d(\"tr\",{key:i},e.map(function(e,i){return d(\"td\",{key:i,style:Te(r,i)},t(e,n))}))})))}},[r.text]:{match:Re(te),order:4,parse:e=>({text:e[0].replace(T,(e,t)=>i.namedCodesToUnicode[t]?i.namedCodesToUnicode[t]:e)}),render:e=>e.text},[r.textBolded]:{match:Be(X),order:2,parse:(e,t,n)=>({children:t(e[2],n)}),render:(e,t,n)=>d(\"strong\",{key:n.key},t(e.children,n))},[r.textEmphasized]:{match:Be(J),order:3,parse:(e,t,n)=>({children:t(e[2],n)}),render:(e,t,n)=>d(\"em\",{key:n.key},t(e.children,n))},[r.textEscaped]:{match:Be(ee),order:1,parse:e=>({text:e[1],type:r.text})},[r.textMarked]:{match:Be(K),order:3,parse:Pe,render:(e,t,n)=>d(\"mark\",{key:n.key},t(e.children,n))},[r.textStrikethroughed]:{match:Be(Y),order:3,parse:Pe,render:(e,t,n)=>d(\"del\",{key:n.key},t(e.children,n))}};!0===i.disableParsingRawHTML&&(delete V[r.htmlBlock],delete V[r.htmlSelfClosing]);const ie=function(e){let t=Object.keys(e);function n(r,i){let l=[];for(i.prevCapture=i.prevCapture||\"\";r;){let a=0;for(;al(n,r,i),n,r,i):l(n,r,i)}}(V,i.renderRule),function e(t,n={}){if(Array.isArray(t)){const r=n.key,i=[];let l=!1;for(let r=0;r{let{children:r=\"\",options:i}=t,l=function(e,t){if(null==e)return{};var n,r,i={},l=Object.keys(e);for(r=0;r=0||(i[n]=e[n]);return i}(t,n);return e.cloneElement(Ze(r,i),l)};export{r as RuleType,Ze as compiler,Ue as sanitizer,we as slugify};\n//# sourceMappingURL=index.modern.js.map\n","import { FC, MouseEventHandler } from \"react\";\n\nimport Markdown from \"markdown-to-jsx\";\nimport { useDaxNavigation } from \"@/hooks\";\nimport css from \"./pa-markdown.module.pcss\";\nimport stylesheet from \"./pa-markdown.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\nimport { useFlowContext } from \"@/contexts\";\nimport { APP_MODES } from \"@/utils\";\n\ninterface PaMarkdownProps {\n content: string;\n}\n\nexport const PaMarkdown: FC = ({ content }) => {\n const context = useFlowContext();\n const { navigate } = useDaxNavigation();\n useCss(stylesheet);\n\n const handleClick: MouseEventHandler = (e) => {\n e.preventDefault();\n\n const target = e.target as HTMLElement;\n const link = target.closest(\"a\");\n\n if (link) {\n const url = link.getAttribute(\"href\");\n\n navigate(url!);\n }\n };\n\n return (\n \n {content} \n
\n );\n};\n","import { ChatBubble } from \"belfius.geui.client.ui-react\";\nimport { FC, PropsWithChildren } from \"react\";\n\nimport css from \"./bubble.module.pcss\";\nimport stylesheet from \"./bubble.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\n\ninterface BubbleProps extends PropsWithChildren {\n fullWidth?: boolean;\n origin: \"agent\" | \"bot\" | \"client\";\n preserveBreaks?: boolean;\n}\n\nexport const Bubble: FC = ({ children, fullWidth, origin, preserveBreaks }) => {\n useCss(stylesheet)\n return (\n \n
\n \n {children}\n \n
\n
\n );\n};\n","export const BUTTON_ACTIONS = {\n UPLOAD_DOCUMENT: \"TPUploadDocuments\",\n};\n\nexport const BUTTON_REQUEST_TYPE = {\n CLAIMS: \"CLAIMS\",\n};\n\nexport const BUTTON_SEND_BACK_MESSAGES = {\n UPLOAD: \"Upload\",\n};\n","import { uploadDocumentsDelegation } from \"@gef1/dax-gefw-host\";\nimport { ChatActionButton } from \"belfius.geui.client.ui-react\";\nimport { FC, useEffect } from \"react\";\n\nimport { useDatePicker, useMobileBridge, usePubSub } from \"@/contexts\";\nimport { useDaxNavigation, useMessageSender } from \"@/hooks\";\n\nimport { ButtonProps, CustomButtonProps, LinkButtonProps, PostBackButtonProps } from \"../buttons-group/buttons-element-props.interface.ts\";\nimport { BUTTON_ACTIONS, BUTTON_REQUEST_TYPE, BUTTON_SEND_BACK_MESSAGES } from \"@/constants/button.constants.ts\";\nimport { format } from \"date-fns\";\nimport { RootState, setInputDisabled } from \"@/store\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { getDateFNSLocale } from \"@/utils\";\n\ninterface ChatButtonProps {\n button: ButtonProps | Omit;\n disableGroup?: () => void | null;\n disabled?: boolean;\n historyMessage?: boolean;\n}\n\nexport const ChatButton: FC = ({ button, disableGroup, disabled, historyMessage }) => {\n const { navigate } = useDaxNavigation();\n const { sendBack } = useMessageSender();\n const mobileBridge = useMobileBridge();\n const pubSub = usePubSub();\n const { openDatePicker } = useDatePicker();\n const dispatch = useDispatch();\n const {\n application: { locale },\n chat: {\n chat: { extraId },\n },\n } = useSelector((state: RootState) => state);\n const text = \"title\" in button ? button.title : \"default\";\n\n const handleTypeUrl = (button: Omit) => {\n return navigate(button.url, button.target);\n };\n\n const handleTypeCustom = async (button: CustomButtonProps) => {\n if (button.action === BUTTON_ACTIONS.UPLOAD_DOCUMENT) {\n const request = button.data.documentType\n ? {\n documentType: button.data.documentType as string,\n draftClaimId: extraId,\n reference: button.data.reference as string,\n requestType: BUTTON_REQUEST_TYPE.CLAIMS,\n }\n : {\n draftClaimId: extraId,\n reference: button.data.reference as string,\n requestType: BUTTON_REQUEST_TYPE.CLAIMS,\n };\n\n const result = await uploadDocumentsDelegation(mobileBridge, pubSub, request);\n\n if (result.state) {\n sendBack(BUTTON_SEND_BACK_MESSAGES.UPLOAD, BUTTON_ACTIONS.UPLOAD_DOCUMENT);\n }\n } else {\n handleDefault(button);\n }\n };\n\n const handleDefault = (button: CustomButtonProps | PostBackButtonProps) => {\n sendBack(button.title, button.action);\n\n if (disableGroup) {\n disableGroup();\n }\n };\n\n const handleAction = () => {\n switch (button.type) {\n case \"url\":\n handleTypeUrl(button);\n return;\n case \"custom\":\n handleTypeCustom(button);\n return;\n case \"date\":\n openDatePicker({\n datePickerData: button,\n onConfirmed: (date: Date) => {\n const clientFormattedDate = format(date, \"d MMMM yyyy\", { locale: getDateFNSLocale(locale) });\n const systemFormattedDate = format(date, \"yyyy-MM-dd\");\n\n sendBack(clientFormattedDate, systemFormattedDate);\n\n // Enabling back the chat input\n dispatch(setInputDisabled(false));\n },\n });\n return;\n default:\n handleDefault(button);\n break;\n }\n };\n\n useEffect(() => {\n /*\n Kore is not handling date typed by the user in the chat input...\n So Business want to disable the chat input when a date is requested and to enable it back only when the date is sent.\n */\n if (!historyMessage && button.type === \"date\") {\n dispatch(setInputDisabled(true));\n }\n }, []);\n\n return ;\n};\n","import { ChatActionButtonGroup } from \"belfius.geui.client.ui-react\";\nimport { FC, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport { PaMarkdown } from \"@/components/chat-elements/pa-markdown/pa-markdown.tsx\";\nimport { RootState } from \"@/store\";\n\nimport { Bubble } from \"../bubble/bubble.tsx\";\nimport { ChatButton } from \"../chat-button/chat-button.tsx\";\nimport type { FunctionalMessagePayload } from \"../message.interface.ts\";\nimport type { ButtonsElementProps } from \"./buttons-element-props.interface.ts\";\n\ninterface ButtonGroupProps {\n payload: FunctionalMessagePayload;\n}\n\nexport const ButtonsGroup: FC = ({ payload }) => {\n const { clickable, historyMessage } = payload;\n const {\n application: { onMobileDevice },\n } = useSelector((state: RootState) => state);\n const [disabled, setDisabled] = useState(historyMessage && !clickable);\n\n const disableGroup = () => {\n setDisabled(true);\n };\n\n const {\n message: { buttons, text },\n } = payload;\n\n const mapButtons = buttons.map((btn, index) => (\n \n ));\n\n return (\n \n \n {mapButtons} \n \n );\n};\n","import { ChatActionButtonGroup, ChatCarousel, ChatCarouselCard, ChatCarouselItem } from \"belfius.geui.client.ui-react\";\nimport { FC, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport { useImageWithFallback } from \"@/hooks\";\nimport { RootState } from \"@/store\";\nimport { getAssetsUrl } from \"@/utils\";\n\nimport { ChatButton } from \"../chat-button/chat-button.tsx\";\nimport { FunctionalMessagePayload } from \"../message.interface.ts\";\nimport { CarouselElementProps } from \"./carousel-element-props.ts\";\n\ninterface CarouselProps {\n payload: FunctionalMessagePayload;\n}\n\nexport const CarouselElement: FC = ({ payload }) => {\n const {\n message: { elements },\n historyMessage,\n one_time_use,\n } = payload;\n\n const [disabled, setDisabled] = useState(!!historyMessage);\n const { inputDisabled } = useSelector((state: RootState) => state.chat);\n\n const disableGroup = () => {\n return setDisabled(true);\n };\n\n return (\n \n {elements.map((e, i) => {\n const imageUrl = getAssetsUrl(e.image_url);\n const imgSrc = useImageWithFallback(imageUrl);\n\n return (\n \n \n \n {e.buttons &&\n e.buttons.map((btn, index) => (\n \n ))}\n {!e.buttons && e.default_action && (\n \n )}\n \n \n \n );\n })}\n \n );\n};\n","import { ChatCarousel, ChatCarouselCustomCard } from \"belfius.geui.client.ui-react\";\nimport { FC, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport { useDaxNavigation, useImageWithFallback, useMessageSender } from \"@/hooks\";\nimport { RootState } from \"@/store\";\nimport type { LinkTarget } from \"@/types\";\n\nimport { FunctionalMessagePayload } from \"../message.interface.ts\";\nimport { CustomCarouselElement, CustomCarouselElementProps } from \"./custom-carousel.interface.ts\";\nimport { getAssetsUrl } from \"@/utils\";\n\ninterface ChatCarouselCustomCardWrapperProps {\n element: CustomCarouselElement;\n disabled: boolean;\n inputDisabled: boolean;\n handleUrlAction: (url: string, target: LinkTarget) => void;\n handleAction: (title: string, action: string) => void;\n}\n\nconst ChatCarouselCustomCardWrapper: FC = ({\n element,\n disabled,\n inputDisabled,\n handleUrlAction,\n handleAction,\n}) => {\n const iconUrl = element.image.type === \"url\" ? useImageWithFallback(getAssetsUrl(element.image.source)) : undefined;\n\n return (\n \n element.default_action &&\n (element.default_action.type === \"url\"\n ? handleUrlAction(element.default_action.url, element.default_action.target)\n : handleAction(element.text, element.default_action.action))\n }\n src={iconUrl}\n text={element.text}\n />\n );\n};\n\ninterface CustomCarouselProps {\n payload: FunctionalMessagePayload;\n}\n\nexport const ChatCustomCarouselElement: FC = ({ payload }) => {\n const {\n message: { elements },\n historyMessage,\n one_time_use,\n } = payload;\n\n const { sendBack } = useMessageSender();\n const { navigate } = useDaxNavigation();\n const [disabled, setDisabled] = useState(!!historyMessage);\n const { inputDisabled } = useSelector((state: RootState) => state.chat);\n\n const handleUrlAction = (url: string, target: LinkTarget) => navigate(url, target);\n\n const handleAction = (title: string, action: string) => {\n sendBack(title, action);\n\n if (one_time_use) {\n setDisabled(true);\n }\n };\n return (\n \n {elements.map((e, i) => {\n const props: ChatCarouselCustomCardWrapperProps = {\n inputDisabled,\n element: e,\n handleUrlAction,\n handleAction,\n disabled: disabled || inputDisabled,\n };\n\n return ;\n })}\n \n );\n};\n","import { ChatImage } from \"belfius.geui.client.ui-react\";\nimport { FC } from \"react\";\n\nimport { Bubble } from \"@/components/chat-elements/bubble/bubble.tsx\";\nimport { useImageWithFallback } from \"@/hooks\";\nimport { getAssetsUrl } from \"@/utils\";\n\nimport { FunctionalMessagePayload } from \"../message.interface.ts\";\n\nexport interface ImageElementProps {\n file_name: string\n alt_text: string\n}\n\ninterface ImageProps {\n payload: FunctionalMessagePayload;\n}\n\nexport const ImageElement: FC = ({ payload }) => {\n const imgSrc = useImageWithFallback(getAssetsUrl(payload.message.file_name));\n\n return (\n \n \n \n );\n};\n","import { ChatListItem, Icon } from \"belfius.geui.client.ui-react\";\nimport { FC } from \"react\";\n\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\nimport { useDaxNavigation, useImageWithFallback, useMessageSender } from \"@/hooks\";\nimport { getAssetsUrl } from \"@/utils\";\n\nimport type { ListElement } from \"../list-container.interface.ts\";\nimport css from \"./list-item.module.pcss\";\nimport stylesheet from \"./list-item.module.pcss?inline\";\n\ninterface ListItemProps {\n element: ListElement;\n}\n\nexport const ListItem: FC = ({ element }) => {\n const { navigate } = useDaxNavigation();\n useCss(stylesheet);\n const t = useTranslator();\n const { sendBack } = useMessageSender();\n\n const action = () => {\n if (element.default_action.type === \"url\") {\n return navigate(element.default_action.url, element.default_action.target);\n }\n\n sendBack(element.title, element.default_action.action);\n };\n\n const getAsset = () => {\n const { image } = element;\n\n if (!image) {\n return null;\n }\n\n if (image.type === \"icon\") {\n return ;\n }\n\n const dimension = element.linkText ? \"72px\" : \"40px\";\n\n return (\n \n );\n };\n\n return (\n \n {getAsset()}\n \n );\n};\n","import { ChatList } from \"belfius.geui.client.ui-react\";\nimport { FC } from \"react\";\n\nimport { FunctionalMessagePayload } from \"../message.interface.ts\";\nimport { ListElementProps as L } from \"./list-container.interface.ts\";\nimport { ListItem } from \"./list-item/list-item.tsx\";\n\ninterface ListContainerProps {\n payload: FunctionalMessagePayload;\n}\n\nexport const ListContainer: FC = ({ payload }) => {\n const { elements } = payload.message;\n\n const items = elements.map((element, index) => );\n\n return {items} ;\n};\n","import { FC } from \"react\";\n\nimport { Bubble } from \"../bubble/bubble.tsx\";\nimport type { FunctionalMessagePayload } from \"../message.interface.ts\";\nimport { PaMarkdown } from \"../pa-markdown/pa-markdown.tsx\";\n\nexport type MarkdownElementProps = string;\ninterface MarkdownProps {\n payload: FunctionalMessagePayload;\n}\n\nexport const MarkdownElement: FC = ({ payload }) => {\n const { agent_flag, message } = payload;\n const origin = agent_flag ? \"bot\" : agent_flag === false ? \"agent\" : \"client\";\n\n return (\n \n {(origin === \"client\" && message) || }\n \n );\n};\n","import { ActionButton } from \"belfius.geui.client.ui-react\";\nimport { FC, useEffect, useMemo, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { useDatePicker } from \"@/contexts\";\nimport { useDaxNavigation, useMessageSender } from \"@/hooks\";\nimport { RootState, setInputDisabled } from \"@/store\";\n\nimport { MarkdownElement } from \"../markdown/markdownElement.tsx\";\nimport type { FunctionalMessagePayload } from \"../message.interface.ts\";\nimport { RoundedButton, RoundedButtonsElementProps } from \"../rounded-buttons/rounded-buttons-element-props.ts\";\nimport type { QuickRepliesElementProps, QuickReply } from \"./quick-replies-element-props.interface.ts\";\nimport css from \"./rounded-buttons.module.pcss\";\nimport stylesheet from \"./rounded-buttons.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\nimport { format } from \"date-fns\";\nimport { getDateFNSLocale } from \"@/utils\";\n\ninterface RoundedButtonsProps {\n disableAfterClick?: boolean;\n payload: FunctionalMessagePayload;\n}\n\nexport const RoundedButtons: FC = ({ disableAfterClick, payload }) => {\n useCss(stylesheet);\n const {\n agent_firstname,\n agent_initials,\n agent_flag,\n clickable,\n historyMessage,\n message: { text },\n template,\n timestamp,\n } = payload;\n const { sendBack } = useMessageSender();\n const { navigate } = useDaxNavigation();\n const { openDatePicker } = useDatePicker();\n const dispatch = useDispatch();\n const [disabled, setDisabled] = useState(historyMessage && !clickable);\n const { locale } = useSelector((state: RootState) => state.application);\n\n const disableGroup = () => {\n setDisabled(true);\n };\n\n const handleAction = (reply: QuickReply | RoundedButton) => {\n /*\n Even if quick_replies template (who has by default disableAfterClick set to True) is used to handle datepicker,\n we don't want to disable the button directly because the user can still close the datepicker without picking a date...\n */\n if (disableGroup && disableAfterClick && reply.type !== \"date\") {\n disableGroup();\n }\n\n if (\"url\" in reply && !!reply.url) {\n return navigate(reply.url, reply.target);\n }\n\n if (reply.type === \"postback\") {\n return \"action\" in reply ? sendBack(reply.title, reply.action) : sendBack(reply.title);\n }\n\n if (reply.type === \"date\") {\n openDatePicker({\n datePickerData: reply,\n onConfirmed: (date: Date) => {\n const clientFormattedDate = format(date, \"d MMMM yyyy\", { locale: getDateFNSLocale(locale) });\n const systemFormattedDate = format(date, \"yyyy-MM-dd\");\n\n sendBack(clientFormattedDate, systemFormattedDate);\n\n // Enabling back the chat input\n dispatch(setInputDisabled(false));\n\n // Disabling the button once the date is sent\n disableGroup();\n },\n });\n }\n };\n\n const elements = useMemo(\n () => (\"quick_replies\" in payload.message ? payload.message.quick_replies : payload.message.buttons),\n [payload.message],\n );\n\n useEffect(() => {\n /*\n Kore is not handling date typed by the user in the chat input...\n So Business want to disable the chat input when a date is requested and to enable it back only when the date is sent.\n */\n if (!historyMessage && elements.find((reply) => reply.type === \"date\")) {\n dispatch(setInputDisabled(true));\n }\n }, [elements]);\n\n const choices = elements.map((reply, index) => {\n return (\n handleAction(reply)}\n size=\"small\"\n text={reply.title}\n type=\"choice\"\n />\n );\n });\n\n return (\n \n );\n};\n","import { Divider } from \"belfius.geui.client.ui-react\";\nimport { FC } from \"react\";\n\nimport { FunctionalMessagePayload } from \"@/components/chat-elements/message.interface.ts\";\n\nexport interface SeparatorElementProps {\n label: string;\n}\n\ninterface SeparatorProps {\n payload: FunctionalMessagePayload;\n}\nexport const Separator: FC = ({ payload }) => {\n return ;\n};\n","import type { FC, JSX } from \"react\";\n\nimport { RichFunctionalMessage } from \"@/store\";\nimport { unHandledCase } from \"@/utils\";\n\nimport { AvatarAndTimestamp } from \"./avatar-and-timestamp/avatar-and-timestamp.tsx\";\nimport { ButtonsElementProps } from \"./buttons-group/buttons-element-props.interface.ts\";\nimport { ButtonsGroup } from \"./buttons-group/buttons-group.tsx\";\nimport { CarouselElement } from \"./carousel/carousel-element.tsx\";\nimport { CarouselElementProps } from \"./carousel/carousel-element-props.ts\";\nimport css from \"./chat-element.module.pcss\";\nimport stylesheet from \"./chat-element.module.pcss?inline\";\nimport { CustomCarouselElementProps } from \"./custom-carousel/custom-carousel.interface.ts\";\nimport { ChatCustomCarouselElement } from \"./custom-carousel/chat-custom-carousel-element.tsx\";\nimport { ImageElement, ImageElementProps } from \"./image/image-element.tsx\";\nimport { ListElementProps } from \"./list/list-container.interface.ts\";\nimport { ListContainer } from \"./list/list-container.tsx\";\nimport { MarkdownElement, MarkdownElementProps } from \"./markdown/markdownElement.tsx\";\nimport { FunctionalMessage, FunctionalMessagePayload } from \"./message.interface.ts\";\nimport { QuickRepliesElementProps } from \"./rounded-buttons/quick-replies-element-props.interface.ts\";\nimport { RoundedButtons } from \"./rounded-buttons/rounded-buttons.tsx\";\nimport type { RoundedButtonsElementProps } from \"./rounded-buttons/rounded-buttons-element-props.ts\";\nimport { Separator, SeparatorElementProps } from \"./separator/separator.tsx\";\nimport { StatusMessageElementProps } from \"./status-message/status-message.interface.ts\";\nimport { StatusMessage } from \"./status-message/status-message.tsx\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\n\nexport const mapTypeToComponent = ({ payload }: FunctionalMessage) => {\n switch (payload.template) {\n case \"button\":\n return } />;\n case \"button_rounded\":\n return } />;\n case \"carousel\":\n return } />;\n case \"custom_carousel\":\n return } />;\n case \"list\":\n return } />;\n case \"text\":\n return } />;\n case \"image\":\n return } />;\n case \"status\":\n return } />;\n case \"quick_replies\":\n return } />;\n case \"separator\":\n return } />;\n }\n\n return unHandledCase(payload.template);\n};\n\ninterface ChatElementComponentProps {\n displayTimestamp: boolean;\n message: RichFunctionalMessage;\n prefix?: JSX.Element;\n}\n\nexport const ChatElement: FC = ({ displayTimestamp, message, prefix }) => {\n const component = mapTypeToComponent(message);\n useCss(stylesheet);\n const {\n payload: { timestamp, ...agent },\n } = message;\n\n const incoming = message.payload.agent_flag !== undefined;\n\n return (\n \n {prefix}\n
{component}
\n {displayTimestamp &&
}\n
\n );\n};\n","import { FC } from \"react\";\n\nimport { HistoryDay } from \"@/hooks\";\nimport { messagesToChatElements } from \"@/utils\";\n\nimport { ChatElement } from \"../../chat-element.tsx\";\nimport { HistoryDateLabel } from \"../history-date-label/history-date-label.tsx\";\n\ninterface HistoryPartProps {\n day: HistoryDay;\n}\n\nexport const HistoryPart: FC = ({ day }) => {\n return (\n \n \n {messagesToChatElements(day.messages).map(({ displayTimestamp, key, message }) => (\n \n ))}\n
\n );\n};\n","import { isToday } from \"date-fns\";\nimport { FC, useEffect, useMemo, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useSwipeable } from \"react-swipeable\";\n\nimport { ArrowUpIcon } from \"@/components\";\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\nimport { HistoryDay, useHistory, useIntersectionObserver } from \"@/hooks\";\nimport { RootState } from \"@/store\";\nimport { statusMessageWithIcon } from \"@/utils\";\n\nimport { Loader } from \"../../loader/loader.tsx\";\nimport { FunctionalMessagePayload } from \"../../message.interface.ts\";\nimport { StatusMessageElementProps } from \"../../status-message/status-message.interface.ts\";\nimport { StatusMessage } from \"../../status-message/status-message.tsx\";\nimport { HistoryDateLabel } from \"../history-date-label/history-date-label.tsx\";\nimport { HistoryPart } from \"../history-part/history-part.tsx\";\nimport css from \"./history-list.module.pcss\";\nimport stylesheet from \"./history-list.module.pcss?inline\";\n\nexport interface HistoryListProps {\n /** the element on which handlers will be installed for swipe behavior */\n handlersElement: HTMLDivElement;\n}\n\nexport const HistoryList: FC = ({ handlersElement }) => {\n useCss(stylesheet);\n\n const t = useTranslator();\n\n /** initialize scroll state (position + scroll height) of the handler element */\n const initializeScrollState = () => {\n setScrollPositionAtSwipe(handlersElement.scrollTop);\n setScrollHeightAtSwipe(handlersElement.scrollHeight);\n };\n\n /** scroll to the bottom of the handler element */\n const scrollToBottom = () => {\n handlersElement.scrollTop = handlersElement.scrollHeight;\n };\n\n /** keep current scroll position on the handler element */\n const keepCurrentScrollPosition = () => {\n const newScrollHeight = handlersElement.scrollHeight;\n const newScrollPosition = newScrollHeight - scrollHeightAtSwipe + scrollPositionAtSwipe;\n handlersElement.scrollTop = newScrollPosition;\n handlersElement.scrollTo({ top: newScrollPosition - 120, behavior: \"smooth\" });\n };\n\n /** install touch control listener for touch enabled devices (mobile) to interact with history */\n const installTouchListener = () => {\n const DEFAULT_SWIPE_DURATION = 500;\n const { ref } = useSwipeable({\n onSwipedDown: () => {\n initializeScrollState();\n setAfterMoreHistoryRequested(true);\n if (shouldShowHistory && canFetchMoreData && messageStartIntersectionResult.isVisible) {\n fetchData();\n }\n },\n swipeDuration: DEFAULT_SWIPE_DURATION,\n });\n\n useEffect(() => {\n // register swipe behaviour on the handlersElement which typically is a container which will include this component\n ref(handlersElement);\n });\n };\n\n const handleClick = () => {\n initializeScrollState();\n setAfterMoreHistoryRequested(true);\n\n fetchData();\n };\n\n const { canFetchMoreData, currentLoadedPage, data, error, fetchData, loading, shouldDisplayHistory, unreadCount } = useHistory(\"All\");\n const [messagesStartRef, messageStartIntersectionResult] = useIntersectionObserver(0);\n const [shouldShowHistory, setShouldShowHistory] = useState(false);\n const [afterMoreHistoryRequested, setAfterMoreHistoryRequested] = useState(false);\n const [scrollPositionAtSwipe, setScrollPositionAtSwipe] = useState(0);\n const [scrollHeightAtSwipe, setScrollHeightAtSwipe] = useState(0);\n const { onMobileDevice } = useSelector((state: RootState) => state.application);\n\n const historyError = useMemo(() => {\n if (error) {\n return } />;\n }\n return null;\n }, [error]);\n\n const historyMessages = useMemo(() => {\n if (data.length) {\n setShouldShowHistory(afterMoreHistoryRequested || shouldDisplayHistory || !!unreadCount);\n if (shouldShowHistory && data.length) {\n const lastPart = data[data.length - 1];\n\n return (\n <>\n {data.map((part: HistoryDay, index: any) => (\n \n ))}\n\n {!isToday(new Date(lastPart.day)) && }\n >\n );\n }\n }\n return null;\n }, [data, shouldShowHistory, afterMoreHistoryRequested]);\n\n if (onMobileDevice) {\n installTouchListener();\n }\n\n useEffect(() => {\n if (data.length) {\n if (currentLoadedPage === 1) {\n scrollToBottom();\n } else {\n keepCurrentScrollPosition();\n }\n }\n }, [historyMessages]);\n\n return (\n \n {!onMobileDevice && !loading && canFetchMoreData && (\n
\n
\n \n {t(\"history.buttonLabel\")}\n \n
\n )}\n
\n {!loading && !canFetchMoreData && data.length > 0 && shouldShowHistory && (\n
\n )}\n {loading && !onMobileDevice &&
}\n {historyError}\n {historyMessages}\n
\n );\n};\n","import { useSelector } from \"react-redux\";\n\nimport { RootState } from \"@/store\";\n\nimport { Avatar } from \"../avatars/avatar.tsx\";\nimport { Bubble } from \"../bubble/bubble.tsx\";\nimport css from \"./typing-animation.module.pcss\";\nimport stylesheet from \"./typing-animation.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\n\nexport const TypingAnimation = () => {\n const { currentInterlocutor } = useSelector((state: RootState) => state.chat);\n useCss(stylesheet); \n\n const { agent_firstname, agent_initials, agent_flag } = currentInterlocutor;\n\n return (\n <>\n \n \n \n {/* eslint-disable-next-line camelcase */}\n \n >\n );\n};\n","import { ChatScrollButton } from \"belfius.geui.client.ui-react\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport { HistoryList } from \"@/components/chat-elements/history/history-list/history-list.tsx\";\n\nimport { TypingAnimation } from \"@/components/chat-elements/typing-animation/typing-animation.tsx\";\nimport { useTranslator } from \"@gef1/dax-react-sdk\";\nimport { useIntersectionObserver, usePercentageIntersectionObserver } from \"@/hooks\";\nimport { RootState } from \"@/store\";\nimport { isAppleDevice, messagesToChatElements } from \"@/utils\";\n\nimport { ChatElement } from \"../chat-elements/chat-element.tsx\";\nimport css from \"./chat-window.module.pcss\";\nimport { PullDownLabel } from \"@/components\";\n\nif (!window.HTMLElement.prototype?.scrollIntoView) {\n // TODO dirty\n window.HTMLElement.prototype.scrollIntoView = function () {}; // Mock this, not implemented in JSDom\n}\n\nexport const ChatWindow = () => {\n const {\n application: { minimized, onMobileDevice },\n chat: { messages, typing, inputContainerHeight },\n } = useSelector((state: RootState) => state);\n const chatWindowRef = useRef(null);\n const [messagesEndRef, intersectionResult] = useIntersectionObserver(0);\n const [displayScrollBackBtn, setDisplayScrollBackBtn] = useState(false);\n const lastMessageRef = useRef(null);\n const t = useTranslator();\n\n const scrollToBottom = (smooth = true) => {\n setDisplayScrollBackBtn(false);\n messagesEndRef.current?.scrollIntoView({\n block: \"start\",\n behavior: smooth ? \"smooth\" : \"instant\",\n });\n };\n\n const messagesContent = useMemo(() => {\n let items = messagesToChatElements(messages).map(({ displayTimestamp, key, message }) => (\n \n ));\n\n // Adding ref just before last message to scroll to bottom\n // Triggering display of scroll to bottom button only if that last element is completely hidden\n if (items.length > 1) {\n items.splice(items.length - 1, 0,
);\n }\n\n return <>{items}>;\n }, [messages]);\n\n const [percentage, setRef] = usePercentageIntersectionObserver(messagesContent);\n\n const typingContent = useMemo(() => {\n return typing ? : null;\n }, [typing]);\n\n useEffect(() => {\n if (messages.length || typing) {\n scrollToBottom();\n }\n }, [messages, typing]);\n\n useEffect(() => {\n const chatWindowElement = chatWindowRef?.current;\n\n if (!chatWindowElement) return;\n\n if (!onMobileDevice) {\n // Prevent scrolling the web page when the user is scrolling the chat window\n chatWindowElement.addEventListener(\"wheel\", (event: { stopPropagation: () => void }) => {\n event.stopPropagation();\n });\n }\n\n const observer = new ResizeObserver(() => {\n if (intersectionResult.isVisible) {\n scrollToBottom(false);\n }\n });\n\n observer.observe(chatWindowElement);\n\n return () => {\n observer.disconnect();\n chatWindowElement.removeEventListener(\"wheel\", (event: { stopPropagation: () => void }) => {\n event.stopPropagation();\n });\n };\n }, [intersectionResult.isVisible]);\n\n useEffect(() => {\n setDisplayScrollBackBtn(messages.length > 1 ? percentage === 0 : !intersectionResult.isVisible);\n }, [intersectionResult, messages, percentage]);\n\n useEffect(() => {\n setRef(lastMessageRef);\n }, []);\n\n const [windowSize, setWindowSize] = useState<{ width: number; height: number }>();\n\n useEffect(() => {\n // There is an issue where in ios if the keyboard is shown that it comes on top of the input field\n // for this reason we listen to the resize of the window.visualviewport because the window.addEventListener('resize') doesn't get updated in ios\n if (!window.visualViewport || !onMobileDevice || !isAppleDevice()) return;\n const handleListener = (event: Event) => {\n const viewport = event.target as VisualViewport;\n setWindowSize(windowSize?.height !== screen.height ? { width: viewport.width, height: viewport.height } : undefined);\n };\n\n window.visualViewport.addEventListener(\"resize\", handleListener);\n\n return () => {\n if (!window.visualViewport) return;\n window.visualViewport.removeEventListener(\"resize\", handleListener);\n };\n }, []);\n\n // Only on Iphone or Ipad we need to calculate the height of the chat window because of the keyboard\n const addedStyles =\n windowSize?.height && onMobileDevice && isAppleDevice()\n ? {\n height: `${windowSize?.height - inputContainerHeight}px`, // Height of the remaining view minus the input container height\n }\n : {};\n\n // if Iphone or Ipad and the keyboard has been shown then we set the chat window height with the value calculated above, so we need to leave the size out of it\n const className =\n onMobileDevice && isAppleDevice() && windowSize && windowSize.height !== screen.height ? css.noSizeChatWindow : css.chatWindow;\n\n return (\n // @ts-ignore\n \n {onMobileDevice &&
}\n
\n {messagesContent}\n {typingContent}\n {(onMobileDevice || !minimized) && displayScrollBackBtn && (\n
\n \n
\n )}\n
\n
\n );\n};\n","import { ChatInputContainer as ChatInput } from \"../chat-input/chat-input-container.tsx\";\nimport { ChatWindow } from \"../chat-window/chat-window.tsx\";\n\nexport const Chat = () => {\n return (\n <>\n \n \n >\n );\n};\n","import { DatePicker } from \"belfius.geui.client.ui-react\";\nimport { FC } from \"react\";\n\nimport { DatePickerData } from \"@/types\";\nimport { formatWithSlash } from \"@/utils\";\n\nimport css from \"./date-picker-element.module.pcss\";\nimport stylesheet from \"./date-picker-element.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\ninterface DatePickerElementProps {\n onCanceled: (date: Date) => void;\n onConfirmed: (date: Date) => void;\n datePickerData: DatePickerData;\n}\n\nconst DATEPICKER_VALUE_SEPARATOR = \";\";\n\nexport const PADatePicker: FC = ({ onCanceled, onConfirmed, datePickerData }) => {\n useCss(stylesheet);\n\n const { disable_week_days, disable_dates, disable_days, disable_months, default_start, default_end, default_value } = datePickerData;\n\n return (\n // @ts-ignore\n \n
\n onConfirmed(e.detail.data)}\n startDate={formatWithSlash(default_start || \"\")}\n value={formatWithSlash(default_value || \"\")}\n />\n
\n
\n );\n};\n","import { useSelector } from \"react-redux\";\n\nimport { ArrowUpIcon } from \"@/components/icons\";\nimport { useTranslator } from \"@gef1/dax-react-sdk\";\n\nimport { RootState } from \"@/store\";\n\nimport css from \"./pull-down-label.module.pcss\";\n\nexport const PullDownLabel = () => {\n const t = useTranslator();\n const {\n application: { shouldShowScrollUpLabel },\n chat: { resets },\n } = useSelector((state: RootState) => state);\n\n return (\n (shouldShowScrollUpLabel || !!resets) && (\n \n
\n
\n \n {t(\"history.pullDownLabel\")}\n \n
\n
\n )\n );\n};\n","import { Icon } from \"belfius.geui.client.ui-react\";\nimport { FC } from \"react\";\n\nimport css from \"./menu-item.module.pcss\";\nimport stylesheet from \"./menu-item.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\n\ninterface MenuItemProps {\n callback: () => void;\n icon: string;\n title: string;\n}\n\nexport const MenuItem: FC = ({ callback, icon, title }) => {\n useCss(stylesheet);\n return (\n \n {title} \n \n \n \n \n );\n};\n","import { IconButton } from \"belfius.geui.client.ui-react\";\nimport { ReactElement, useState } from \"react\";\n\nimport { MenuItem } from \"@/components/chat-header/chat-header-menu/menu-item/menu-item.tsx\";\nimport { MenuConfirmation } from \"@/components/confirmation/menu-confirmation.tsx\";\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\nimport { useMenu } from \"@/hooks\";\nimport { OverflowMenuAction } from \"@/menus/menus.interface.tsx\";\n\nimport css from \"./chat-header-menu.module.pcss\";\nimport stylesheet from \"./chat-header-menu.module.pcss?inline\";\n\nexport const ChatHeaderMenu = () => {\n const t = useTranslator();\n useCss(stylesheet);\n const [showMenu, setShowMenu] = useState(false);\n const [menuAction, setMenuAction] = useState(null);\n\n const close = () => {\n setMenuAction(null);\n };\n\n const { menu } = useMenu();\n\n if (!menu || !menu.menus.size) {\n return null;\n }\n\n const actionMenus: ReactElement[] = [];\n menu.menus.forEach((value) => {\n const { icon, title } = value.menu;\n actionMenus.push(\n {\n setMenuAction(value.menuAction);\n setShowMenu(false);\n }}\n icon={icon}\n key={title}\n title={t(title)}\n />,\n );\n });\n\n return (\n <>\n setShowMenu(!showMenu)} size=\"x-small\" type=\"transparent\" />\n {showMenu && {actionMenus}
}\n {menuAction && }\n >\n );\n};\n","import { IconButton } from \"belfius.geui.client.ui-react\";\nimport { memo, useMemo, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\n\nimport { ChatHeaderMenu } from \"@/components/chat-header/chat-header-menu/chat-header-menu.tsx\";\nimport { MenuConfirmation } from \"@/components/confirmation/menu-confirmation.tsx\";\nimport { KEY_TO_ICON_NAME } from \"@/constants\";\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\nimport { useMenu } from \"@/hooks\";\nimport { LeftIcon } from \"@/menus\";\nimport { setMinimized } from \"@/store\";\n\nimport css from \"./chat-header.module.pcss\";\nimport stylesheet from \"./chat-header.module.pcss?inline\";\n\nexport const ChatHeader = memo(() => {\n const dispatch = useDispatch();\n useCss(stylesheet);\n const t = useTranslator();\n const [menuAction, setMenuAction] = useState(null);\n const { menu } = useMenu();\n const leftIcon = useMemo(() => {\n if (!menu) {\n return null;\n }\n\n const { leftIcon } = menu;\n\n return (\n {\n if (leftIcon.minimize) {\n dispatch(setMinimized(true));\n }\n if (leftIcon.confirm) {\n setMenuAction(leftIcon);\n } else {\n leftIcon.action();\n }\n }}\n type=\"transparent\"\n > \n );\n }, [menu]);\n\n const close = () => {\n setMenuAction(null);\n };\n\n return (\n //@ts-ignore\n \n {leftIcon}\n
{t(menu?.appName || \"defaultAppTitle\")} \n \n {menuAction?.confirm && }\n
\n );\n});\n","import { useLottie } from \"lottie-react\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { SmallCloseIcon } from \"@/components/icons\";\nimport { DatalayerEvents, DISPLAY_NUDGE_DELAY } from \"@/constants\";\nimport { useDatalayer, useFlowContext, usePubSub } from \"@/contexts\";\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\nimport { useChat, useUnreadMessages } from \"@/hooks\";\nimport { cleanApplicationState, cleanChatState, RootState, setChatLaunched, setMinimized, setUnreadCount, toggleMinimized } from \"@/store\";\n\nimport FlowerData from \"../../assets/lottie-animations/flower.json\" with { type: \"json\" };\nimport css from \"./floating-button.module.pcss\";\nimport stylesheet from \"./floating-button.module.pcss?inline\";\n\nexport const FloatingButton = () => {\n const {\n application: { chatLaunched, devMode, minimized, nudgePreference, windowHasBeenOpened },\n chat: { unreadCount, error },\n } = useSelector((state: RootState) => state);\n useCss(stylesheet);\n const context = useFlowContext();\n const dispatch = useDispatch();\n const t = useTranslator();\n const pubSub = usePubSub();\n const datalayer = useDatalayer();\n const { startChat } = useChat();\n const [displayNudge, setDisplayNudge] = useState(false);\n const [disappearing, setDisappearing] = useState(false);\n const [nudgeHasBeenShown, setNudgeHasBeenShown] = useState(false);\n const [showNudgeTimeoutID, setShowNudgeTimeoutID] = useState | undefined>(undefined);\n const botId = useSelector((state: RootState) => state.chat.chat.botId);\n\n useUnreadMessages();\n\n const options = {\n animationData: FlowerData,\n loop: false,\n };\n const { View: FlowerAnimation } = useLottie(options);\n\n const handleClick = () => {\n if (context.mode === \"BDN\" && context.system?.deviceType === \"Phone\") {\n openChatInMobileApp();\n } else {\n handleClickInternal();\n }\n };\n\n const openChatInMobileApp = () => {\n pubSub.publish(\"openMobileApp\", {\n appKey: \"FEED_CHAT\",\n });\n };\n\n const resetState = () => {\n dispatch(cleanApplicationState());\n dispatch(cleanChatState());\n };\n\n const handleClickInternal = () => {\n if (minimized) {\n dispatch(setUnreadCount(0));\n setDisplayNudge(false);\n }\n\n datalayer.addEvent(DatalayerEvents.FAB_CLICKED, { intent: minimized ? (chatLaunched ? \"restore\" : \"open\") : \"minimize\" });\n\n if (!minimized && error) {\n resetState();\n return;\n }\n\n dispatch(toggleMinimized());\n\n if (devMode) {\n dispatch(setChatLaunched(true));\n } else if (!chatLaunched) {\n const botDefinition = context.pa?.botIds[0];\n\n if (!botId) {\n throw new Error(\"Chatbot id is not set\");\n }\n\n if (botDefinition && botDefinition.properties.botType) {\n context.botType = botDefinition.properties.botType;\n }\n\n dispatch(setMinimized(false));\n dispatch(setChatLaunched(true));\n\n startChat({\n botId,\n extraId: (context.extraId as string) || \"\",\n chatToken: (context.chatToken as string) || \"\",\n token: (context.token as string) || \"\",\n });\n }\n };\n\n const hideNudge = () => {\n setDisappearing(true);\n setTimeout(() => {\n setDisplayNudge(false);\n }, 300);\n };\n\n useEffect(() => {\n if (!nudgePreference || windowHasBeenOpened) {\n setDisplayNudge(false);\n clearTimeout(showNudgeTimeoutID);\n setShowNudgeTimeoutID(undefined);\n } else {\n const timeoutID = setTimeout(() => {\n if (minimized && nudgePreference && !nudgeHasBeenShown) {\n setDisplayNudge(true);\n setNudgeHasBeenShown(true);\n }\n }, DISPLAY_NUDGE_DELAY);\n setShowNudgeTimeoutID(timeoutID);\n }\n }, [nudgePreference, windowHasBeenOpened]);\n\n return (\n <>\n {displayNudge && (\n \n
{t(\"descriptions.nudge\")}
\n
\n {t(\"labels.nudge\")} \n
\n
\n \n \n \n
\n
\n
\n )}\n \n
\n {FlowerAnimation}
\n \n {minimized && !!unreadCount &&
{unreadCount}
}\n
\n >\n );\n};\n","import { EventData } from \"@gef1/dax-client-sdk\";\nimport { ActionButton, Alert, Markdown } from \"belfius.geui.client.ui-react\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { DatalayerEvents } from \"@/constants\";\nimport { useTranslator } from \"@gef1/dax-react-sdk\";\nimport { useDatalayer, useFlowContext, usePubSub } from \"@/contexts\";\nimport { useBotDefinition, useChat } from \"@/hooks\";\nimport { BotType } from \"@/menus\";\nimport {\n cleanChatState,\n clearMessages,\n RootState,\n setChatIsReady,\n setChatLaunched,\n setHaseBeenClosed,\n setMinimized,\n setMyboFallbackUrl,\n setNudgePreference,\n} from \"@/store\";\nimport { MessageSender } from \"@/utils\";\n\nimport { MenuActions } from \"./../action-menu/menu-actions.tsx\";\nimport { FloatingButton } from \"./../floating-button/floating-button.tsx\";\n\nexport const MenuAndFab = () => {\n const dispatch = useDispatch();\n const context = useFlowContext();\n const pubSub = usePubSub();\n const datalayer = useDatalayer();\n const t = useTranslator();\n const { startChat, stopChat } = useChat();\n const { chatIsReady, hasBeenClosed, minimized, onMobileDevice } = useSelector((state: RootState) => state.application);\n const { chat } = useSelector((state: RootState) => state.chat);\n const { getBotDefinition } = useBotDefinition();\n\n const [floatingButtonVisible, setFloatingButtonVisible] = useState(\n !!context.pa?.showFPAButton || !context.mode /* standalone */,\n );\n const [showFPAButtonPreference, setShowFPAButtonPreference] = useState(\n !!context.pa?.showFPAButton || !context.mode /* standalone */,\n );\n\n const [showNavigationWarning, setShowNavigationWarning] = useState(false);\n const [navigationURL, setNavigationURL] = useState(\"\");\n const [restoreChat, setRestoreChat] = useState(false);\n const [nbOpenOverlays, setNbOpenOverlays] = useState(0);\n const [switchingChat, setSwitchingChat] = useState(false);\n\n const navigation = () => {\n setShowNavigationWarning(false);\n if (chatIsReady) {\n MessageSender.getInstance().notifyClientLeft();\n datalayer.addEvent(chat.botType === BotType.INSURANCE ? DatalayerEvents.CLOSE_MYBO : DatalayerEvents.CLOSE_PA);\n dispatch(setChatIsReady(false));\n }\n resetChat();\n dispatch(setMinimized(true));\n\n pubSub.publish(\"redirectToWithoutWarning\", { url: navigationURL });\n };\n\n useEffect(() => {\n determineFloatingButtonVisibility();\n }, [showFPAButtonPreference, nbOpenOverlays, chatIsReady]);\n\n useEffect(() => {\n determineChatWindowVisibility();\n }, [nbOpenOverlays]);\n\n const determineFloatingButtonVisibility = (botType?: BotType) => {\n setFloatingButtonVisible(\n (showFPAButtonPreference || !minimized || chatIsReady) &&\n nbOpenOverlays === 0 &&\n (botType ?? chat.botType) !== BotType.INSURANCE &&\n !switchingChat,\n );\n };\n\n const determineChatWindowVisibility = (startChatRequested: boolean = false) => {\n let shouldMinimize = minimized;\n if (nbOpenOverlays > 0) {\n shouldMinimize = true;\n // if chatwindow is currently open, hide it and mark it as to be re-opened after all overlays have been closed\n if (!minimized) {\n setRestoreChat(true);\n }\n } else if (nbOpenOverlays === 0) {\n shouldMinimize = !restoreChat && !startChatRequested;\n setRestoreChat(false);\n }\n\n if (minimized !== shouldMinimize) {\n dispatch(setMinimized(shouldMinimize));\n }\n };\n\n const startChatBot = async (bot: { botId: string; extraId: string }) => {\n const botDefinition = getBotDefinition(bot.botId);\n\n if (botDefinition?.properties.botType === BotType.INSURANCE) {\n datalayer.addEvent(DatalayerEvents.START_MYBO, { botId: botDefinition.id });\n }\n\n await startChat({ botId: botDefinition?.id ?? bot.botId, extraId: bot.extraId });\n };\n\n const resetChat = () => {\n dispatch(cleanChatState());\n stopChat();\n };\n\n useEffect(() => {\n const eventCallback = (event: string, data: EventData) => {\n switch (event) {\n case \"authenticated\":\n // We don't do anything when unlogged to logged (for MLP2)\n break;\n case \"unauthenticated\":\n dispatch(setMinimized(true));\n dispatch(setChatLaunched(false));\n resetChat();\n break;\n case \"navigationEnd\":\n setShowFPAButtonPreference(!!data.showFPAButton);\n dispatch(setNudgePreference(!!data.showNudge));\n break;\n case \"overlayOpened\":\n setNbOpenOverlays(data.nbOpenOverlays as number);\n break;\n case \"overlayClosed\":\n setNbOpenOverlays(data.nbOpenOverlays as number);\n break;\n case \"pageNavigationRequested\":\n setNavigationURL(data.url as string);\n if (chat.botType === \"insurance\" && !hasBeenClosed) {\n setShowNavigationWarning(true);\n dispatch(setHaseBeenClosed(true));\n } else {\n pubSub.publish(\"redirectToWithoutWarning\", data);\n dispatch(setHaseBeenClosed(false));\n }\n break;\n case \"startChatBot\":\n dispatch(setMinimized(false));\n // If bot is already started, do not reset it\n if (data.botName !== chat.botId || !chatIsReady) {\n if (chatIsReady) {\n MessageSender.getInstance().close();\n }\n\n const botType = getBotDefinition(chat.botId)?.properties?.botType;\n\n determineFloatingButtonVisibility(botType);\n setSwitchingChat(true);\n dispatch(setChatLaunched(true));\n\n // If botType is the same as the current one, only clear the messages.\n // If we do a cleanChatState in this case, the header will temporarily change to the default one while the chat is being set up.\n if (botType === chat.botType) {\n dispatch(clearMessages());\n } else {\n dispatch(cleanChatState());\n }\n stopChat();\n dispatch(setMyboFallbackUrl((data.myboFallbackUrl as string) || null));\n startChatBot({\n botId: data.botName as string,\n extraId: data.draftClaimId as string,\n }).then(() => {\n setSwitchingChat(false);\n determineChatWindowVisibility(true);\n });\n }\n\n break;\n }\n };\n\n pubSub.subscribe(eventCallback, [\n \"navigationEnd\",\n \"overlayOpened\",\n \"overlayClosed\",\n \"pageNavigationRequested\",\n \"startChatBot\",\n \"authenticated\",\n \"unauthenticated\",\n ]);\n\n determineFloatingButtonVisibility();\n\n return () => {\n pubSub.unsubscribe(eventCallback);\n };\n }, [minimized, chat, chatIsReady]);\n\n return (\n // @ts-ignore\n \n
\n {!onMobileDevice && floatingButtonVisible &&
}\n {!onMobileDevice && (\n
setShowNavigationWarning(false)}>\n {t(\"navigationAlert.content\")} \n \n {\n setShowNavigationWarning(false);\n }}\n > \n \n )}\n
\n );\n};\n","import { FlowType } from \"@gef1/dax-client-sdk\";\nimport { FC, ReactNode, useEffect } from \"react\";\n\nimport { useDatalayer } from \"@/contexts\";\n\nimport css from \"./flow.module.pcss\";\nimport stylesheet from \"./flow.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\n\ninterface FlowProps {\n id: string;\n type: FlowType;\n children: ReactNode;\n}\nexport const Flow: FC = (props: FlowProps) => {\n const datalayer = useDatalayer();\n useCss(stylesheet); \n\n useEffect(() => {\n datalayer.setFlow(props.id, props.type);\n }, []);\n\n return (\n \n <>{props.children}>\n
\n );\n};\n","import { ScreenType } from \"@gef1/dax-gefw-host\";\nimport { FC, ReactNode, useEffect, useRef } from \"react\";\n\nimport { useDatalayer } from \"@/contexts\";\n\nimport css from \"./screen.module.pcss\";\nimport stylesheet from \"./screen.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\n\ninterface ScreenProps {\n id: \"PersonalAssistantChat\" | \"PersonalAssistantNotAvailable\" | \"PersonalAssistantWelcome\";\n type: ScreenType;\n modal?: boolean;\n children: ReactNode;\n}\nexport const Screen: FC = ({ children, id, type, modal }: ScreenProps) => {\n const datalayer = useDatalayer();\n useCss(stylesheet);\n\n const mainElement = useRef(null);\n\n useEffect(() => {\n if (type !== ScreenType.NO_TAG) {\n datalayer.setScreen(id, type, !!modal, {});\n (mainElement.current as unknown as HTMLElement)?.addEventListener(\"geui:genericEvent\", (event: any) => {\n datalayer.addEvent(event.detail.name, event.detail.params);\n });\n }\n }, []);\n\n return (\n \n {children}\n
\n );\n};\n","import { FC, PropsWithChildren, useState } from \"react\";\n\nimport { PADatePicker } from \"@/components/chat-elements/date-picker/date-picker-element.tsx\";\nimport { DatePickerContext, DatePickerContextProps, DatePickerOptions } from \"@/contexts/datepicker/datepicker-context.ts\";\n\nexport const DatePickerProvider: FC = ({ children }) => {\n const [options, setOptions] = useState();\n\n const openDatePicker: DatePickerContextProps[\"openDatePicker\"] = (options) => {\n setOptions(options);\n };\n\n const onConfirmed = (date: Date) => {\n options!.onConfirmed(date);\n\n setOptions(null);\n };\n\n const onCanceled = () => {\n setOptions(null);\n };\n\n return (\n \n {children}\n {options && }\n \n );\n};\n","import type {FC, PropsWithChildren,ReactElement} from \"react\";\n\nimport {DatePickerProvider} from \"./datepicker/datepicker.provider.tsx\";\n\ntype AppContextProps = PropsWithChildren;\n// interface AppContextProps extends PropsWithChildren {\n// }\n \nexport const AppContext: FC = ({\n children,\n}): ReactElement => {\n return (\n {children} \n );\n};","// @ts-ignore\nimport \"./error-content.css\";\n\nimport type { ErrorTranslation } from \"@gef1/dax-client-sdk\";\nimport { ActionButton, Notice } from \"belfius.geui.client.ui-react\";\nimport { FC } from \"react\";\n\nimport { useTranslator } from \"@gef1/dax-react-sdk\";\n\ninterface ErrorContentProps {\n errors: ErrorTranslation[];\n}\n\nexport const ErrorContent: FC = ({ errors }) => {\n const t = useTranslator();\n const reload = () => {\n window.location.reload();\n };\n\n return (\n \n
\n {errors.map((error, i) => (\n
\n ))}\n
\n
\n
\n );\n};\n","import { ErrorTranslation } from \"@gef1/dax-client-sdk\";\nimport { isRouteErrorResponse, useRouteError } from \"react-router\";\n\nimport { DEFAULT_ERROR_TRANSLATION } from \"@/constants\";\n\nimport { ErrorContent } from \"./error-content/error-content.tsx\";\n\nexport const ErrorPage = () => {\n const error = useRouteError();\n let description: string;\n\n if (isRouteErrorResponse(error)) {\n description = error.statusText;\n } else if (error instanceof Error) {\n description = error.message;\n } else if (typeof error === \"string\") {\n description = error;\n } else {\n description = \"Unknown error\";\n }\n const errorTranslations: ErrorTranslation[] = [\n {\n ...DEFAULT_ERROR_TRANSLATION,\n description,\n },\n ];\n console.error(error);\n return ;\n};\n","import { ScreenType } from \"@gef1/dax-gefw-host\";\nimport { useSelector } from \"react-redux\";\n\nimport { Chat, ChatHeader, Loader, Screen } from \"@/components\";\n\nimport { RootState } from \"@/store\";\n\nimport css from \"./bdn-chat.module.pcss\";\nimport stylesheet from \"./bdn-chat.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\n\nexport const BDNChatPage = () => {\n const { loading } = useSelector((state: RootState) => state.chat);\n useCss(stylesheet);\n\n return (\n \n \n \n {loading ? : }\n
\n \n );\n};\n","import { HeaderIcon, HeaderStyle, NamedHeaderIcon, ScreenType } from \"@gef1/dax-gefw-host\";\nimport { useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport { Chat, Screen } from \"@/components\";\nimport { DatalayerEvents, WEB_APP_READY_EVENT_NAME } from \"@/constants\";\nimport { useDatalayer, useFlowContext, useMobileBridge, usePubSub } from \"@/contexts\";\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\nimport { useBotDefinition, useChat } from \"@/hooks\";\nimport { BotType, menus } from \"@/menus\";\nimport { RootState } from \"@/store\";\nimport { isAppleDevice, setWebViewScrollable } from \"@/utils\";\n\nimport css from \"./mobile-chat.module.pcss\";\nimport stylesheet from \"./mobile-chat.module.pcss?inline\";\n\nexport const MobileChatPage = () => {\n const datalayer = useDatalayer();\n const flowContext = useFlowContext();\n const { getBotDefinition } = useBotDefinition();\n const mobileBridge = useMobileBridge();\n const pubSub = usePubSub();\n useCss(stylesheet);\n\n const {\n application: { chatIsReady, historyHasBeenFetched },\n chat: { chat },\n } = useSelector((state: RootState) => state);\n const { runWS } = useChat();\n const t = useTranslator();\n const chatToken = chat?.chatToken || (flowContext?.chatToken as string);\n\n useEffect(() => {\n const botDefinition = getBotDefinition(chat.botId);\n\n if (botDefinition?.properties.botType === BotType.INSURANCE) {\n datalayer.addEvent(DatalayerEvents.START_MYBO, { botId: botDefinition.id });\n }\n }, []);\n\n useEffect(() => {\n if (isAppleDevice()) {\n setWebViewScrollable(false);\n }\n\n if (chatToken && !chatIsReady) {\n runWS(chatToken);\n }\n }, [chatToken]);\n\n useEffect(() => {\n if (chatIsReady && historyHasBeenFetched) {\n const botType = (flowContext.botType || \"bank\") as BotType;\n\n const menu = menus[botType];\n\n if (menu) {\n mobileBridge.setHeaderStyle(HeaderStyle.FLOW_INVERTED);\n mobileBridge.setTitleWithSubtitle({ title: t(menu.appName) });\n\n if (menu.leftIcon.icon) {\n mobileBridge.setLeftIcon(menu.leftIcon.icon, t(menu.leftIcon.pubSubAction));\n }\n\n const actions: { key: string; icon: HeaderIcon; title: string }[] = [];\n menu.menus.forEach((value) => {\n const {\n menuAction: { key },\n menu: { icon, title },\n } = value;\n\n actions.push({ key, icon, title: t(title) });\n });\n\n mobileBridge.setOverflowMenu(\n NamedHeaderIcon.OVERFLOW,\n actions.map((e) => ({ ...e, enabled: true })),\n t(\"labels.appMenu\"),\n );\n }\n\n pubSub.publish(WEB_APP_READY_EVENT_NAME, { flowId: flowContext.flowId });\n }\n }, [chatIsReady, historyHasBeenFetched]);\n\n return (\n \n \n \n
\n \n );\n};\n","import { HeaderStyle, ScreenType } from \"@gef1/dax-gefw-host\";\nimport { useLottie } from \"lottie-react\";\nimport { FC, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport { Screen } from \"@/components\";\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\nimport { useMobileBridge } from \"@/contexts\";\nimport { useTimeout } from \"@/hooks\";\nimport { RootState } from \"@/store\";\nimport { getPartOfDay } from \"@/utils\";\n\nimport AnimationData from \"../../assets/lottie-animations/welcome-animation.json\" with { type: \"json\" };\nimport css from \"./welcome.module.pcss\";\nimport stylesheet from \"./welcome.module.pcss?inline\";\n\ninterface WelcomePageProps {\n onDone?: () => void;\n}\n\nexport const WelcomePage: FC = ({ onDone }) => {\n const t = useTranslator();\n useCss(stylesheet);\n const mobileBridge = useMobileBridge();\n const options = {\n animationData: AnimationData,\n loop: false,\n };\n const { View: WelcomeAnimation } = useLottie(options);\n const { onMobileDevice } = useSelector((state: RootState) => state.application);\n\n // Delayed chat display\n useTimeout(() => onDone?.(), 5500);\n\n useEffect(() => {\n mobileBridge.removeIcons();\n mobileBridge.setHeaderStyle(HeaderStyle.TRANSPARENT_LIGHT);\n }, []);\n\n return (\n \n \n
\n
\n {WelcomeAnimation}\n
\n
\n
{t(`welcomeMessages.${getPartOfDay()}Greeting`)} \n
{t(\"welcomeMessages.defaultQuestion\")}
\n
\n
\n \n );\n};\n","import { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useNavigate } from \"react-router\";\n\nimport { usePubSub } from \"@/contexts\";\n\nimport { BotType } from \"@/menus\";\nimport { RootState, setMinimized, setWindowHasBeenOpened } from \"@/store\";\nimport { isYesterdayAndLater, ROUTES_NAMES } from \"@/utils\";\n\nimport { BDNChatPage } from \"../chat/bdn-chat.page.tsx\";\nimport { MobileChatPage } from \"../chat/mobile-chat.page.tsx\";\nimport { WelcomePage } from \"../welcome/welcome.page.tsx\";\nimport css from \"./home.module.pcss\";\nimport stylesheet from \"./home.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\n\nconst LAST_WELCOME_SHOWN_KEY: string = \"LAST_WELCOME_SHOWN\";\n\nexport const HomePage = () => {\n const pubSub = usePubSub();\n useCss(stylesheet);\n const dispatch = useDispatch();\n const { chatLaunched, onMobileDevice, minimized } = useSelector((state: RootState) => state.application);\n const { chat } = useSelector((state: RootState) => state.chat);\n const { error, myboFallbackUrl, requestedBotType } = useSelector((state: RootState) => state.chat);\n const navigate = useNavigate();\n\n useEffect(() => {\n if (error) {\n if (requestedBotType === BotType.INSURANCE && myboFallbackUrl) {\n pubSub.publish(\"redirectToWithoutWarning\", { url: myboFallbackUrl });\n dispatch(setMinimized(true));\n } else {\n navigate(ROUTES_NAMES.CHAT_UNAVAILABLE);\n }\n }\n }, [error, myboFallbackUrl, requestedBotType]);\n\n // Figure out if we should run the welcome animation first\n const lastWelcomeShown = localStorage.getItem(LAST_WELCOME_SHOWN_KEY);\n const shouldDisplayWelcome = !lastWelcomeShown || isYesterdayAndLater(new Date(lastWelcomeShown));\n const [welcomeShown, setWelcomeShown] = useState(!shouldDisplayWelcome);\n\n const onDone = () => {\n localStorage.setItem(LAST_WELCOME_SHOWN_KEY, new Date().toISOString());\n setWelcomeShown(true);\n };\n\n if ((!onMobileDevice && !chatLaunched) || !chat.botId) return null;\n\n dispatch(setWindowHasBeenOpened(true));\n\n return (\n \n {welcomeShown ? onMobileDevice ? : : }\n
\n );\n};\n","import { useEffect } from \"react\";\nimport { useDispatch } from \"react-redux\";\n\nimport { useDevChat } from \"@/hooks\";\nimport { setDevMode } from \"@/store\";\n\nimport { HomePage } from \"../home/home.page.tsx\";\n\nexport const DevPage = () => {\n const { startDemoChat } = useDevChat();\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(setDevMode(true));\n }, []);\n\n startDemoChat();\n\n return ;\n};\n","import { ScreenType } from \"@gef1/dax-gefw-host\";\nimport { ActionButton, IconButton } from \"belfius.geui.client.ui-react\";\nimport { useLottie } from \"lottie-react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { Screen } from \"@/components\";\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\n\nimport { cleanApplicationState, cleanChatState, restartApp, RootState } from \"@/store\";\n\nimport FlowerData from \"../../assets/lottie-animations/flower.json\" with { type: \"json\" };\nimport css from \"./chat-unavailable.module.pcss\";\nimport stylesheet from \"./chat-unavailable.module.pcss?inline\";\nimport { useDaxNavigation } from \"@/hooks\";\nimport { BELFIUS_CONTACT_PAGE_URL, SMART_SEARCH_URL } from \"@/constants\";\n\nexport const ChatUnavailablePage = ({ ...props }) => {\n const { navigate } = useDaxNavigation();\n useCss(stylesheet);\n\n const t = useTranslator();\n const dispatch = useDispatch();\n const options = {\n animationData: FlowerData,\n loop: true,\n style: {\n width: \"200px\",\n height: \"200px\",\n },\n };\n\n const { minimized, onMobileDevice } = useSelector((state: RootState) => state.application);\n // @ts-ignore\n const { View: FlowerAnimation } = useLottie(options);\n\n const restart = () => {\n dispatch(cleanApplicationState());\n dispatch(cleanChatState());\n dispatch(restartApp());\n };\n\n return (\n \n \n
\n restart()} name=\"icoClose\" />\n
\n
{FlowerAnimation}
\n
\n
{t(\"errors.chatUnavailable.sorry\")}
\n
{t(\"errors.chatUnavailable.title\")}
\n
{t(\"errors.chatUnavailable.description\")}
\n
\n
\n
{\n navigate(SMART_SEARCH_URL, \"internal\");\n }}\n text={t(\"errors.chatUnavailable.buttons.useSmartSearchLabel\")}\n type={\"secondary\"}\n />\n {\n navigate(BELFIUS_CONTACT_PAGE_URL, \"internal\");\n }}\n text={t(\"errors.chatUnavailable.buttons.otherContactOptionsLabel\")}\n type={\"secondary-inverted\"}\n />\n \n
\n \n );\n};\n","import { DevLogin, DevLoginProps, DevFormControls } from \"@gef1/dax-react-sdk\";\nimport { FC, useState } from \"react\";\nimport { useFlowContext } from \"@/contexts\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { RootState, setBotId } from \"@/store\";\n/**\n * Add bot\n */\nexport const DevLoginPage: FC> = ({ ...props }) => {\n const context = useFlowContext();\n const dispatch = useDispatch();\n const botId = useSelector((state: RootState) => state.chat.chat.botId);\n const [devMode, setDevMode] = useState(false);\n\n return (\n \n PA Options \n \n \n BotId \n {\n context.botId = ev.target.value; // Just for completeness, the app seems to use redux for this value\n dispatch(setBotId(context.botId));\n }}\n />\n \n \n ExtraId \n {\n context.extraId = ev.target.value; // Kinda dirty to just update a property instead of creating a new context value\n }}\n />\n \n \n Dev Mode \n {\n setDevMode(ev.target.checked);\n }}\n />\n \n
\n \n );\n};\n","import { ROUTES_NAMES } from \"@/utils\";\nimport { ErrorPage } from \"./components/errors/error-page.tsx\"; // Error reporting\nimport { DevPage } from \"./pages/dev/dev.page.tsx\";\nimport { ChatUnavailablePage } from \"./pages/chat-unavailable/chat-unavailable.page.tsx\";\nimport { HomePage } from \"./pages/home/home.page.tsx\";\nimport { DevLoginPage } from \"./pages/dev-login/dev-login.page.tsx\";\n\nimport type * as React from \"react\";\nimport { Route, Routes, Outlet } from \"react-router\";\n\nimport { RequireAuth } from \"@gef1/dax-react-sdk\";\nimport { MenuAndFab } from \"@/components\";\n\nexport const AppRoutes: React.FC> = () => {\n return (\n \n \n \n \n }\n errorElement={ }\n >\n {/** TODO: MenuAndFab as a layout route is best refactored into the pages themselves */}\n \n \n \n >\n }\n >\n } />\n } />\n \n \n } />\n } />\n \n );\n};\n","import { StandaloneHostContext } from \"@gef1/dax-client-sdk\";\nimport type { BdnHostContext, HybridHostContext } from \"@gef1/dax-gefw-host\";\nimport { FlowType } from \"@gef1/dax-gefw-host\";\nimport { useHost } from \"@gef1/dax-react-sdk\";\nimport { FC, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport type { BrowserRouter, HashRouter, MemoryRouter } from \"react-router\";\n\nimport { Flow } from \"@/components\";\nimport { AppContext } from \"@/contexts/app-context.tsx\";\nimport { useFlowContext } from \"@/contexts/flowcontext-context.ts\";\nimport { resolveBotType, useChat } from \"@/hooks\";\nimport { initialize, RootState, setChat } from \"@/store\";\nimport { APP_MODES, MessageSender } from \"@/utils\";\n\nimport { AppRoutes } from \"./routes.tsx\";\n\nexport type GEFWHostContext = HybridHostContext | BdnHostContext;\nexport type PAHostContext = StandaloneHostContext | GEFWHostContext;\n\ninterface PersonalAssistantAppProps {\n // index.tsx/entry.client.tsx now decide which router to use\n routerComponent: typeof MemoryRouter | typeof BrowserRouter | typeof HashRouter;\n}\n\nexport const PersonalAssistantApp: FC = ({ routerComponent: RouterComponent }) => {\n const host = useHost();\n const dispatch = useDispatch();\n const { stopChat } = useChat();\n\n const context = useFlowContext();\n const onMobile = context.mode === APP_MODES.BM; // alt: This could now be checked with: `host.type === \"Hybrid\"` (please don't do `host instanceof HybridHostContext`)\n const locale = host.session.locale;\n const id = (host as GEFWHostContext).flowId!;\n\n useEffect(() => {\n const botId = (context.botId as string) ?? context.pa?.botIds[0].id;\n const botType = resolveBotType(botId, context);\n dispatch(\n setChat({\n botId: botId as string,\n chatToken: context.chatToken!,\n token: context.token!,\n botType: botType,\n extraId: context?.extraId,\n }),\n );\n dispatch(\n initialize({\n locale, // TODO: Do we still need redux to store the locale?\n onMobileDevice: onMobile,\n nudgePreference: !!context.pa?.showNudge || !context.mode,\n }),\n );\n }, []);\n\n const { chatIsReady } = useSelector((state: RootState) => state.application);\n\n useEffect(() => {\n const handleBeforeUnload = () => {\n if (chatIsReady && !onMobile) {\n MessageSender.getInstance().notifyClientLeft();\n stopChat();\n }\n };\n window.addEventListener(\"beforeunload\", handleBeforeUnload);\n return () => {\n window.removeEventListener(\"beforeunload\", handleBeforeUnload);\n };\n }, [chatIsReady]);\n\n return (\n \n \n \n \n \n \n \n );\n};\n"],"names":["Be","t","e","de","K","n","N","G","k","j","C","ve","je","X","W","q","s","r","o","i","c","F","Me","re","ye","He","ee","we","We","d","$e","a","b","ze","oe","Ee","Q","m","p","u","l","f","E","T","U","h","y","w","S","Re","fe","Ge","he","ie","O","M","Se","v","$","te","x","ne","Ze","B","z","Te","Oe","Ae","_","A","I","xe","Z","Ce","ae","J","P","H","be","ce","Ne","se","Le","Y","Ue","V","L","ge","D","pe","le","g","R","ke","Component","createRef","attrProps","key","value","attr","_jsx","event","args","prevProps","el","date","DatalayerEvents","exports","MILLISECONDS","SECONDS","ReadyState","eventSourceSupported","resetWebSockets","url","url_1","constants_1","require$$0","parseSocketIOUrl","isSecure","strippedProtocol","removedFinalBackSlack","protocol","port","appendQueryParams","params","hasParamsRegex","alreadyHasParams","stringified","next","_a","setUpSocketIOPing","sendMessage","interval","ping","heartbeat_1","heartbeat","ws","lastMessageTime","options","_b","_c","timeout","_d","message","heartbeatInterval","err","subscribers","EMPTY_LIST","getSubscribers","hasSubscribers","addSubscriber","subscriber","removeSubscriber","resetSubscribers","assertIsWebSocket","resetGlobalState","globals_1","manage_subscribers_1","require$$1","webSocketInstance","skip","__assign","this","socket_io_1","require$$2","util_1","require$$3","bindMessageHandler","optionsRef","setLastMessage","bindOpenHandler","setReadyState","reconnectCount","heartbeatOptions","bindCloseHandler","reconnect","reconnectTimeout","reconnectAttempts","nextReconnectInterval","bindErrorHandler","error","attachListeners","setters","cancelReconnectOnClose","cancelReconnectOnError","attachSharedListeners_1","require$$4","attachSharedListeners","attach_listener_1","attach_shared_listeners_1","cleanSubscribers","clearSocketIoPingInterval","socketLike","createOrJoinSocket","webSocketRef","startRef","__awaiter","thisArg","_arguments","generator","adopt","resolve","reject","fulfilled","step","rejected","result","__generator","body","verb","op","__spreadArray","to","from","pack","ar","waitFor","duration","getUrl","optionsRef_1","args_1","_i","retriedAttempts","convertedUrl","reconnectLimit","parsedUrl","parsedWithQueryParams","websocketWrapper","webSocket","start","obj","val","__importDefault","mod","react_1","react_dom_1","create_or_join_1","get_url_1","proxy_1","require$$6","useWebSocket","connect","lastMessage","readyState","lastJsonMessage","messageQueue","webSocketProxy","optionsCache","readyStateFromUrl","stringifiedQueryParams","keep","sendJsonMessage","getWebSocket","removeListeners_1","expectClose_1","createOrJoin_1","start_1","protectedSetLastMessage","protectedSetReadyState","prev","state","use_websocket_1","emptyEvent","getSocketData","match","data","useSocketIO","optionsWithSocketIO","socketIOLastMessage","__rest","useEventSource_1","useEventSource","withCredentials","events","optionsWithEventSource","eventsRef","type","handler","use_socket_io_1","use_event_source_1","createContext","useContext","warned","host","useHost","useMemo","mockDatalayer","locale","mockCtx","mockMobileBridge","BrowserWebSocketFactory","context","botId","ApiClient","fetcher","ms","APP_MODES","index","messages","nextMessage","nextTimestamp","nextOrigin","nextTemplate","displayTimestamp","toInteger","dirtyNumber","number","requiredArgs","required","toDate","argument","argStr","_typeof","dirtyDate","dirtyAmount","amount","addMilliseconds","timestamp","defaultOptions","getTimezoneOffsetInMilliseconds","utcDate","dirtyDateLeft","dirtyDateRight","dateLeftStartOfDay","dateRightStartOfDay","isDate","isValid","subMilliseconds","getUTCDayOfYear","startOfYearTimestamp","difference","startOfUTCISOWeek","weekStartsOn","day","diff","getUTCISOWeekYear","year","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK","getUTCISOWeek","startOfUTCWeek","_ref","_ref2","_ref3","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","getUTCWeekYear","_options$firstWeekCon","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","getUTCWeek","addLeadingZeros","targetLength","sign","output","formatters","token","signedYear","month","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","localize","era","lightFormatters","signedWeekYear","weekYear","twoDigitYear","isoWeekYear","quarter","week","isoWeek","dayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","_localize","originalDate","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","offset","dirtyDelimiter","absOffset","minutes","delimiter","pattern","formatLong","matchResult","datePattern","timePattern","dateTimeFormat","longFormatters","format","input","formatDistanceLocale","formatDistance","count","tokenValue","buildFormatLongFn","width","dateFormats","timeFormats","dateTimeFormats","formatRelativeLocale","formatRelative","_date","_baseDate","_options","buildLocalizeFn","dirtyIndex","valuesArray","defaultWidth","_defaultWidth","_width","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","ordinalNumber","rem100","buildMatchFn","string","matchPattern","matchedString","parsePatterns","rest","object","predicate","array","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","dirtyFormatStr","_ref4","_options$locale2","_options$locale2$opti","_ref5","_ref6","_ref7","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","defaultLocale","formatterOptions","substring","firstCharacter","longFormatter","formatter","matched","dirtyDateToCompare","dateToCompare","dateToCheck","hour","stringDate","assetName","assetsEnvironment","onMobileDevice","form","unit","feminineUnits","suffix","enUS","fr","nl","historyItem","label","historyMessages","acc","dayKey","existingGroup","group","onMobile","replacedData","replacedValue","toBeReplaced","replacedBy","_unHandledCase","minimized","historyLastMessagesIds","unreadCount","dispatch","useTranslator","handleFunctionalMessage","message_id","existingMessage","handleTechnicalMessage","eventName","parsedMessages","parsedMessage","fakeDelay","formattedMessage","action","botDefinition","config","api","webSocketFactory","handleMessages","handleMessageRef","useRef","createChat","botType","response","runWS","stopChat","initializeMessageSender","startChat","chatWs","TESTING_WS_URL","handleMessage","send","msg","startDemoChat","useEffect","navigation","mobileBridge","target","navigationMode","NavigationMode","_interopRequireDefault","module","_typeof2","_index","_index2","_index3","MILLISECONDS_IN_DAY","_index4","defaultOptions_1","getDefaultOptions","setDefaultOptions","newOptions","_index5","require$$5","_default","_index6","_index7","dayPeriodEnum","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","protectedDayOfYearTokens","protectedWeekYearTokens","formattingDayPeriodValues","findIndex","findKey","require$$7","_index8","_index9","_index10","require$$10","_index11","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","cleanEscapedString","length","dtf","formatted","tzNameMatch","timeZone","filled","pos","parsed","testDateFormatted","hourCycleSupported","fullYear","minute","second","millisecond","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE","patterns","timezoneString","isUtcDate","absoluteOffset","fixedOffset","tokens","asUTC","asTS","over","localTS","utcGuess","o2","o3","timeZoneString","timeZoneOffset","dirtyDelimeter","delimeter","dirtyOptions","additionalDigits","dateStrings","parseYearResult","restDateString","time","dateString","parts","timeString","patternYYY","patternYYYYY","yearString","centuryString","seconds","fourthOfJanuaryDay","isLeapYear","matches","precededByQuotedSection","replaced","assign","property","cloneObject","offsetMilliseconds","resultDate","extendedOptions","entry","status","canFetchMoreData","setCanFetchMoreData","useState","currentLoadedPage","setCurrentLoadedPage","setData","setError","loading","setLoading","page","setPage","rawData","setRawData","shouldDisplayHistory","setShouldDisplayHistory","setUnreadCount","storedBotId","chatToken","extraId","resets","anonymousSession","useSession","session","flowContext","dateFormat","historyStatus","REQUEST_TIMEOUT","BDNFlowContextBotId","fetchData","now","endDate","startDate","dynamicPageSize","history","lastMessageIds","item","allHistoryMessages","separatorPosition","_unreadCount","items","groupedByDay","errorMessage","fetchUnreadMessages","unreadMessages","id","src","imgSrc","setImgSrc","img","treshold","targetRef","intersectionResult","setIntersectionResult","observer","entries","dependency","ref","setRef","intersectionPercentage","setIntersectionPercentage","useLayoutEffect","callback","delay","savedCallback","close","datalayer","chat","closing","runAction","jsxs","jsx","Markdown","pubSub","setAction","dl","menu","eventSubscriber","MobileHeaderMessage","menuAction","useCss","stylesheet","inputDisabled","setValue","container","updateValue","css","absX","absY","deltaX","deltaY","angle","angleInRadians","set","handlerProps","onStart","isTouch","props","onMove","onUp","clientX","clientY","xy","velocity","vxvy","dir","delta","eventData","cancelablePageSwipe","onEnd","onSwipedDir","cleanUpMouse","attachTouch","cleanup","baseOptions","tls","addState","previousProps","trackMouse","transientState","React.useRef","transientProps","defaultKey","handlers","React.useMemo","stateSetter","global","factory","flag","sources","destination","len","sourcePrototype","prop","prototype","ProxyFunction","AudioController","audioFactory","audio","rateValue","assetPath","createRegularArray","arr","createTypedArrayFactory","propertyNames","tOfVal","absArr","element","currentTime","totalTime","frameMultiplier","totalLoops","currentLoop","firstFrame","totalFrames","nativeError","_count","max","min","color","hsv","colorMap","hex","_counterId","processes","workerFn","workerInstance","workerProxy","path","_workerSelf","createWorker","fn","blob","setupWorker","dataFunctionManager","completeLayers","layers","comps","layerData","jLen","kLen","maskProps","convertPathsToAbsoluteValues","findCompLayers","completeShapes","completeChars","chars","assets","findComp","comp","checkVersion","minimum","animVersionString","animVersion","checkText","minimumVersion","updateTextLayer","textLayer","documentData","iterateLayers","animationData","checkChars","charData","checkPathProperties","pathData","checkColors","iterateShapes","shapes","checkShapes","completeClosingShapes","completeData","moduleOb","formatResponse","xhr","contentTypeHeader","loadAsset","fullPath","errorCallback","animation","process","createProcess","onComplete","onError","loadAnimation","processId","loadData","completeAnimation","anim","proxyImage","canvas","ctx","imageLoaded","footageLoaded","getAssetsPath","assetData","assetsPath","originalPath","imagePath","testImageLoaded","intervalId","box","createImageData","ob","createImgData","createFootageData","footageData","loadAssets","cb","setPath","setAssetsPath","getAsset","destroy","loadedImages","loadedFootages","setCacheType","elementHelper","ImagePreloaderFactory","callbacks","parsePayloadLines","payload","lines","keys","line","keysCount","_markers","markers","_marker","markerData","registerComposition","_thisProjectFunction","name","animType","RendererClass","wrapper","wrapperAttributes","loop","autoplay","prerender","newLayers","expressionsPlugin","segments","segment","segmentPath","animData","height","_height","markerName","marker","isFrame","numValue","nextValue","_isComplete","init","end","pendingFrame","forceFlag","isLooping","registeredAnimations","initTime","playingAnimationsNum","_stopped","_isFrozen","removeElement","ev","animItem","subtractPlayingCount","registerAnimation","setupAnimation","getRegisteredAnimations","lenAnims","animations","addPlayingCount","activate","setSpeed","setDirection","play","resume","nowTime","elapsedTime","first","pause","goToAndStop","stop","togglePause","searchAnimations","standalone","renderer","animElements","div","resize","freeze","unfreeze","setVolume","mute","unmute","getBezierEasing","beziers","nm","str","bezEasing","BezierEasing","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","aA1","aA2","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","newtonRaphsonIterate","aGuessT","currentSlope","points","mY1","mY2","mSampleValues","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope","_double","initialLength","_create","_release","_length","_maxLength","pool","newElement","release","create","math","pointOnLine2D","x1","y1","x2","y2","x3","y3","det1","pointOnLine3D","z1","z2","z3","dist1","dist2","dist3","diffDist","getBezierLength","pt1","pt2","pt3","pt4","curveSegments","ptCoord","perc","addedLength","ptDistance","point","lastPoint","lengthData","getSegmentsLength","shapeData","segmentsLength","closed","pathV","pathO","pathI","lengths","totalLength","BezierData","PointData","partial","buildBezierData","storedData","bezierName","bezierData","getDistancePerc","percents","initPos","lengthPos","lPerc","getPointInSegment","percent","t1","u1","ptX","ptY","bezierSegmentPoints","getNewSegment","startPerc","endPerc","t0","u0","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","frameNum","caching","offsetTime","newValue","iterationIndex","keyData","nextKeyData","keyframeMetadata","fnc","nextKeyTime","keyTime","endValue","ind","distanceInLine","segmentPerc","outX","outY","inX","inY","keyValue","quatStart","quatEnd","out","ax","ay","az","aw","bx","by","bz","bw","omega","cosom","sinom","scale0","scale1","quat","qx","qy","qz","qw","heading","attitude","bank","values","c1","c2","c3","s1","s2","s3","endTime","renderResult","multipliedValue","finalValue","effectFunction","elem","mult","ti","arrLen","getProp","replace","vX","vY","oX","oY","iX","iY","newPath","vertices","outPoints","inPoints","cnt","shapePath","clone","shape","cloned","newShapeCollection","shapeCollection","initFrame","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","kf","interpolateShapeCurrentTime","lastFrame","resetShape","shapesEqual","shape1","shape2","setVValue","processEffectsSequence","ShapeProperty","addEffect","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","p0","p1","s0","_cw","_v","StarShapeProperty","StarShapePropertyFactory","numPts","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","rad","roundness","perimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","v0","v1","round","getShapeProp","dataProp","getConstructorFunction","getKeyframedConstructorFunction","_cos","_sin","_tan","_rnd","reset","rotate","mCos","mSin","rotateX","rotateY","rotateZ","shear","sx","sy","skew","skewFromAxis","scale","sz","setTransform","translate","tx","ty","tz","transform","a2","b2","d2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","p2","_p","a1","b1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","multiply","matrix","matrixProps","isIdentity","equals","matr","cloneFromProps","applyToPoint","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","pt","inversePoints","pts","retPts","applyToTriplePoints","p4","p5","p12","p13","applyToPointArray","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","_e","_f","href","prefix","plugin","variable","vars","pair","modifiers","registerModifier","getModifier","shapeLength","totalModifierLength","shapeSegments","segmentOb","shapeS","shapeE","pathsData","_isFirstFrame","_s","shapePaths","totalShapeLength","localShapeCollection","edges","newShapesData","lastShapeInCollection","lastShape","newPaths","newShape","shapeSegment","currentLengthData","segmentCount","segmentLength","centerPoint","pathLength","clonedPath","defaultVector","applyToMatrix","mat","_mdf","processKeys","forceRender","frameRate","v2","px","py","precalculateMatrix","autoOrient","addDynamicProperty","TransformProperty","getTransformProperty","pMatrix","rMatrix","sMatrix","inv","scaleX","scaleY","elemsData","elements","newElements","renderFlag","itemsTransform","cont","hasReloaded","copies","elems","transformData","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","currentV","currentI","currentO","closerV","distance","newPosPerc","rd","singleRoot","p3","linearize","coeffx","coeffy","denom","tcusp","square","root","p10","p11","p20","p21","bez","bounds","t2","split","depth","tolerance","intersections","maxRecursion","d1s","d2s","other","nextIndex","start1","end1","start2","end2","v3","v4","outputBezier","direction","amplitude","outAmplitude","inAmplitude","angO","angI","vector","rot","rotatedVector","cur","prevIndex","prevPoint","nextPoint","pVector","frequency","pointType","prevDist","nextDist","p1a","p1b","p2b","p2a","seg1","seg2","lineJoin","miterLimit","angleOut","angleIn","center","radius","tan","intersection","intersect","outa","outb","flex","left","right","mid","inputBezier","multiSegments","lastSeg","multiSegment","fontData","styles","fWeight","fStyle","styleName","maxWaitingTime","emptyChar","combinedCharacters","BLACK_FLAG_CODE_POINT","CANCEL_TAG_CODE_POINT","A_TAG_CODE_POINT","Z_TAG_CODE_POINT","VARIATION_SELECTOR_16_CODE_POINT","ZERO_WIDTH_JOINER_CODE_POINT","REGIONAL_CHARACTER_A_CODE_POINT","REGIONAL_CHARACTER_Z_CODE_POINT","surrogateModifiers","trimFontOptions","font","familyArray","enabledFamilies","setUpNode","family","parentNode","node","checkLoadedFonts","loadedCount","createHelper","def","engine","helper","fontProps","tHelper","tCanvasHelper","measure","text","addFonts","defs","fontArr","_pendingFonts","shouldLoadFont","loadedSelector","sc","addChars","found","getCharData","_char","style","measureText","_char2","fontName","size","doubleSize","singleSize","getFontByName","getCodePoint","codePoint","isModifier","firstCharCode","secondCharCode","sum","isZeroWidthJoiner","charCode","isVariationSelector","isRegionalCode","isFlagEmoji","isCombinedCharacter","_char3","isRegionalFlag","setIsLoaded","Font","fontPrototype","component","num","blendModeEnums","mode","effects","effectItem","eff","expressionsInterfaces","LayerExpressionInterface","EffectsExpressionInterface","ShapeExpressionInterface","TextExpressionInterface","CompExpressionInterface","effectsInterface","blendModeValue","globalData","isVisible","FootageInterface","timeRemapped","totalVolume","volumeValue","layer","pInterface","parentName","hierarchy","pathValue","fontsContainer","finalMat","localMat","lmat","localOp","transformEffects","transforms","ptNew","properties","currentMasks","layerId","rect","expansor","feMorph","maskType","maskRef","filterID","mask","isFirstFrame","pathNodes","viewData","pathString","pathShapeValue","createFilter","createAlphaToLuminanceFilter","filId","skipCoordinates","fil","feColorMatrix","source","filterManager","Effect","effect","countsAsEffect","layerElementParent","gg","cp","clipId","cpGroup","matteType","useElement","masker","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","_prototype","position","shouldBreakProcess","transformers","level","styleOb","cLength","pathElement","gradientId","gfill","stops","maskElement","opacityId","maskId","opFill","mProps","_o","shapeString","_identityMatrix","_matrixHelper","createRenderFunction","renderFill","renderGradient","renderGradientStroke","renderStroke","renderPath","renderContentTransform","renderNoop","styleData","itemData","pathStringTransformed","redraw","lLen","lvl","paths","iterations","styleElem","hasOpacity","attr1","attr2","cValues","oValues","ang","tempShapes","areAnimated","elementData","GradientConstructor","transformProperty","ownTransformers","shapeProperty","itemsData","prevViewData","render","ownStyles","ownModifiers","currentTransform","modifier","processedPos","animatedContent","sw","fc","updated","_finalValue","currentValue","currentIndex","textKeys","charactersArray","shouldCombine","shouldCombineNext","currentChars","fontManager","letters","newLineFlag","anchorGrouping","currentSize","currentPos","currentLine","lineWidths","lineWidth","maxLineWidth","trackingOffset","boxWidth","boxHeight","currentHeight","finalText","lastSpaceIndex","uncollapsedSpaces","currentChar","animators","animatorData","letterData","based","indexes","currentInd","newInd","newData","dData","_canResize","_fontValue","floor","TextSelectorPropFactory","easer","tot","smoothness","threshold","newCharsFlag","divisor","getTextSelectorProp","animatorProps","defaultData","textAnimatorAnimatables","textData","renderType","lettersChangedFlag","alignment","matrixHelper","renderedLettersCount","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","partialLength","tanAngle","yOff","firstLine","animatorSelector","letterValue","offf","xPathPos","yPathPos","initPathPos","initSegmentInd","initPointInd","elemOpacity","letterSw","letterSc","letterFc","letterM","letterP","letterO","animatorJustifyOffset","animatorFirstCharOffset","justifyOffsetMult","lastIndex","isNewLine","animatorOffset","shapeStr","_fontSize","lineNumber","colorData","textArray","textContents","currentTextContent","shapeItem","usesGlyphs","tSpan","singleShape","tElement","justify","textContent","cachedSpansLength","childSpan","glyphElement","glyph","textBox","renderedLetters","renderedLetter","textSpan","elementIndex","matteElement","matteMask","nextElement","animationItem","ariaLabel","titleElement","titleId","descElement","descId","sequence","lumaBuffer","lumaBufferCtx","svg","createLumaSvgFilter","_svg","loadLuma","getLuma","hasMasks","canvasContext","bufferCanvas","bufferCanvas2","buffer","bufferCtx","forceRealStack","transformsManager","styledShape","shouldRender","ownTransforms","parentTransform","groupTransform","nodes","currentStyle","isMain","shapeNodes","groupTransformMat","grd","opacity","hasFill","hasStroke","commands","pathArr","commandsCounter","lastFill","lastStroke","lastStrokeW","imgW","imgH","imgRel","canvasRel","widthCrop","heightCrop","par","rule","actionFlag","containerStyle","origin","elementWidth","elementHeight","elementRel","animationRel","fillType","newLength","forceRestore","currentContext","prevStack","saveOnNativeFlag","currentStack","newStack","trProps","currentOpacity","transformedElementStyle","matrixValue","boundingBox","vPoint","oPoint","nextIPoint","nextVPoint","b2ac","widthProperty","kfw","tempBoundingBox","changed","shapeStyle","shapeTransform","innerElemStyle","textColor","tParent","tCont","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","margin","svgTransform","perspectiveStyle","perspective","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","newDOMElement","nextDOMElement","nextLayer","tmpDOMElement","perspectiveElem","threeDContainerData","lastThreeDContainerData","currentContainer","resizerElem","cWidth","cHeight","floatingContainer","_thisLayerFunction","chunks","digits","rngname","startdenom","significance","overflow","seedrandom","seed","shortseed","mixkey","flatten","tostring","autoseed","arc4","ARC4","prng","is_math_call","copy","keylen","me","typ","stringseed","smear","browser","plugins","BMMath","tOfV","tOfA","lenA","retArr","tOfB","lenB","mm","arr1","arr2","vec","tMin","tMax","value1","value2","_tMin","rnd","rndm","inTangents","outTangents","arrPlaceholder","inVertexPoint","outVertexPoint","_value","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","elem1","elem2","fVec","pitch","yaw","val1","val2","iKey","lenKey","obKey","fps","framesPerSecond","initExpressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","expression","MaskInterface","MaskManager","maskManager","_masksInterfaces","maskFunction","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","valueProp","UnidimensionalPropertyInterface","MultidimensionalPropertyInterface","arrValue","defaultGetter","_thisFunction","_px","_py","_pz","_transformFactory","getMatrix","toWorldMat","propMatrix","transformMat","toWorldVec","toWorld","fromWorldVec","fromWorld","applyPoint","invertPoint","fromComp","sampleImage","transformInterface","_registerMaskInterface","_registerEffectsInterface","anchorPointDescriptor","interfaceFunction","parentPropertyGroup","propertyName","propertyGroup","_propertyGroup","createEffectsInterface","effectElements","effectsData","createGroupInterface","groupInterface","createValueInterface","expressionProperty","view","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","defaultInterfaceFactory","contentsInterfaceFactory","interfaces","transformInterfaceFactory","content","_dashPropertyGroup","dashOb","addPropertyToDashOb","_interfaceFunction","parentGroupWrapper","_sourceText","stringValue","outlineInterfaceFactory","currentPropertyName","currentProperty","searchProperty","propertyNameIndex","dataInterfaceFactory","searchExpressions","getValueAtTime","getSpeedAtTime","speed","getVelocityAtTime","getStaticValueAtTime","setGroupProperty","loopOut","durationFlag","currentFrame","keyframes","lastKeyFrame","cycleDuration","firstKeyFrame","ret","initV","endV","current","repeats","lastValue","nextLastValue","loopIn","firstValue","nextFirstValue","smooth","samples","endFrame","sampleFrequency","sampleValue","getTransformValueAtTime","anchor","skewAxis","rotation","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformStaticValueAtTime","propertyGetProp","getShapeValueAtTime","ShapePropertyConstructorFunction","KeyframedShapePropertyConstructorFunction","ShapeExpressions","accumulatedLength","initIndex","endIndex","vectorType","xLength","yLength","magnitude","unitVector","propertyGetShapeProp","trims","isKeyframed","hasExpressions","createMergeNode","resultId","ins","feMerge","feMergeNode","filter","colorBlack","colorWhite","elemChildren","groupPath","dasharrayValue","lineLength","units","feComponentTransfer","feFuncR","feFuncG","feFuncB","color1","color2","color3","tableR","tableG","tableB","inputBlack","inputWhite","gamma","outputBlack","outputWhite","table","colorValue","outputDelta","inputDelta","globalFilterSize","filterSize","feGaussianBlur","feOffset","feFlood","feComposite","col","filterElem","symbolId","children","nextChild","useElem","symbol","kBlurrinessToSigma","sigma","dimensions","sigmaX","sigmaY","edgeMode","effectsManager","forceFrame","isUniformScale","scaleHeight","scaleWidth","_x","_r","_arr","_n","enumerableOnly","symbols","sym","excluded","sourceKeys","sourceSymbolKeys","minLen","hint","prim","res","arg","useLottie","initialSegment","onLoopComplete","onEnterFrame","onSegmentStart","onConfigReady","onDataReady","onDataFailed","onLoadedImages","onDOMLoaded","onDestroy","_useState","_useState2","animationLoaded","setAnimationLoaded","animationInstanceRef","animationContainer","goToAndPlay","playSegments","setSubframe","useSubFrames","getDuration","inFrames","forcedConfigs","onUnmount","partialListeners","listeners","listener","deregisterList","deregister","View","AnimationData","LoadingAnimation","inverted","avatarSize","disabled","setDisabled","navigate","sendBackWithoutShown","getImage","image","handleAction","button","imageElement","buttonElements","formattedDate","dateLabel","initials","agent_initials","agent_flag","isFailed","parsedTime","formattedTime","agent_firstname","failed","e.createElement","e.cloneElement","handleClick","link","fullWidth","preserveBreaks","disableGroup","historyMessage","sendBack","openDatePicker","handleTypeUrl","handleTypeCustom","request","uploadDocumentsDelegation","handleDefault","clientFormattedDate","systemFormattedDate","clickable","buttons","mapButtons","btn","one_time_use","imageUrl","handleUrlAction","iconUrl","title","createElement","dimension","disableAfterClick","template","reply","choices","agent","incoming","handlersElement","initializeScrollState","setScrollPositionAtSwipe","setScrollHeightAtSwipe","scrollToBottom","keepCurrentScrollPosition","newScrollPosition","scrollHeightAtSwipe","scrollPositionAtSwipe","installTouchListener","setAfterMoreHistoryRequested","shouldShowHistory","messageStartIntersectionResult","messagesStartRef","setShouldShowHistory","afterMoreHistoryRequested","historyError","lastPart","Fragment","part","currentInterlocutor","typing","inputContainerHeight","chatWindowRef","messagesEndRef","displayScrollBackBtn","setDisplayScrollBackBtn","lastMessageRef","messagesContent","percentage","typingContent","chatWindowElement","windowSize","setWindowSize","handleListener","viewport","addedStyles","className","ChatInput","onCanceled","onConfirmed","datePickerData","disable_week_days","disable_dates","disable_days","disable_months","default_start","default_end","default_value","shouldShowScrollUpLabel","icon","showMenu","setShowMenu","setMenuAction","actionMenus","memo","leftIcon","chatLaunched","devMode","nudgePreference","windowHasBeenOpened","displayNudge","setDisplayNudge","disappearing","setDisappearing","nudgeHasBeenShown","setNudgeHasBeenShown","showNudgeTimeoutID","setShowNudgeTimeoutID","FlowerAnimation","openChatInMobileApp","handleClickInternal","resetState","hideNudge","timeoutID","chatIsReady","hasBeenClosed","getBotDefinition","floatingButtonVisible","setFloatingButtonVisible","showFPAButtonPreference","setShowFPAButtonPreference","showNavigationWarning","setShowNavigationWarning","navigationURL","setNavigationURL","restoreChat","setRestoreChat","nbOpenOverlays","setNbOpenOverlays","switchingChat","setSwitchingChat","resetChat","determineFloatingButtonVisibility","determineChatWindowVisibility","startChatRequested","shouldMinimize","startChatBot","bot","eventCallback","modal","mainElement","ScreenType","setOptions","errors","reload","description","errorTranslations","historyHasBeenFetched","HeaderStyle","actions","NamedHeaderIcon","onDone","WelcomeAnimation","myboFallbackUrl","requestedBotType","lastWelcomeShown","shouldDisplayWelcome","welcomeShown","setWelcomeShown","restart","setDevMode","DevLogin","DevFormControls","RequireAuth","RouterComponent","handleBeforeUnload","FlowType"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,102,103,104,105,106,107,108,109,110,111,112,113,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,179,180,181,194]}