{"version":3,"file":"static/js/main.1c0aa114.js","mappings":"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","sources":["../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/invariant/browser.js","../node_modules/lottie-web/build/player/lottie.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/property-expr/index.js","../node_modules/react-aspect-ratio/dist/es/index.js","../node_modules/react-aspect-ratio/dist/es/react-15.6.js","../node_modules/react-aspect-ratio/dist/es/react-latest.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-fast-compare/index.js","../node_modules/react-sticky-el/lib/basic-version.js","../node_modules/react-sticky-el/lib/helpers/events.js","../node_modules/react-sticky-el/lib/helpers/find.js","../node_modules/react-sticky-el/lib/helpers/getClosestTransformedParent.js","../node_modules/react-sticky-el/lib/helpers/rect.js","../node_modules/react-sticky-el/lib/render-props-version.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/tiny-case/index.js","../node_modules/toposort/index.js","../node_modules/warning/warning.js","../node_modules/classnames/index.js","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","icons/logo.svg","components/layout/Logo/Logo.js","components/form/Button/Button.js","../node_modules/@ebay/nice-modal-react/src/index.tsx","../node_modules/dom-helpers/esm/canUseDOM.js","../node_modules/dom-helpers/esm/addEventListener.js","../node_modules/dom-helpers/esm/ownerDocument.js","../node_modules/dom-helpers/esm/removeEventListener.js","../node_modules/dom-helpers/esm/scrollbarSize.js","../node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/@restart/hooks/esm/useEventCallback.js","../node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/@restart/hooks/esm/useWillUnmount.js","../node_modules/@restart/hooks/esm/useUpdatedRef.js","../node_modules/dom-helpers/esm/getComputedStyle.js","../node_modules/dom-helpers/esm/ownerWindow.js","../node_modules/dom-helpers/esm/hyphenate.js","../node_modules/dom-helpers/esm/hyphenateStyle.js","../node_modules/dom-helpers/esm/isTransform.js","../node_modules/dom-helpers/esm/css.js","../node_modules/dom-helpers/esm/listen.js","../node_modules/dom-helpers/esm/transitionEnd.js","../node_modules/dom-helpers/esm/triggerEvent.js","../node_modules/dom-helpers/esm/activeElement.js","../node_modules/dom-helpers/esm/contains.js","../node_modules/@restart/ui/esm/ModalManager.js","../node_modules/@restart/ui/esm/DataKey.js","../node_modules/@restart/ui/esm/getScrollbarWidth.js","../node_modules/@restart/ui/esm/useWindow.js","../node_modules/@restart/ui/esm/useWaitForDOMRef.js","../node_modules/@restart/hooks/esm/useIsomorphicEffect.js","../node_modules/@restart/ui/esm/NoopTransition.js","../node_modules/@restart/ui/esm/ImperativeTransition.js","../node_modules/@restart/ui/esm/Modal.js","../node_modules/@restart/hooks/esm/useMounted.js","../node_modules/@restart/hooks/esm/usePrevious.js","../node_modules/@restart/ui/esm/utils.js","../node_modules/dom-helpers/esm/querySelectorAll.js","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/react-bootstrap/esm/BootstrapModalManager.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-bootstrap/esm/transitionEndListener.js","../node_modules/react-bootstrap/esm/triggerBrowserReflow.js","../node_modules/react-bootstrap/esm/TransitionWrapper.js","../node_modules/react-bootstrap/esm/safeFindDOMNode.js","../node_modules/react-bootstrap/esm/Fade.js","../node_modules/react-bootstrap/esm/ThemeProvider.js","../node_modules/react-bootstrap/esm/ModalBody.js","../node_modules/react-bootstrap/esm/ModalContext.js","../node_modules/react-bootstrap/esm/ModalDialog.js","../node_modules/react-bootstrap/esm/ModalFooter.js","../node_modules/react-bootstrap/esm/CloseButton.js","../node_modules/react-bootstrap/esm/AbstractModalHeader.js","../node_modules/react-bootstrap/esm/ModalHeader.js","../node_modules/react-bootstrap/esm/ModalTitle.js","../node_modules/react-bootstrap/esm/divWithClassName.js","../node_modules/react-bootstrap/esm/Modal.js","../node_modules/@restart/hooks/esm/useCallbackRef.js","../node_modules/@restart/ui/esm/Button.js","../node_modules/react-bootstrap/esm/Button.js","webpack://ticket-meta/./src/components/demo-modal/close.module.scss?d1b0","components/demo-modal/Close.js","webpack://ticket-meta/./src/components/demo-modal/DemoModal.module.scss?7203","../node_modules/formik/node_modules/deepmerge/dist/es.js","../node_modules/lodash-es/_freeGlobal.js","../node_modules/lodash-es/_root.js","../node_modules/lodash-es/_Symbol.js","../node_modules/lodash-es/_getRawTag.js","../node_modules/lodash-es/_objectToString.js","../node_modules/lodash-es/_baseGetTag.js","../node_modules/lodash-es/_overArg.js","../node_modules/lodash-es/_getPrototype.js","../node_modules/lodash-es/isObjectLike.js","../node_modules/lodash-es/isPlainObject.js","../node_modules/tiny-warning/dist/tiny-warning.esm.js","../node_modules/lodash-es/_listCacheClear.js","../node_modules/lodash-es/eq.js","../node_modules/lodash-es/_assocIndexOf.js","../node_modules/lodash-es/_listCacheDelete.js","../node_modules/lodash-es/_listCacheGet.js","../node_modules/lodash-es/_listCacheHas.js","../node_modules/lodash-es/_listCacheSet.js","../node_modules/lodash-es/_ListCache.js","../node_modules/lodash-es/_stackClear.js","../node_modules/lodash-es/_stackDelete.js","../node_modules/lodash-es/_stackGet.js","../node_modules/lodash-es/_stackHas.js","../node_modules/lodash-es/isObject.js","../node_modules/lodash-es/isFunction.js","../node_modules/lodash-es/_coreJsData.js","../node_modules/lodash-es/_isMasked.js","../node_modules/lodash-es/_toSource.js","../node_modules/lodash-es/_baseIsNative.js","../node_modules/lodash-es/_getValue.js","../node_modules/lodash-es/_getNative.js","../node_modules/lodash-es/_Map.js","../node_modules/lodash-es/_nativeCreate.js","../node_modules/lodash-es/_hashClear.js","../node_modules/lodash-es/_hashDelete.js","../node_modules/lodash-es/_hashGet.js","../node_modules/lodash-es/_hashHas.js","../node_modules/lodash-es/_hashSet.js","../node_modules/lodash-es/_Hash.js","../node_modules/lodash-es/_mapCacheClear.js","../node_modules/lodash-es/_isKeyable.js","../node_modules/lodash-es/_getMapData.js","../node_modules/lodash-es/_mapCacheDelete.js","../node_modules/lodash-es/_mapCacheGet.js","../node_modules/lodash-es/_mapCacheHas.js","../node_modules/lodash-es/_mapCacheSet.js","../node_modules/lodash-es/_MapCache.js","../node_modules/lodash-es/_stackSet.js","../node_modules/lodash-es/_Stack.js","../node_modules/lodash-es/_arrayEach.js","../node_modules/lodash-es/_defineProperty.js","../node_modules/lodash-es/_baseAssignValue.js","../node_modules/lodash-es/_assignValue.js","../node_modules/lodash-es/_copyObject.js","../node_modules/lodash-es/_baseTimes.js","../node_modules/lodash-es/_baseIsArguments.js","../node_modules/lodash-es/isArguments.js","../node_modules/lodash-es/isArray.js","../node_modules/lodash-es/stubFalse.js","../node_modules/lodash-es/isBuffer.js","../node_modules/lodash-es/_isIndex.js","../node_modules/lodash-es/isLength.js","../node_modules/lodash-es/_baseIsTypedArray.js","../node_modules/lodash-es/_baseUnary.js","../node_modules/lodash-es/_nodeUtil.js","../node_modules/lodash-es/isTypedArray.js","../node_modules/lodash-es/_arrayLikeKeys.js","../node_modules/lodash-es/_isPrototype.js","../node_modules/lodash-es/_nativeKeys.js","../node_modules/lodash-es/_baseKeys.js","../node_modules/lodash-es/isArrayLike.js","../node_modules/lodash-es/keys.js","../node_modules/lodash-es/_baseAssign.js","../node_modules/lodash-es/_nativeKeysIn.js","../node_modules/lodash-es/_baseKeysIn.js","../node_modules/lodash-es/keysIn.js","../node_modules/lodash-es/_baseAssignIn.js","../node_modules/lodash-es/_cloneBuffer.js","../node_modules/lodash-es/_copyArray.js","../node_modules/lodash-es/_arrayFilter.js","../node_modules/lodash-es/stubArray.js","../node_modules/lodash-es/_getSymbols.js","../node_modules/lodash-es/_copySymbols.js","../node_modules/lodash-es/_arrayPush.js","../node_modules/lodash-es/_getSymbolsIn.js","../node_modules/lodash-es/_copySymbolsIn.js","../node_modules/lodash-es/_baseGetAllKeys.js","../node_modules/lodash-es/_getAllKeys.js","../node_modules/lodash-es/_getAllKeysIn.js","../node_modules/lodash-es/_DataView.js","../node_modules/lodash-es/_Promise.js","../node_modules/lodash-es/_Set.js","../node_modules/lodash-es/_WeakMap.js","../node_modules/lodash-es/_getTag.js","../node_modules/lodash-es/_initCloneArray.js","../node_modules/lodash-es/_Uint8Array.js","../node_modules/lodash-es/_cloneArrayBuffer.js","../node_modules/lodash-es/_cloneDataView.js","../node_modules/lodash-es/_cloneRegExp.js","../node_modules/lodash-es/_cloneSymbol.js","../node_modules/lodash-es/_cloneTypedArray.js","../node_modules/lodash-es/_initCloneByTag.js","../node_modules/lodash-es/_baseCreate.js","../node_modules/lodash-es/_initCloneObject.js","../node_modules/lodash-es/_baseIsMap.js","../node_modules/lodash-es/isMap.js","../node_modules/lodash-es/_baseIsSet.js","../node_modules/lodash-es/isSet.js","../node_modules/lodash-es/_baseClone.js","../node_modules/lodash-es/clone.js","../node_modules/lodash-es/_arrayMap.js","../node_modules/lodash-es/isSymbol.js","../node_modules/lodash-es/memoize.js","../node_modules/lodash-es/_memoizeCapped.js","../node_modules/lodash-es/_stringToPath.js","../node_modules/lodash-es/_toKey.js","../node_modules/lodash-es/_baseToString.js","../node_modules/lodash-es/toString.js","../node_modules/lodash-es/toPath.js","../node_modules/lodash-es/cloneDeep.js","../node_modules/formik/src/FormikContext.tsx","../node_modules/formik/src/utils.ts","../node_modules/formik/src/Formik.tsx","../node_modules/formik/src/Form.tsx","../node_modules/formik/src/FieldArray.tsx","../node_modules/react-bootstrap/esm/Feedback.js","../node_modules/react-bootstrap/esm/FormContext.js","../node_modules/react-bootstrap/esm/FormCheckInput.js","../node_modules/react-bootstrap/esm/FormCheckLabel.js","../node_modules/react-bootstrap/esm/FormCheck.js","../node_modules/react-bootstrap/esm/ElementChildren.js","../node_modules/react-bootstrap/esm/FormControl.js","../node_modules/react-bootstrap/esm/FormFloating.js","../node_modules/react-bootstrap/esm/FormGroup.js","../node_modules/react-bootstrap/esm/Col.js","../node_modules/react-bootstrap/esm/FormLabel.js","../node_modules/react-bootstrap/esm/FormRange.js","../node_modules/react-bootstrap/esm/FormSelect.js","../node_modules/react-bootstrap/esm/FormText.js","../node_modules/react-bootstrap/esm/Switch.js","../node_modules/react-bootstrap/esm/FloatingLabel.js","../node_modules/react-bootstrap/esm/Form.js","../node_modules/yup/index.esm.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","api/api.js","constants.js","api/sendGetDemoForm.js","webpack://ticket-meta/./src/components/demo-modal/demo-form/DemoForm.module.scss?32b6","../node_modules/react-bootstrap/esm/Spinner.js","webpack://ticket-meta/./src/components/form/SubmitButton/SubmitButton.module.scss?3788","components/form/SubmitButton/SubmitButton.js","components/demo-modal/demo-form/DemoForm.js","components/demo-modal/DemoModal.js","components/layout/layout-context.js","webpack://ticket-meta/./src/components/layout/Header/menu-button.module.scss?7c37","components/layout/Header/MenuButton.js","../node_modules/react-router-hash-link/node_modules/tslib/tslib.es6.js","../node_modules/react-router-hash-link/src/HashLink.jsx","components/layout/MainMenu/items.js","components/layout/MainMenu/MainMenu.js","components/layout/Header/Header.js","icons/x.svg","icons/instagram.svg","icons/linkedin.svg","icons/telegram.svg","components/layout/FooterMenu/FooterMenu.js","components/ui/Anchor/Anchor.js","components/layout/Footer/Footer.js","webpack://ticket-meta/./src/components/layout/Header/header-menu.module.scss?ed0e","../node_modules/@uidotdev/usehooks/index.js","components/layout/Header/HeaderMenu.js","webpack://ticket-meta/./src/layouts/base-layout.module.scss?ad17","layouts/BaseLayout.js","icons/arrow-right.svg","pages/Home/components/Hero/Hero.js","components/ui/Tile/Tile.js","images/profits.svg","images/digital-ticket.svg","images/payment.svg","images/payment-mobile.svg","images/solution-mobile.svg","images/solution.svg","utils/requestAnimationFrame.js","libs/lax.js/lax.js","pages/Home/components/Discover/Discover.js","pages/Home/components/CTA/useThanosAnimation.js","pages/Home/components/CTA/CTA.js","icons/feature.svg","components/ui/LottieAnimation/LottieAnimation.js","icons/organizers.svg","icons/ticket.svg","icons/artist.svg","pages/Home/components/Benefits/Benefits.js","pages/Home/components/Features/Features.js","icons/tiketmeta.svg","pages/Home/components/About/About.js","pages/Home/Home.js","webpack://ticket-meta/./src/components/ui/Card/Card.module.scss?f61a","components/ui/Card/Card.js","api/sendAskQuestionForm.js","webpack://ticket-meta/./src/pages/FAQ/faq.module.scss?452f","pages/FAQ/FAQ.js","icons/location.svg","icons/phone.svg","icons/envelop.svg","webpack://ticket-meta/./src/pages/Contacts/components/GetInTouch/get-in-touch.module.scss?ed9b","pages/Contacts/components/GetInTouch/GetInTouch.js","pages/Contacts/Contacts.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/uncontrollable/lib/esm/utils.js","../node_modules/uncontrollable/lib/esm/hook.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/react-bootstrap/esm/createChainedFunction.js","../node_modules/react-bootstrap/esm/Collapse.js","../node_modules/react-bootstrap/esm/AccordionContext.js","../node_modules/react-bootstrap/esm/AccordionCollapse.js","../node_modules/react-bootstrap/esm/AccordionItemContext.js","../node_modules/react-bootstrap/esm/AccordionBody.js","../node_modules/react-bootstrap/esm/AccordionButton.js","../node_modules/react-bootstrap/esm/AccordionHeader.js","../node_modules/react-bootstrap/esm/AccordionItem.js","../node_modules/react-bootstrap/esm/Accordion.js","../node_modules/@makotot/ghostui/src/Scrollspy/type.ts","../node_modules/@makotot/ghostui/src/Scrollspy/RootEl.ts","../node_modules/@makotot/ghostui/src/Scrollspy/RootWindow.ts","../node_modules/@makotot/ghostui/src/Scrollspy/RootFactory.ts","../node_modules/@makotot/ghostui/src/Scrollspy/index.tsx","../node_modules/@makotot/ghostui/src/Scrollspy/useScrollspy.ts","webpack://ticket-meta/./src/components/policies/nav-list.module.scss?c543","components/policies/nav-list.js","webpack://ticket-meta/./src/pages/CookiePolicy/CookiePolicy.module.scss?b8b5","utils/ScrollToTop.js","webpack://ticket-meta/./src/components/Content/Content.module.scss?a86d","components/Content/Content.js","pages/CookiePolicy/CookiePolicy.js","webpack://ticket-meta/./src/pages/PrivacyPolicy/PrivacyPolicy.module.scss?edd9","pages/PrivacyPolicy/PrivacyPolicy.js","index.js","utils/getScrollPosition.js"],"sourcesContent":["'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\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","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Based on Kendo UI Core expression code \n */\n'use strict'\n\nfunction Cache(maxSize) {\n this._maxSize = maxSize\n this.clear()\n}\nCache.prototype.clear = function () {\n this._size = 0\n this._values = Object.create(null)\n}\nCache.prototype.get = function (key) {\n return this._values[key]\n}\nCache.prototype.set = function (key, value) {\n this._size >= this._maxSize && this.clear()\n if (!(key in this._values)) this._size++\n\n return (this._values[key] = value)\n}\n\nvar SPLIT_REGEX = /[^.^\\]^[]+|(?=\\[\\]|\\.\\.)/g,\n DIGIT_REGEX = /^\\d+$/,\n LEAD_DIGIT_REGEX = /^\\d/,\n SPEC_CHAR_REGEX = /[~`!#$%\\^&*+=\\-\\[\\]\\\\';,/{}|\\\\\":<>\\?]/g,\n CLEAN_QUOTES_REGEX = /^\\s*(['\"]?)(.*?)(\\1)\\s*$/,\n MAX_CACHE_SIZE = 512\n\nvar pathCache = new Cache(MAX_CACHE_SIZE),\n setCache = new Cache(MAX_CACHE_SIZE),\n getCache = new Cache(MAX_CACHE_SIZE)\n\nvar config\n\nmodule.exports = {\n Cache: Cache,\n\n split: split,\n\n normalizePath: normalizePath,\n\n setter: function (path) {\n var parts = normalizePath(path)\n\n return (\n setCache.get(path) ||\n setCache.set(path, function setter(obj, value) {\n var index = 0\n var len = parts.length\n var data = obj\n\n while (index < len - 1) {\n var part = parts[index]\n if (\n part === '__proto__' ||\n part === 'constructor' ||\n part === 'prototype'\n ) {\n return obj\n }\n\n data = data[parts[index++]]\n }\n data[parts[index]] = value\n })\n )\n },\n\n getter: function (path, safe) {\n var parts = normalizePath(path)\n return (\n getCache.get(path) ||\n getCache.set(path, function getter(data) {\n var index = 0,\n len = parts.length\n while (index < len) {\n if (data != null || !safe) data = data[parts[index++]]\n else return\n }\n return data\n })\n )\n },\n\n join: function (segments) {\n return segments.reduce(function (path, part) {\n return (\n path +\n (isQuoted(part) || DIGIT_REGEX.test(part)\n ? '[' + part + ']'\n : (path ? '.' : '') + part)\n )\n }, '')\n },\n\n forEach: function (path, cb, thisArg) {\n forEach(Array.isArray(path) ? path : split(path), cb, thisArg)\n },\n}\n\nfunction normalizePath(path) {\n return (\n pathCache.get(path) ||\n pathCache.set(\n path,\n split(path).map(function (part) {\n return part.replace(CLEAN_QUOTES_REGEX, '$2')\n })\n )\n )\n}\n\nfunction split(path) {\n return path.match(SPLIT_REGEX) || ['']\n}\n\nfunction forEach(parts, iter, thisArg) {\n var len = parts.length,\n part,\n idx,\n isArray,\n isBracket\n\n for (idx = 0; idx < len; idx++) {\n part = parts[idx]\n\n if (part) {\n if (shouldBeQuoted(part)) {\n part = '\"' + part + '\"'\n }\n\n isBracket = isQuoted(part)\n isArray = !isBracket && /^\\d+$/.test(part)\n\n iter.call(thisArg, part, isBracket, isArray, idx, parts)\n }\n }\n}\n\nfunction isQuoted(str) {\n return (\n typeof str === 'string' && str && [\"'\", '\"'].indexOf(str.charAt(0)) !== -1\n )\n}\n\nfunction hasLeadingNumber(part) {\n return part.match(LEAD_DIGIT_REGEX) && !part.match(DIGIT_REGEX)\n}\n\nfunction hasSpecialChars(part) {\n return SPEC_CHAR_REGEX.test(part)\n}\n\nfunction shouldBeQuoted(part) {\n return !isQuoted(part) && (hasLeadingNumber(part) || hasSpecialChars(part))\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.AspectRatio = void 0;\nvar _react = _interopRequireDefault(require(\"./react-15.6\"));\nvar _reactLatest = _interopRequireDefault(require(\"./react-latest\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar _default = _react.default; // use before react 15.6\nexports.default = _default;\nvar AspectRatio = _reactLatest.default;\nexports.AspectRatio = AspectRatio;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _react = require(\"react\");\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _excluded = [\"className\", \"children\", \"ratio\", \"style\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nvar CUSTOM_PROPERTY_NAME = '--aspect-ratio';\nvar DEFAULT_CLASS_NAME = 'react-aspect-ratio-placeholder';\nclass AspectRatio extends _react.Component {\n constructor() {\n super(...arguments);\n this.node = null;\n this.setNode = node => {\n this.node = node;\n };\n }\n componentDidUpdate() {\n if (this.node) {\n var {\n node\n } = this;\n\n // BC for older version of React https://github.com/facebook/react/issues/6411\n // check if React support custom property AFTER\n var customPropertyValue = node.style.getPropertyValue(CUSTOM_PROPERTY_NAME);\n if (!customPropertyValue) {\n node.style.setProperty(CUSTOM_PROPERTY_NAME, \"(\" + this.props.ratio + \")\");\n }\n }\n }\n render() {\n var _this$props = this.props,\n {\n className,\n children,\n ratio,\n style\n } = _this$props,\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded); // eslint-disable-line no-unused-vars\n\n var newStyle = _extends({}, style, {\n // https://github.com/roderickhsiao/react-aspect-ratio/commit/53ec15858ae186c41e70b8c14cc5a5b6e97cb6e3\n [CUSTOM_PROPERTY_NAME]: \"(\" + ratio + \")\"\n });\n return /*#__PURE__*/(0, _jsxRuntime.jsx)(\"div\", _extends({\n className: className,\n ref: this.setNode,\n style: newStyle\n }, restProps, {\n children: children\n }));\n }\n}\nAspectRatio.defaultProps = {\n className: DEFAULT_CLASS_NAME,\n ratio: 1\n};\nvar _default = AspectRatio;\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _excluded = [\"className\", \"children\", \"ratio\", \"style\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nvar CUSTOM_PROPERTY_NAME = '--aspect-ratio';\nvar DEFAULT_CLASS_NAME = 'react-aspect-ratio-placeholder';\nfunction AspectRatio(props) {\n var {\n className = DEFAULT_CLASS_NAME,\n children,\n ratio = 1,\n style\n } = props,\n restProps = _objectWithoutPropertiesLoose(props, _excluded); // eslint-disable-line no-unused-vars\n\n var newStyle = _extends({}, style, {\n // https://github.com/roderickhsiao/react-aspect-ratio/commit/53ec15858ae186c41e70b8c14cc5a5b6e97cb6e3\n [CUSTOM_PROPERTY_NAME]: \"(\" + ratio + \")\"\n });\n return /*#__PURE__*/(0, _jsxRuntime.jsx)(\"div\", _extends({\n className: className,\n style: newStyle\n }, restProps, {\n children: children\n }));\n}\nvar _default = AspectRatio;\nexports.default = _default;","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3 (react_1.default.createElement(\"div\", Object.assign({}, rest, { ref: holderRef, style: holderStyles }),\n react_1.default.createElement(\"div\", Object.assign({}, rest, { className: `${wrapperClassName} ${isFixed ? stickyClassName : ''}`, style: isFixed ? Object.assign(Object.assign({}, wrapperStyles), stickyStyle) : wrapperStyles, ref: wrapperRef }), children))));\n}\nSticky.defaultProps = Object.assign(Object.assign({}, render_props_version_1.default.defaultProps), { stickyClassName: 'sticky', wrapperClassName: '', stickyStyle: {} });\nexports.default = Sticky;\n","\"use strict\";\n// @flow strict\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unlisten = exports.listen = void 0;\nconst elementsWithListeners = [];\nconst registeredListeners = [];\nfunction createListener(el) {\n return ({\n el,\n callbacks: {},\n realCallbacks: {},\n realListenersCnt: 0\n });\n}\nfunction addCallback(listener, event, cb) {\n if (listener.callbacks[event]) {\n if (listener.callbacks[event].indexOf(cb) === -1) {\n listener.callbacks[event].push(cb);\n }\n return;\n }\n listener.callbacks[event] = [cb];\n listener.realCallbacks[event] = (e) => {\n for (let i = 0, l = listener.callbacks[event].length; i < l; i += 1) {\n listener.callbacks[event][i](e);\n }\n };\n listener.el.addEventListener(event, listener.realCallbacks[event]);\n listener.realListenersCnt += 1;\n}\nfunction removeCallback(listener, event, cb) {\n if (!listener.callbacks[event]) {\n return;\n }\n const idx = listener.callbacks[event].indexOf(cb);\n if (idx === -1) {\n return;\n }\n listener.callbacks[event].splice(idx, 1);\n if (listener.callbacks[event].length > 0) {\n return;\n }\n // no more listeners, lets clean up\n listener.el.removeEventListener(event, listener.realCallbacks[event]);\n delete listener.callbacks[event];\n delete listener.realCallbacks[event];\n listener.realListenersCnt -= 1;\n}\nfunction addListener(el, event, cb) {\n let idx = elementsWithListeners.indexOf(el);\n if (idx === -1) {\n idx = elementsWithListeners.length;\n elementsWithListeners.push(el);\n registeredListeners.push(createListener(el));\n }\n const listener = registeredListeners[idx];\n addCallback(listener, event, cb);\n}\nfunction removeListener(el, event, cb) {\n const idx = elementsWithListeners.indexOf(el);\n if (idx === -1) {\n return;\n }\n const listener = registeredListeners[idx];\n removeCallback(listener, event, cb);\n if (listener.realListenersCnt > 0) {\n return;\n }\n // no more listeners lets clean up\n elementsWithListeners.splice(idx, 1);\n registeredListeners.splice(idx, 1);\n}\n/**\n * Subscribe cb to events list\n * @param {HTMLListenable} el target element\n * @param {Array} events array of event names\n * @param {Function} cb callback that should be called\n */\nfunction listen(el, events, cb) {\n for (let i = 0, l = events.length; i < l; i += 1) {\n addListener(el, events[i], cb);\n }\n}\nexports.listen = listen;\n/**\n * Unsubscribe cb from events list\n * @param {HTMLListenable} el target element\n * @param {Array} events array of event names\n * @param {Function} cb callback that should be unsubscribed\n */\nfunction unlisten(el, events, cb) {\n for (let i = 0, l = events.length; i < l; i += 1) {\n removeListener(el, events[i], cb);\n }\n}\nexports.unlisten = unlisten;\n","\"use strict\";\n// @flow strict\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst basicSelectors = {};\nif (typeof document !== 'undefined') {\n basicSelectors.body = document.body;\n basicSelectors.window = window;\n basicSelectors.document = document;\n}\nconst matchesMethodName = (() => {\n if (typeof document !== 'undefined' && document.body) {\n const body = document.body;\n return typeof (body.matches) === 'function' ? 'matches' :\n typeof (body.webkitMatchesSelector) === 'function' ? 'webkitMatchesSelector' : //webkit\n // @ts-expect-error - ts doesn't like vendors, so do I, but we have to support such case\n typeof (body.mozMatchesSelector) === 'function' ? 'mozMatchesSelector' : //mozilla\n // @ts-expect-error - ts doesn't like vendors, so do I, but we have to support such case\n typeof (body.msMatchesSelector) === 'function' ? 'msMatchesSelector' : //ie\n // @ts-expect-error - ts doesn't like vendors, so do I, but we have to support such case\n typeof (body.oMatchesSelector) === 'function' ? 'oMatchesSelector' : //old opera\n null;\n }\n return null;\n})();\nfunction find(selector, el) {\n if (!selector) {\n return null;\n }\n // eslint-disable-next-line no-prototype-builtins\n if (basicSelectors.hasOwnProperty(selector)) {\n return basicSelectors[selector];\n }\n // select by id\n if (selector[0] === '#') {\n return document.getElementById(selector.slice(1));\n }\n if (matchesMethodName === null) {\n return null;\n }\n let temp = el;\n // eslint-disable-next-line no-cond-assign\n while (temp = temp.parentElement) {\n // @ts-expect-error - ts does not approve it, but it works fine :)\n if (temp[matchesMethodName](selector)) {\n return temp || null;\n }\n }\n // nothing has been found :(\n return null;\n}\nexports.default = find;\n","\"use strict\";\n// @flow strict\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction getClosestTransformedParent(el) {\n do {\n const style = window.getComputedStyle(el);\n if (style.transform !== 'none' || style.webkitTransform !== 'none')\n return el;\n // @ts-expect-error - this is fine we don't need a new variable\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n}\nexports.default = getClosestTransformedParent;\n","\"use strict\";\n// @flow strict\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isIntersecting = exports.getRect = exports.infiniteRect = void 0;\nexports.infiniteRect = { top: -Infinity, bottom: Infinity, height: Infinity, left: -Infinity, right: Infinity, width: Infinity };\nfunction getRect(el) {\n if (el && ('getBoundingClientRect' in el) && typeof (el.getBoundingClientRect) === 'function') {\n return el.getBoundingClientRect();\n }\n if (el === window || el === document) {\n return {\n top: 0,\n left: 0,\n bottom: window.innerHeight,\n height: window.innerHeight,\n width: window.innerWidth,\n right: window.innerWidth\n };\n }\n return { top: 0, left: 0, right: 0, bottom: 0, width: 0, height: 0 };\n}\nexports.getRect = getRect;\nfunction isIntersecting(r1, r2, topOffset, bottomOffset) {\n const r1Top = r1.top + topOffset, r1Bottom = r1.bottom + bottomOffset;\n return (r1Top >= r2.top && r1Top <= r2.bottom)\n || (r1Bottom >= r2.top && r1Bottom <= r2.bottom)\n || (r1Bottom >= r2.bottom && r1Top <= r2.top);\n}\nexports.isIntersecting = isIntersecting;\n","\"use strict\";\n// @flow strict\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = require(\"react\");\nconst events_1 = require(\"./helpers/events\");\nconst find_1 = __importDefault(require(\"./helpers/find\"));\nconst getClosestTransformedParent_1 = __importDefault(require(\"./helpers/getClosestTransformedParent\"));\nconst rect_1 = require(\"./helpers/rect\");\nconst buildTopStyles = (container, props) => {\n const { bottomOffset, hideOnBoundaryHit } = props;\n const { top, height, width, boundaryBottom } = container;\n // above boundary\n if (hideOnBoundaryHit || (top + height + bottomOffset < boundaryBottom)) {\n return { top: `${top}px`, width: `${width}px`, position: 'fixed' };\n }\n // reaching boundary\n if (!hideOnBoundaryHit && boundaryBottom > 0) {\n return { top: `${boundaryBottom - height - bottomOffset}px`, width: `${width}px`, position: 'fixed' };\n }\n // below boundary\n return { width: `${width}px`, bottom: `${bottomOffset}px`, position: 'absolute' };\n};\nconst buildBottomStyles = (container, props) => {\n const { bottomOffset, hideOnBoundaryHit } = props;\n const { bottom, height, width, boundaryTop } = container;\n if (hideOnBoundaryHit || (bottom - height - bottomOffset > boundaryTop)) {\n return { width: `${width}px`, top: `${bottom - height}px`, position: 'fixed' };\n }\n return { width: `${width}px`, top: `${bottomOffset}px`, position: 'absolute' };\n};\nconst buildStickyStyle = (mode, props, container) => (mode === 'top' ? buildTopStyles : buildBottomStyles)(container, props);\nconst isEqual = (obj1, obj2) => {\n const styles1 = obj1.wrapperStyles;\n const styles2 = obj2.wrapperStyles;\n if (obj1.isFixed !== obj2.isFixed ||\n obj1.height !== obj2.height ||\n (!styles1 && styles2) ||\n (styles1 && !styles2)) {\n return false;\n }\n if (!styles2) {\n return true;\n }\n for (const field in styles1) {\n // @ts-expect-error - ts doesn't like that `field` is a string\n // eslint-disable-next-line no-prototype-builtins\n if (styles1.hasOwnProperty(field) && styles1[field] !== styles2[field]) {\n return false;\n }\n }\n return true;\n};\nclass Sticky extends react_1.Component {\n constructor() {\n super(...arguments);\n this.holderEl = null;\n this.wrapperEl = null;\n this.el = null;\n this.scrollEl = null;\n this.boundaryEl = null;\n this.disabled = false;\n this.checkPositionIntervalId = null;\n this.lastMinHeight = null;\n this.state = {\n isFixed: false,\n wrapperStyles: undefined,\n holderStyles: undefined,\n height: 0\n };\n this.holderRef = (holderEl) => {\n if (holderEl === this.holderEl) {\n return;\n }\n this.holderEl = holderEl;\n };\n this.wrapperRef = (wrapperEl) => {\n if (wrapperEl === this.wrapperEl) {\n return;\n }\n this.wrapperEl = wrapperEl;\n this.updateScrollEl();\n this.updateBoundaryEl();\n };\n this.checkPosition = () => {\n const { holderEl, wrapperEl, boundaryEl, scrollEl, disabled } = this;\n if (!scrollEl || !holderEl || !wrapperEl) {\n console.error(\"Missing required elements:\", {\n scrollEl,\n holderEl,\n wrapperEl\n });\n return;\n }\n const { mode, onFixedToggle, offsetTransforms, isIOSFixEnabled, dontUpdateHolderHeightWhenSticky } = this.props;\n if (disabled) {\n if (this.state.isFixed) {\n this.setState({ isFixed: false, wrapperStyles: {} });\n }\n return;\n }\n if (!holderEl.getBoundingClientRect || !wrapperEl.getBoundingClientRect) {\n return;\n }\n const holderRect = holderEl.getBoundingClientRect();\n const wrapperRect = wrapperEl.getBoundingClientRect();\n const boundaryRect = boundaryEl ? (0, rect_1.getRect)(boundaryEl) : rect_1.infiniteRect;\n const scrollRect = (0, rect_1.getRect)(scrollEl);\n const isFixed = this.isFixed(holderRect, wrapperRect, boundaryRect, scrollRect);\n let offsets = null;\n if (offsetTransforms && isFixed && scrollEl instanceof HTMLElement) {\n const closestTransformedParent = (0, getClosestTransformedParent_1.default)(scrollEl);\n if (closestTransformedParent) {\n offsets = (0, rect_1.getRect)(closestTransformedParent);\n }\n }\n const minHeight = this.state.isFixed && dontUpdateHolderHeightWhenSticky && this.lastMinHeight ? this.lastMinHeight : wrapperRect.height;\n this.lastMinHeight = minHeight;\n // To ensure that this component becomes sticky immediately on mobile devices instead\n // of disappearing until the scroll event completes, we add `transform: translateZ(0)`\n // to 'kick' rendering of this element to the GPU\n // @see http://stackoverflow.com/questions/32875046\n const iosRenderingFixStyles = isIOSFixEnabled ? {\n transform: 'translateZ(0)',\n WebkitTransform: 'translateZ(0)'\n } : undefined;\n const newState = {\n isFixed,\n height: wrapperRect.height,\n holderStyles: { minHeight: `${minHeight}px` },\n wrapperStyles: isFixed ? Object.assign(Object.assign({}, iosRenderingFixStyles), buildStickyStyle(mode, this.props, {\n boundaryTop: mode === 'bottom' ? boundaryRect.top : 0,\n boundaryBottom: mode === 'top' ? boundaryRect.bottom : 0,\n top: mode === 'top' ? scrollRect.top - (offsets ? offsets.top : 0) : 0,\n bottom: mode === 'bottom' ? scrollRect.bottom - (offsets ? offsets.bottom : 0) : 0,\n width: holderRect.width,\n height: wrapperRect.height\n })) : iosRenderingFixStyles\n };\n if (isFixed !== this.state.isFixed && onFixedToggle && typeof onFixedToggle === 'function') {\n onFixedToggle(isFixed);\n }\n if (!isEqual(this.state, newState)) {\n this.setState(newState);\n }\n };\n }\n isFixed(holderRect, wrapperRect, boundaryRect, scrollRect) {\n const { hideOnBoundaryHit, bottomOffset, topOffset, mode } = this.props;\n if (this.disabled) {\n return false;\n }\n if (hideOnBoundaryHit && boundaryRect && !(0, rect_1.isIntersecting)(boundaryRect, scrollRect, topOffset, bottomOffset)) {\n return false;\n }\n const hideOffset = hideOnBoundaryHit ? wrapperRect.height + bottomOffset : 0;\n if (mode === 'top') {\n return (holderRect.top + topOffset < scrollRect.top)\n && (scrollRect.top + hideOffset <= boundaryRect.bottom);\n }\n return (holderRect.bottom - topOffset > scrollRect.bottom)\n && (scrollRect.bottom - hideOffset >= boundaryRect.top);\n }\n updateScrollEl() {\n if (!this.wrapperEl) {\n return;\n }\n if (this.scrollEl) {\n (0, events_1.unlisten)(this.scrollEl, ['scroll'], this.checkPosition);\n this.scrollEl = null;\n }\n const { scrollElement } = this.props;\n if (typeof scrollElement === 'string') {\n this.scrollEl = (0, find_1.default)(scrollElement, this.wrapperEl);\n }\n else {\n this.scrollEl = scrollElement;\n }\n if (this.scrollEl) {\n (0, events_1.listen)(this.scrollEl, ['scroll'], this.checkPosition);\n }\n else {\n console.error('Cannot find scrollElement ' + (typeof scrollElement === 'string' ? scrollElement : 'unknown'));\n }\n }\n updateBoundaryEl() {\n if (!this.wrapperEl) {\n return;\n }\n const { boundaryElement } = this.props;\n this.boundaryEl = (0, find_1.default)(boundaryElement, this.wrapperEl);\n if (this.boundaryEl === window || this.boundaryEl === document) {\n // such objects can't be used as boundary\n // and in fact there is no point in such a case\n this.boundaryEl = null;\n }\n }\n initialize() {\n const { positionRecheckInterval, disabled } = this.props;\n this.disabled = disabled;\n // we should always listen to window events because they will affect the layout of the whole page\n (0, events_1.listen)(window, ['scroll', 'resize', 'pageshow', 'load'], this.checkPosition);\n this.checkPosition();\n if (positionRecheckInterval) {\n this.checkPositionIntervalId = setInterval(this.checkPosition, positionRecheckInterval);\n }\n }\n componentDidUpdate({ scrollElement, boundaryElement, disabled }) {\n if (scrollElement !== this.props.scrollElement || this.scrollEl === null) {\n this.updateScrollEl();\n }\n if (boundaryElement !== this.props.boundaryElement || this.boundaryEl === null) {\n this.updateBoundaryEl();\n }\n if (disabled !== this.props.disabled) {\n this.disabled = this.props.disabled;\n this.checkPosition();\n }\n }\n componentDidMount() {\n this.initialize();\n if (this.wrapperEl === null) {\n console.error(\"Wrapper element is missing, please make sure that you have assigned refs correctly\");\n }\n }\n componentWillUnmount() {\n if (this.scrollEl) {\n (0, events_1.unlisten)(this.scrollEl, ['scroll'], this.checkPosition);\n }\n (0, events_1.unlisten)(window, ['scroll', 'resize', 'pageshow', 'load'], this.checkPosition);\n this.boundaryEl = null;\n this.scrollEl = null;\n if (this.checkPositionIntervalId) {\n clearInterval(this.checkPositionIntervalId);\n }\n }\n render() {\n const { holderRef, wrapperRef } = this;\n const { isFixed, wrapperStyles, holderStyles } = this.state;\n return this.props.children({\n holderRef,\n wrapperRef,\n isFixed,\n wrapperStyles,\n holderStyles\n });\n }\n}\nSticky.defaultProps = {\n mode: 'top',\n topOffset: 0,\n bottomOffset: 0,\n isIOSFixEnabled: true,\n offsetTransforms: true,\n disabled: false,\n onFixedToggle: null,\n boundaryElement: null,\n hideOnBoundaryHit: true,\n scrollElement: 'window',\n dontUpdateHolderHeightWhenSticky: false,\n};\nexports.default = Sticky;\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","const reWords = /[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['’](?:d|ll|m|re|s|t|ve))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['’](?:D|LL|M|RE|S|T|VE))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['’](?:d|ll|m|re|s|t|ve))?|[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['’](?:D|LL|M|RE|S|T|VE))?|\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])|\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])|\\d+|(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?)*/g\n\nconst words = (str) => str.match(reWords) || []\n\nconst upperFirst = (str) => str[0].toUpperCase() + str.slice(1)\n\nconst join = (str, d) => words(str).join(d).toLowerCase()\n\nconst camelCase = (str) =>\n words(str).reduce(\n (acc, next) =>\n `${acc}${\n !acc\n ? next.toLowerCase()\n : next[0].toUpperCase() + next.slice(1).toLowerCase()\n }`,\n '',\n )\n\nconst pascalCase = (str) => upperFirst(camelCase(str))\n\nconst snakeCase = (str) => join(str, '_')\n\nconst kebabCase = (str) => join(str, '-')\n\nconst sentenceCase = (str) => upperFirst(join(str, ' '))\n\nconst titleCase = (str) => words(str).map(upperFirst).join(' ')\n\nmodule.exports = {\n words,\n upperFirst,\n camelCase,\n pascalCase,\n snakeCase,\n kebabCase,\n sentenceCase,\n titleCase,\n}\n","\n/**\n * Topological sorting function\n *\n * @param {Array} edges\n * @returns {Array}\n */\n\nmodule.exports = function(edges) {\n return toposort(uniqueNodes(edges), edges)\n}\n\nmodule.exports.array = toposort\n\nfunction toposort(nodes, edges) {\n var cursor = nodes.length\n , sorted = new Array(cursor)\n , visited = {}\n , i = cursor\n // Better data structures make algorithm much faster.\n , outgoingEdges = makeOutgoingEdges(edges)\n , nodesHash = makeNodesHash(nodes)\n\n // check for unknown nodes\n edges.forEach(function(edge) {\n if (!nodesHash.has(edge[0]) || !nodesHash.has(edge[1])) {\n throw new Error('Unknown node. There is an unknown node in the supplied edges.')\n }\n })\n\n while (i--) {\n if (!visited[i]) visit(nodes[i], i, new Set())\n }\n\n return sorted\n\n function visit(node, i, predecessors) {\n if(predecessors.has(node)) {\n var nodeRep\n try {\n nodeRep = \", node was:\" + JSON.stringify(node)\n } catch(e) {\n nodeRep = \"\"\n }\n throw new Error('Cyclic dependency' + nodeRep)\n }\n\n if (!nodesHash.has(node)) {\n throw new Error('Found unknown node. Make sure to provided all involved nodes. Unknown node: '+JSON.stringify(node))\n }\n\n if (visited[i]) return;\n visited[i] = true\n\n var outgoing = outgoingEdges.get(node) || new Set()\n outgoing = Array.from(outgoing)\n\n if (i = outgoing.length) {\n predecessors.add(node)\n do {\n var child = outgoing[--i]\n visit(child, nodesHash.get(child), predecessors)\n } while (i)\n predecessors.delete(node)\n }\n\n sorted[--cursor] = node\n }\n}\n\nfunction uniqueNodes(arr){\n var res = new Set()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n res.add(edge[0])\n res.add(edge[1])\n }\n return Array.from(res)\n}\n\nfunction makeOutgoingEdges(arr){\n var edges = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n if (!edges.has(edge[0])) edges.set(edge[0], new Set())\n if (!edges.has(edge[1])) edges.set(edge[1], new Set())\n edges.get(edge[0]).add(edge[1])\n }\n return edges\n}\n\nfunction makeNodesHash(arr){\n var res = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n res.set(arr[i], i)\n }\n return res\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n reloadDocument?: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `
`,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction = {\n (args: LoaderFunctionArgs):\n | Promise\n | DataFunctionValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs):\n | Promise\n | DataFunctionValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction;\n action?: ActionFunction;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: number[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(\n branches[i],\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n safelyDecodeURI(pathname)\n );\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = safelyDecodeURIComponent(value || \"\", paramName);\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nfunction safelyDecodeURI(value: string) {\n try {\n return decodeURI(value);\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === matches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n ActionFunction,\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n AgnosticRouteObject,\n DataResult,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n ImmutableRouteKey,\n LoaderFunction,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: { requestContext?: unknown }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: { routeId?: string; requestContext?: unknown }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n unstable_viewTransitionOpts?: ViewTransitionOpts;\n unstable_flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n unstable_viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Error thrown from the current action, keyed by the route containing the\n * error boundary to render the error. To be committed to the state after\n * loaders have completed\n */\n pendingActionError?: RouteData;\n /**\n * Data returned from the current action, keyed by the route owning the action.\n * To be committed to the state after loaders have completed\n */\n pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n type: ResultType.data | ResultType.error;\n response: Response;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized: boolean;\n let hasLazyRoutes = initialMatches.some((m) => m.route.lazy);\n let hasLoaders = initialMatches.some((m) => m.route.loader);\n if (hasLazyRoutes) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!hasLoaders) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n initialized = initialMatches.every(\n (m) =>\n m.route.loader &&\n m.route.loader.hydrate !== true &&\n ((loaderData && loaderData[m.route.id] !== undefined) ||\n (errors && errors[m.route.id] !== undefined))\n );\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionData: RouteData | undefined;\n let pendingError: RouteData | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError,\n };\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace, flushSync }\n );\n\n if (actionOutput.shortCircuited) {\n return;\n }\n\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n\n // Create a GET request for the loaders\n request = new Request(request.url, { signal: request.signal });\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionData,\n pendingError\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace =\n result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, { submission, replace });\n return { shortCircuited: true };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: { [boundaryMatch.route.id]: result.error },\n };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n return {\n pendingActionData: { [actionMatch.route.id]: result.data },\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionData,\n pendingError\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since iot's not a \"navigation\"\n if (\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration)\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData\n ? Object.keys(actionData).length === 0\n ? { actionData: null }\n : { actionData }\n : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n revalidatingFetchers.forEach((rf) => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(state, redirect.result, { replace });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingError,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n flushSync,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n flushSync,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n flushSync: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResult = await callLoaderOrAction(\n \"action\",\n fetchRequest,\n match,\n requestMatches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(state, actionResult, {\n fetcherSubmission: submission,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n { [match.route.id]: actionResult.data },\n undefined // No need to send through errors since we short circuit above\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(state, redirect.result);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n flushSync: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let result: DataResult = await callLoaderOrAction(\n \"loader\",\n fetchRequest,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(state, result);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n state: RouterState,\n redirect: RedirectResult,\n {\n submission,\n fetcherSubmission,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n\n let redirectLocation = createLocation(state.location, redirect.location, {\n _isRedirect: true,\n });\n invariant(\n redirectLocation,\n \"Expected a location on the redirect navigation\"\n );\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.reloadDocument) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(redirect.location)) {\n const url = init.history.createURL(redirect.location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(redirect.location);\n } else {\n routerWindow.location.assign(redirect.location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: redirect.location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n )\n ),\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n return callLoaderOrAction(\n \"loader\",\n createClientSideRequest(init.history, f.path, f.controller.signal),\n f.match,\n f.matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n } else {\n let error: ErrorResult = {\n type: ResultType.error,\n error: getInternalRouterError(404, { pathname: f.path }),\n };\n return error;\n }\n }),\n ]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n loaderResults.map(() => request.signal),\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n true\n ),\n ]);\n\n return { results, loaderResults, fetcherResults };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher(key: string): Fetcher {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(\n request: Request,\n { requestContext }: { requestContext?: unknown } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n }: { requestContext?: unknown; routeId?: string } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n match\n );\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath,\n { isStaticRequest: true, isRouteRequest, requestContext }\n );\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(\n request,\n matches,\n requestContext,\n undefined,\n {\n [boundaryMatch.route.id]: result.error,\n }\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n\n return {\n ...context,\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch,\n pendingActionError?: RouteData\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(pendingActionError || {})[0]\n );\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath,\n { isStaticRequest: true, isRouteRequest, requestContext }\n )\n ),\n ]);\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionError,\n activeDeferreds\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n request: Request,\n isRouteRequest: boolean,\n future: StaticHandlerFutureConfig\n) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId?: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isInitialLoad: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n deletedFetchers: Set,\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingError\n ? Object.values(pendingError)[0]\n : pendingActionData\n ? Object.values(pendingActionData)[0]\n : undefined;\n\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (isInitialLoad) {\n if (route.loader.hydrate) {\n return true;\n }\n return (\n state.loaderData[route.id] === undefined &&\n // Don't re-run if the loader ran and threw an error\n (!state.errors || state.errors[route.id] === undefined)\n );\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n defaultShouldRevalidate:\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial load (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n isInitialLoad ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n defaultShouldRevalidate: isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n basename: string,\n v7_relativeSplatPath: boolean,\n opts: {\n isStaticRequest?: boolean;\n isRouteRequest?: boolean;\n requestContext?: unknown;\n } = {}\n): Promise {\n let resultType;\n let result;\n let onReject: (() => void) | undefined;\n\n let runHandler = (handler: ActionFunction | LoaderFunction) => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n return Promise.race([\n handler({\n request,\n params: match.params,\n context: opts.requestContext,\n }),\n abortPromise,\n ]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let values = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadLazyRouteModule(match.route, mapRouteProperties, manifest),\n ]);\n if (handlerError) {\n throw handlerError;\n }\n result = values[0];\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still run even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, data: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n if (isResponse(result)) {\n let status = result.status;\n\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n location = normalizeTo(\n new URL(request.url),\n matches.slice(0, matches.indexOf(match) + 1),\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n } else if (!opts.isStaticRequest) {\n // Strip off the protocol+origin for same-origin + same-basename absolute\n // redirects. If this is a static request, we can let it go back to the\n // browser as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\")\n ? new URL(currentUrl.protocol + location)\n : new URL(location);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n location = url.pathname + url.search + url.hash;\n }\n }\n\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (opts.isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n reloadDocument: result.headers.get(\"X-Remix-Reload-Document\") !== null,\n };\n }\n\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (opts.isRouteRequest) {\n let queryRouteResponse: QueryRouteResponse = {\n type:\n resultType === ResultType.error ? ResultType.error : ResultType.data,\n response: result,\n };\n throw queryRouteResponse;\n }\n\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponseImpl(status, result.statusText, data),\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (resultType === ResultType.error) {\n return { type: resultType, error: result };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n } else {\n loaderData[id] = result.data;\n }\n\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingError,\n activeDeferreds\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match, controller } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return { result, idx: i };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n return (\n obj &&\n isResponse(obj.response) &&\n (obj.type === ResultType.data || obj.type === ResultType.error)\n );\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signals: (AbortSignal | null)[],\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(\n signal,\n \"Expected an AbortSignal for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n\n//#endregion\n","import * as React from \"react\";\nimport type {\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n AgnosticRouteMatch,\n History,\n LazyRouteFunction,\n Location,\n Action as NavigationType,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject\n // Omit `future` since those can be pulled from the `router`\n // `NavigationContext` needs future since it doesn't have a `router` in all cases\n extends Omit {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n unstable_viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n future: {\n v7_relativeSplatPath: boolean;\n };\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n UIMatch,\n} from \"@remix-run/router\";\nimport {\n IDLE_BLOCKER,\n Action as NavigationType,\n UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteMatch,\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a ``.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * ``.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by ``s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, future, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { future } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial | string,\n dataRouterState?: RemixRouter[\"state\"],\n future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined ||\n matches[matches.length - 1].route.lazy !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState,\n future\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own ErrorBoundary or{\" \"}\n errorElement prop on your route.\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\nconst defaultErrorElement = ;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error !== undefined ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error !== undefined ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null,\n future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id]\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n // If we're in a partial hydration mode, detect if we need to render down to\n // a given HydrateFallback while we load the rest of the hydration data\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState && future && future.v7_partialHydration) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n // Track the deepest fallback up until the first route without data\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n\n if (match.route.id) {\n let { loaderData, errors } = dataRouterState;\n let needsToRunLoader =\n match.route.loader &&\n loaderData[match.route.id] === undefined &&\n (!errors || errors[match.route.id] === undefined);\n if (match.route.lazy || needsToRunLoader) {\n // We found the first route that's not ready to render (waiting on\n // lazy, or has a loader that hasn't run yet). Flag that we need to\n // render a fallback and render up until the appropriate fallback\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n // Only data routers handle errors/fallbacks\n let error: any;\n let shouldRenderHydrateFallback = false;\n let errorElement: React.ReactNode | null = null;\n let hydrateFallbackElement: React.ReactNode | null = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : undefined;\n errorElement = match.route.errorElement || defaultErrorElement;\n\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\n \"route-fallback\",\n false,\n \"No `HydrateFallback` element provided to render during initial hydration\"\n );\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error !== undefined) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `` value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `` value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import type {\n InitialEntry,\n LazyRouteFunction,\n Location,\n MemoryHistory,\n RelativeRoutingType,\n Router as RemixRouter,\n RouterState,\n RouterSubscriber,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n Navigator,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./context\";\nimport {\n _renderMatches,\n useAsyncValue,\n useInRouterContext,\n useLocation,\n useNavigate,\n useOutlet,\n useRoutes,\n useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n v7_relativeSplatPath: boolean;\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n // Only accept future flags relevant to rendering behavior\n // routing flags should be accessed via router.future\n future?: Partial>;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n\n let setState = React.useCallback(\n (newState: RouterState) => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n },\n [setStateImpl, v7_startTransition]\n );\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n React.useEffect(() => {\n warning(\n fallbackElement == null || !router.future.v7_partialHydration,\n \"`` is deprecated when using \" +\n \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n );\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a