tee3apps-cms-sdk-react 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/.env +11 -0
  2. package/README.md +255 -0
  3. package/dist/index.d.ts +5 -0
  4. package/dist/index.js +13 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/index.mjs +13 -0
  7. package/dist/index.mjs.map +1 -0
  8. package/package.json +33 -0
  9. package/rollup.config.js +43 -0
  10. package/src/Components/BoxRenderer.tsx +108 -0
  11. package/src/Components/ComponentRenderer.tsx +29 -0
  12. package/src/Components/ImageComponent.tsx +68 -0
  13. package/src/Components/RowComponent.tsx +66 -0
  14. package/src/Components/TextComponent.tsx +47 -0
  15. package/src/ErrorBoundary.tsx +35 -0
  16. package/src/Page.tsx +124 -0
  17. package/src/PageComponents/BoxComponent.tsx +397 -0
  18. package/src/PageComponents/RowComponent.tsx +113 -0
  19. package/src/PageComponents/Visual-Components/CarouselComponent.tsx +366 -0
  20. package/src/PageComponents/Visual-Components/GroupBrandComponent.tsx +391 -0
  21. package/src/PageComponents/Visual-Components/GroupCategoryComponent.tsx +425 -0
  22. package/src/PageComponents/Visual-Components/GroupImageList.tsx +669 -0
  23. package/src/PageComponents/Visual-Components/GroupProductComponent.tsx +671 -0
  24. package/src/PageComponents/Visual-Components/GroupVideoList.tsx +590 -0
  25. package/src/PageComponents/Visual-Components/ImageComponent.tsx +163 -0
  26. package/src/PageComponents/Visual-Components/LinkComponent.tsx +68 -0
  27. package/src/PageComponents/Visual-Components/LottieComponent.tsx +213 -0
  28. package/src/PageComponents/Visual-Components/NavigationComponent.tsx +178 -0
  29. package/src/PageComponents/Visual-Components/Styles/ProductListViewOne.tsx +102 -0
  30. package/src/PageComponents/Visual-Components/Styles/ProductListViewTwo.tsx +104 -0
  31. package/src/PageComponents/Visual-Components/Styles/product-list-view-one.css +166 -0
  32. package/src/PageComponents/Visual-Components/Styles/product-list-view-two.css +182 -0
  33. package/src/PageComponents/Visual-Components/TabComponent.tsx +1169 -0
  34. package/src/PageComponents/Visual-Components/TextComponent.tsx +114 -0
  35. package/src/PageComponents/Visual-Components/VideoComponent.tsx +191 -0
  36. package/src/PageComponents/Visual-Components/tab.css +697 -0
  37. package/src/common.interface.ts +216 -0
  38. package/src/const.ts +6 -0
  39. package/src/env.d.ts +15 -0
  40. package/src/index.css +82 -0
  41. package/src/index.ts +2 -0
  42. package/src/types.ts +234 -0
  43. package/tsconfig.json +20 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../src/PageComponents/RowComponent.tsx","../node_modules/tslib/tslib.es6.js","../src/PageComponents/BoxComponent.tsx","../src/PageComponents/Visual-Components/TextComponent.tsx","../src/PageComponents/Visual-Components/LinkComponent.tsx","../node_modules/style-inject/dist/style-inject.es.js","../src/const.ts","../src/PageComponents/Visual-Components/ImageComponent.tsx","../src/PageComponents/Visual-Components/Styles/ProductListViewOne.tsx","../src/PageComponents/Visual-Components/Styles/ProductListViewTwo.tsx","../src/PageComponents/Visual-Components/GroupProductComponent.tsx","../src/PageComponents/Visual-Components/VideoComponent.tsx","../src/PageComponents/Visual-Components/GroupBrandComponent.tsx","../node_modules/lottie-web/build/player/lottie.js","../node_modules/lottie-react/build/index.es.js","../src/PageComponents/Visual-Components/LottieComponent.tsx","../src/PageComponents/Visual-Components/CarouselComponent.tsx","../src/PageComponents/Visual-Components/NavigationComponent.tsx","../src/PageComponents/Visual-Components/GroupVideoList.tsx","../src/PageComponents/Visual-Components/GroupCategoryComponent.tsx","../src/PageComponents/Visual-Components/GroupImageList.tsx","../src/PageComponents/Visual-Components/TabComponent.tsx","../src/ErrorBoundary.tsx","../src/Page.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return (type.displayName || \"Context\") + \".Provider\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(\n type,\n key,\n self,\n source,\n owner,\n props,\n debugStack,\n debugTask\n ) {\n self = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== self ? self : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n source,\n self,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n self,\n source,\n getOwner(),\n maybeKey,\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_ELEMENT_TYPE &&\n node._store &&\n (node._store.validated = 1);\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n Symbol.for(\"react.provider\");\n var REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey, source, self) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n source,\n self,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey, source, self) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n source,\n self,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import React from 'react';\r\n\r\ninterface ModeProps {\r\n isScroll: boolean;\r\n isVisible: boolean;\r\n top: string;\r\n bottom: string;\r\n flexView?: boolean;\r\n colspan?: number;\r\n height?: string;\r\n width?: string;\r\n left?: string;\r\n right?: string;\r\n radius?: string;\r\n}\r\n\r\ninterface DeviceModes {\r\n web: ModeProps;\r\n mobileweb: ModeProps;\r\n mobileapp: ModeProps;\r\n tablet: ModeProps;\r\n}\r\n\r\ninterface RowProps {\r\n minHeight: string;\r\n bgColor: string;\r\n bgImage: string;\r\n align: React.CSSProperties['alignItems'];\r\n justify: string;\r\n nowrap: boolean;\r\n bgsize: React.CSSProperties['backgroundSize'];\r\n mode: DeviceModes;\r\n}\r\n\r\ninterface RowComponentProps {\r\n props: RowProps;\r\n children?: React.ReactNode;\r\n deviceMode?: string;\r\n}\r\n\r\nconst RowComponent: React.FC<RowComponentProps> = ({\r\n props,\r\n children,\r\n deviceMode = 'web'\r\n}) => {\r\n // Safely get the device mode with fallback\r\n const getCurrentMode = (): ModeProps => {\r\n const validModes = ['web', 'mobileweb', 'mobileapp', 'tablet'] as const;\r\n const safeDeviceMode = validModes.includes(deviceMode as any) \r\n ? deviceMode as keyof DeviceModes \r\n : 'web';\r\n \r\n return props.mode[safeDeviceMode] || props.mode.web;\r\n };\r\n\r\n // Get the current device mode configuration\r\n const currentMode = getCurrentMode();\r\n\r\n // Apply visibility\r\n if (!currentMode.isVisible) {\r\n return null;\r\n }\r\n\r\n // Handle content justification with proper CSS values\r\nconst getJustifyContent = (): React.CSSProperties['justifyContent'] => {\r\n const justifyMap: Record<string, React.CSSProperties['justifyContent']> = {\r\n around: 'space-around',\r\n between: 'space-between',\r\n evenly: 'space-evenly',\r\n start: 'flex-start',\r\n end: 'flex-end',\r\n center: 'center',\r\n 'flex-start': 'flex-start',\r\n 'flex-end': 'flex-end',\r\n initial: 'initial'\r\n };\r\n \r\n return justifyMap[props.justify] || props.justify || 'flex-start';\r\n};\r\n\r\n return (\r\n <div \r\n style={{\r\n minHeight: props.minHeight,\r\n backgroundColor: props.bgColor,\r\n backgroundImage: props.bgImage ? `url(${props.bgImage})` : 'none',\r\n backgroundSize: props.bgsize,\r\n backgroundPosition: 'center',\r\n backgroundRepeat: 'no-repeat',\r\n width: currentMode.width || '100%',\r\n height: currentMode.height,\r\n marginTop: currentMode.top,\r\n marginBottom: currentMode.bottom,\r\n marginLeft: currentMode.left,\r\n marginRight: currentMode.right,\r\n borderRadius: currentMode.radius,\r\n boxSizing: 'border-box',\r\n overflow: currentMode.isScroll ? 'auto' : 'visible',\r\n position: 'relative',\r\n // Flexbox properties like the old code\r\n display: currentMode.flexView ? 'flex' : 'block',\r\n flexDirection: currentMode.flexView ? 'row' as const : undefined,\r\n flexWrap: currentMode.flexView ? (props.nowrap ? 'nowrap' as const : 'wrap' as const) : undefined,\r\n justifyContent: currentMode.flexView ? getJustifyContent() : undefined,\r\n alignItems: props.align\r\n }}\r\n >\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\nexport default RowComponent;","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import React from 'react';\r\n\r\ninterface ModeProps {\r\n isScroll?: boolean;\r\n isVisible: boolean;\r\n top: string;\r\n bottom: string;\r\n flexView?: boolean;\r\n colspan?: number;\r\n height?: string;\r\n width?: string;\r\n left?: string;\r\n right?: string;\r\n radius?: string;\r\n}\r\n\r\ninterface DeviceModes {\r\n web: ModeProps;\r\n mobileweb: ModeProps;\r\n mobileapp: ModeProps;\r\n tablet: ModeProps;\r\n}\r\n\r\ninterface BoxProps {\r\n bgColor: string;\r\n align: React.CSSProperties['alignItems'];\r\n justify: string;\r\n compOrder: string[];\r\n bgsize: React.CSSProperties['backgroundSize'];\r\n layout: string;\r\n mode: DeviceModes;\r\n}\r\n\r\ninterface BoxComponentProps {\r\n props: BoxProps;\r\n children?: React.ReactNode;\r\n deviceMode?: string;\r\n autoAdjustForImages?: boolean;\r\n isSelected?: boolean;\r\n setShowLayoutDialog?: (show: boolean) => void;\r\n}\r\n\r\nconst BoxComponent: React.FC<BoxComponentProps> = ({\r\n props,\r\n children,\r\n deviceMode = 'web',\r\n autoAdjustForImages = true,\r\n isSelected = false,\r\n setShowLayoutDialog\r\n}) => {\r\n // Safely get the device mode with fallback\r\n const getCurrentMode = (): ModeProps => {\r\n const validModes = ['web', 'mobileweb', 'mobileapp', 'tablet'] as const;\r\n const safeDeviceMode = validModes.includes(deviceMode as any) \r\n ? deviceMode as keyof DeviceModes \r\n : 'web';\r\n \r\n return props.mode[safeDeviceMode] || props.mode.web;\r\n };\r\n\r\n const getColspan = (): number => {\r\n const currentMode = getCurrentMode();\r\n return currentMode?.colspan ?? 12;\r\n };\r\n\r\n const currentMode = getCurrentMode();\r\n const colspan = getColspan();\r\n\r\n // Apply visibility\r\n if (!currentMode.isVisible) {\r\n return null;\r\n }\r\n\r\n const getBoxHeight = (): string => {\r\n if (!autoAdjustForImages) {\r\n return currentMode.height || 'auto';\r\n }\r\n \r\n const hasImageComponent = React.Children.toArray(children).some(child => \r\n React.isValidElement(child) && \r\n (child.type as any)?.name === 'ImageComponent' || 'CarouselComponent'\r\n );\r\n \r\n if (hasImageComponent) {\r\n return 'auto';\r\n }\r\n \r\n return currentMode.height || 'auto';\r\n };\r\n\r\n // Handle content justification with proper CSS values\r\nconst getJustifyContent = (justify: string): React.CSSProperties['justifyContent'] => {\r\n if (justify === 'initial') return 'initial';\r\n \r\n const justifyMap: Record<string, React.CSSProperties['justifyContent']> = {\r\n around: 'space-around',\r\n between: 'space-between',\r\n evenly: 'space-evenly',\r\n start: 'flex-start',\r\n end: 'flex-end',\r\n center: 'center',\r\n 'flex-start': 'flex-start', // Add this\r\n };\r\n \r\n return justifyMap[justify] || justify || 'flex-start'; // Default to flex-start\r\n};\r\n\r\n // Handle alignment with proper CSS values\r\nconst getAlignItems = (align: React.CSSProperties['alignItems']): React.CSSProperties['alignItems'] => {\r\n if (align === 'initial') return 'initial';\r\n \r\n const alignMap: Record<string, React.CSSProperties['alignItems']> = {\r\n start: 'flex-start',\r\n end: 'flex-end',\r\n center: 'center',\r\n stretch: 'stretch',\r\n baseline: 'baseline',\r\n 'flex-start': 'flex-start', // Add this\r\n };\r\n \r\n return (typeof align === 'string' && alignMap[align]) || align || 'flex-start'; // Default to flex-start\r\n};\r\n\r\n // Check if children is empty\r\n const isEmpty = (children: any): boolean => {\r\n if (!children) return true;\r\n if (Array.isArray(children)) return children.length === 0;\r\n return false;\r\n };\r\n\r\n // Get children as array\r\n const childrenArray = React.Children.toArray(children);\r\n \r\n // Layout styles\r\n const rowLayout = {\r\n display: 'flex',\r\n flexDirection: 'row' as const,\r\n width: '100%',\r\n height: '100%',\r\n margin: 0,\r\n padding: 0,\r\n boxSizing: 'border-box' as const\r\n };\r\n\r\n const colLayout = {\r\n display: 'flex',\r\n flexDirection: 'column' as const,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: '5px',\r\n boxSizing: 'border-box' as const,\r\n flex: 1\r\n };\r\n\r\n // Render layout based on the layout prop\r\n const renderLayout = () => {\r\n if (!props.layout) {\r\n return (\r\n <div style={{ \r\n display: 'flex', \r\n flexDirection: 'column', \r\n alignItems: 'center', \r\n justifyContent: 'center',\r\n height: '100%',\r\n color: '#666',\r\n width: '100%',\r\n boxSizing: 'border-box'\r\n }}>\r\n <h1>No Layout</h1>\r\n </div>\r\n );\r\n }\r\n \r\n switch(props.layout) {\r\n case \"layout1\":\r\n return (\r\n <div style={{ \r\n width: \"100%\",\r\n height: \"100%\",\r\n minHeight: \"50px\",\r\n boxSizing: \"border-box\",\r\n overflow: \"hidden\",\r\n justifyContent:\"center\",\r\n alignItems:props.align,\r\n \r\n }}>\r\n {/* {children} */}\r\n <div style={{\r\n \r\n display:\"flex\",\r\n justifyContent:props.justify,\r\n alignItems:props.align,\r\nheight: \"100%\" \r\n }}>\r\n <div style={{width:'100%'}}> {children}</div>\r\n </div>\r\n </div>\r\n );\r\n \r\n case \"layout2\":\r\n return (\r\n <div style={{ \r\n display: 'flex', \r\n flexDirection: 'column', // Changed to column to stack vertically\r\n width: '100%',\r\n height: '100%',\r\n margin: 0,\r\n padding: 0,\r\n boxSizing: 'border-box'\r\n }}>\r\n {[0, 1].map((idx) => (\r\n <div\r\n key={`BOX-LAYOUT2-${idx}`}\r\n style={{\r\n ...colLayout,\r\n minHeight: \"50%\",\r\n width: '100%',\r\n flex: 1\r\n }}\r\n >\r\n {!isEmpty(childrenArray[idx]) ? (\r\n childrenArray[idx]\r\n ) : (\r\n <div style={{ textAlign: 'center', color: '#999' }}>\r\n No component here\r\n </div>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n case \"layout3\":\r\n return (\r\n <div style={{ ...rowLayout, flexDirection: 'column', height: '100%' }}>\r\n <div style={{ ...rowLayout, flex: 1 }}>\r\n {[0, 1].map((idx) => (\r\n <div\r\n key={`BOX-LAYOUT3-TOP-${idx}`}\r\n style={{\r\n ...colLayout,\r\n minHeight: \"50px\",\r\n flex: 1\r\n }}\r\n >\r\n {!isEmpty(childrenArray[idx]) ? (\r\n childrenArray[idx]\r\n ) : (\r\n <div style={{ textAlign: 'center', color: '#999' }}>\r\n No component here\r\n </div>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n <div style={{ ...rowLayout, flex: 1 }}>\r\n {[2, 3].map((idx) => (\r\n <div\r\n key={`BOX-LAYOUT3-BOTTOM-${idx}`}\r\n style={{\r\n ...colLayout,\r\n minHeight: \"50px\",\r\n flex: 1\r\n }}\r\n >\r\n {!isEmpty(childrenArray[idx]) ? (\r\n childrenArray[idx]\r\n ) : (\r\n <div style={{ textAlign: 'center', color: '#999' }}>\r\n No component here\r\n </div>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n\r\n case \"layout4\":\r\n return (\r\n <div style={rowLayout}>\r\n <div\r\n style={{\r\n ...colLayout,\r\n minHeight: \"50px\",\r\n flex: 1\r\n }}\r\n >\r\n {!isEmpty(childrenArray[0]) ? (\r\n childrenArray[0]\r\n ) : (\r\n <div style={{ textAlign: 'center', color: '#999' }}>\r\n No component here\r\n </div>\r\n )}\r\n </div>\r\n <div style={{ display: 'flex', flexDirection: 'column', flex: 1 }}>\r\n {[1, 2].map((idx) => (\r\n <div\r\n key={`BOX-LAYOUT4-${idx}`}\r\n style={{\r\n ...colLayout,\r\n minHeight: \"50px\",\r\n flex: 1\r\n }}\r\n >\r\n {!isEmpty(childrenArray[idx]) ? (\r\n childrenArray[idx]\r\n ) : (\r\n <div style={{ textAlign: 'center', color: '#999' }}>\r\n No component here\r\n </div>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n\r\n case \"layout5\":\r\n return (\r\n <div style={rowLayout}>\r\n <div style={{ display: 'flex', flexDirection: 'column', flex: 1 }}>\r\n {[0, 1].map((idx) => (\r\n <div\r\n key={`BOX-LAYOUT5-${idx}`}\r\n style={{\r\n ...colLayout,\r\n minHeight: \"50px\",\r\n flex: 1\r\n }}\r\n >\r\n {!isEmpty(childrenArray[idx]) ? (\r\n childrenArray[idx]\r\n ) : (\r\n <div style={{ textAlign: 'center', color: '#999' }}>\r\n No component here\r\n </div>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n <div\r\n style={{\r\n ...colLayout,\r\n minHeight: \"50px\",\r\n flex: 1\r\n }}\r\n >\r\n {!isEmpty(childrenArray[2]) ? (\r\n childrenArray[2]\r\n ) : (\r\n <div style={{ textAlign: 'center', color: '#999' }}>\r\n No component here\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n\r\n default:\r\n return children;\r\n }\r\n };\r\n\r\n return (\r\n <div \r\n style={{\r\n backgroundColor: props.bgColor,\r\n backgroundSize: props.bgsize || 'cover',\r\n height: getBoxHeight(),\r\n minHeight: autoAdjustForImages ? 'auto' : (currentMode.height || 'auto'),\r\n borderRadius: currentMode.radius || '0px',\r\n width: `calc(${(colspan / 12) * 100}% - 1px)`,\r\n maxWidth: `calc(${(colspan / 12) * 100}% - 1px)`,\r\n minWidth: `calc(${(colspan / 12) * 100}% - 1px)`,\r\n flex: 'none',\r\n boxSizing: 'border-box',\r\n margin: '5px 0px',\r\n overflow: 'hidden',\r\n position: 'relative',\r\n marginTop: currentMode.top,\r\n marginBottom: currentMode.bottom,\r\n marginLeft: currentMode.left,\r\n marginRight: currentMode.right,\r\n // Flex container for children\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: props.align === 'initial' ? 'initial' : getAlignItems(props.align),\r\n justifyContent: props.justify === 'initial' ? 'initial' : getJustifyContent(props.justify)\r\n }}\r\n >\r\n {renderLayout()}\r\n </div>\r\n );\r\n};\r\n\r\nexport default BoxComponent;","import React from 'react';\r\nimport type { ComponentProps } from '../../types';\r\n\r\nconst TextComponent: React.FC<{ props: ComponentProps }> = ({ props }) => {\r\n const { text, style } = props;\r\n\r\n const tagName = style?.headingTag ?? 'p';\r\n\r\n \r\n\r\n const textStyle = {\r\n fontSize: style?.fontSize ? `${style.fontSize}px` : '16px',\r\n fontWeight: style?.fontStyle?.isBold ? 'bold' : 'normal',\r\n fontStyle: style?.fontStyle?.isItalic ? 'italic' : 'normal',\r\n textDecoration: style?.fontStyle?.isUnderLine ? 'underline' : 'none',\r\n textDecorationLine: style?.fontStyle?.isStrikeThrough ? 'line-through' : 'none',\r\n color: style?.fontColor || '#000',\r\n textAlign: style?.textAlign || 'left',\r\n fontFamily: style?.fontFamily || 'inherit',\r\n margin: 5,\r\n wordWrap: \"break-word\",\r\n overflowWrap: \"break-word\",\r\n maxWidth: \"100%\",\r\n whiteSpace: \"normal\",\r\n width: \"100%\",\r\n boxSizing: \"border-box\",\r\n wordBreak: \"break-word\",\r\n };\r\n\r\n // ✅ Build the dynamic link URL\r\n const buildLink = (): string | null => {\r\n const linkData = props;\r\n\r\n switch (linkData.linktype) {\r\n case 'NONE':\r\n return null;\r\n case 'EXTERNAL_LINK':\r\n case 'EXTERNAL':\r\n return linkData.link?.url || null;\r\n case 'PRODUCT':\r\n const pdType = linkData.product?.pd_type;\r\n const code = linkData.product?.pd_id?.code || linkData.product?.code || linkData.product?.product_data?.code;\r\n\r\n if (!code) return null;\r\n\r\n return pdType === 'VARIANT'\r\n ? `/variant/${code}`\r\n : `model/${code}`;\r\n case 'TAG':\r\n return `/tag/${linkData.tag?.code}`;\r\n case 'PAGE':\r\n return `/page/${linkData.page?._id}?type=${linkData.page?.pg_type}`;\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n const url = buildLink();\r\n\r\n const textElement = React.createElement(\r\n tagName,\r\n { style: textStyle },\r\n text\r\n );\r\n\r\n // ✅ Wrap text in anchor tag if link is present\r\n if (url) {\r\n return (\r\n <div style={{\r\n display: \"block\",\r\n width: \"100%\",\r\n maxWidth: \"100%\",\r\n wordWrap: \"break-word\",\r\n overflowWrap: \"break-word\",\r\n boxSizing: \"border-box\",\r\n }}>\r\n <a\r\n href={url}\r\n target={props?.linktype=='EXTERNAL' ? props?.link?.target :'_self'}\r\n style={{\r\n textDecoration: 'none',\r\n display: \"inline-block\",\r\n width: \"100%\",\r\n maxWidth: \"100%\",\r\n boxSizing: \"border-box\",\r\n wordWrap: \"break-word\",\r\n overflowWrap: \"break-word\",\r\n whiteSpace: \"normal\",\r\n wordBreak: \"break-word\",\r\n color: style?.fontColor || 'inherit',\r\n }}\r\n >\r\n {textElement}\r\n </a>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div style={{\r\n display: \"block\",\r\n width: \"100%\",\r\n maxWidth: \"100%\",\r\n wordWrap: \"break-word\",\r\n overflowWrap: \"break-word\",\r\n boxSizing: \"border-box\",\r\n padding: '20px'\r\n }}>\r\n {textElement}\r\n </div>\r\n );\r\n};\r\n\r\nexport default TextComponent;\r\n","import React from 'react';\r\n\r\ninterface LinkProps {\r\n text: any;\r\n url: string;\r\n target: string;\r\n framename: string;\r\n style?: {\r\n fontSize?: number;\r\n fontStyle?: {\r\n isBold?: boolean;\r\n isItalic?: boolean;\r\n isUnderLine?: boolean;\r\n isStrikeThrough?: boolean;\r\n };\r\n fontColor?: string;\r\n textAlign?: React.CSSProperties['textAlign'];\r\n fontFamily?: string;\r\n };\r\n}\r\n\r\ninterface LinkComponentProps {\r\n props: LinkProps;\r\n}\r\n\r\nconst LinkComponent: React.FC<LinkComponentProps> = ({ props }) => {\r\n const { text, url, target, style } = props;\r\n\r\n const linkStyle: React.CSSProperties = {\r\n fontSize: style?.fontSize ? `${style.fontSize}px` : '16px',\r\n fontWeight: style?.fontStyle?.isBold ? 'bold' : 'normal',\r\n fontStyle: style?.fontStyle?.isItalic ? 'italic' : 'normal',\r\n textDecoration: style?.fontStyle?.isUnderLine ? 'underline' : 'none',\r\n textDecorationLine: style?.fontStyle?.isStrikeThrough ? 'line-through' : 'none',\r\n color: style?.fontColor || '#000000ff',\r\n textAlign: (style?.textAlign as React.CSSProperties['textAlign']) || 'left',\r\n fontFamily: style?.fontFamily || 'inherit',\r\n margin: 5,\r\n wordWrap: \"break-word\" as const,\r\n overflowWrap: \"break-word\" as const,\r\n maxWidth: \"100%\",\r\n whiteSpace: \"normal\" as const,\r\n width: \"100%\",\r\n boxSizing: \"border-box\" as const,\r\n wordBreak: \"break-word\" as const,\r\n };\r\n\r\n return (\r\n <div style={{\r\n display: \"block\" as const,\r\n width: \"100%\",\r\n maxWidth: \"100%\",\r\n wordWrap: \"break-word\" as const,\r\n overflowWrap: \"break-word\" as const,\r\n boxSizing: \"border-box\" as const,\r\n }}>\r\n <a \r\n href={url} \r\n target={target}\r\n style={linkStyle}\r\n >\r\n {text}\r\n </a>\r\n </div>\r\n );\r\n};\r\n\r\nexport default LinkComponent;","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","export const ENCRYPT_KEY =import.meta.env.VITE_HASHKEY\r\nexport const REGION = import.meta.env.VITE_REGION;\r\nexport const ENDPOINT = import.meta.env.VITE_ENDPOINT;\r\nexport const ACCESS_KEY_ID = import.meta.env.VITE_ACCESS_KEY_ID;\r\nexport const SECRET_ACCESS_KEY = import.meta.env.VITE_SECRET_ACCESS_KEY;\r\nexport const Linodeurl=`https://pim.in-maa-1.linodeobjects.com/`\r\n","import '../../../src/index.css';\r\nimport React from 'react';\r\nimport { Linodeurl } from '../../const';\r\n\r\ninterface ImageData {\r\n isDynamic: boolean;\r\n shape: string;\r\n url: string;\r\n alt: string;\r\n}\r\n\r\ninterface ImageModeProps {\r\n borderRadius: number;\r\n width: string;\r\n height: string;\r\n}\r\n\r\ninterface ImageComponentProps {\r\n images: any;\r\n mode: {\r\n web: ImageModeProps;\r\n mobileweb: ImageModeProps;\r\n mobileapp: ImageModeProps;\r\n tablet: ImageModeProps;\r\n };\r\n linktype: string;\r\n link: {\r\n url: string;\r\n target: string;\r\n };\r\n product: {\r\n _id: string;\r\n code: string;\r\n name: object;\r\n pd_type: string;\r\n };\r\n page: {\r\n _id: string;\r\n code: string;\r\n name: object;\r\n pg_type: string;\r\n facet_params: any[];\r\n track_params: any[];\r\n };\r\n tag: {\r\n _id: string;\r\n code: string;\r\n name: object;\r\n tagtype: string;\r\n };\r\n type: any[];\r\n}\r\n\r\ninterface ImageComponentMainProps {\r\n props: ImageComponentProps;\r\n deviceMode?: string;\r\n boxHeight?: string; // Add this prop to receive box height\r\n}\r\n\r\nconst ImageComponent: React.FC<ImageComponentMainProps> = ({\r\n props,\r\n deviceMode = 'web',\r\n boxHeight = '280px',\r\n}) => {\r\n\r\n const bannerLink = (element: any): string | null => {\r\n if (!element || !element.linktype) return null;\r\n\r\n switch (element.linktype) {\r\n case 'NONE':\r\n return null;\r\n\r\n case 'EXTERNAL':\r\n case 'EXTERNAL_LINK':\r\n return element.link?.url || null;\r\n\r\n case 'PRODUCT': {\r\n const pdType = element.product?.pd_type;\r\n const code =\r\n element.product?.pd_id?.code ||\r\n element.product?.code ||\r\n element.product?.product_data?.code;\r\n\r\n if (!code) return null;\r\n\r\n return pdType === 'VARIANT'\r\n ? `/variant/${code}`\r\n : `model/${code}`;\r\n }\r\n\r\n case 'TAG': {\r\n const tagCode = element.tag?.code;\r\n if (!tagCode) return null;\r\n // return `/${tagCode}/s?type=tag`;\r\n return `/tag/${tagCode}`;\r\n }\r\n\r\n case 'PAGE': {\r\n const pageId = element.page?._id || element.page?.code;\r\n const pgType = element.page?.pg_type;\r\n if (!pageId || !pgType) return null;\r\n return `/page/${pageId}?type=${pgType}`;\r\n }\r\n\r\n default:\r\n return element.slug || null;\r\n }\r\n };\r\n\r\n const getCurrentMode = () => {\r\n switch (deviceMode) {\r\n case 'mobileweb':\r\n return props.mode.mobileweb;\r\n case 'mobileapp':\r\n return props.mode.mobileapp;\r\n case 'tablet':\r\n return props.mode.tablet;\r\n case 'web':\r\n default:\r\n return props.mode.web;\r\n }\r\n };\r\n\r\n const currentMode = getCurrentMode();\r\n const containerHeight = boxHeight === 'auto' ? 'auto' : boxHeight;\r\n const link = bannerLink(props);\r\n const imageUrl = `${Linodeurl}${props.images?.url || props.images?.all?.url}`;\r\n const altText = props.images.alt || '';\r\n\r\n const imageElement = (\r\n <img\r\n src={imageUrl}\r\n alt={altText}\r\n className=\"fitted-image\"\r\n style={{ cursor: link ? 'pointer' : 'default' }}\r\n />\r\n );\r\n\r\n return (\r\n <div\r\n className=\"image-box\"\r\n style={{\r\n borderRadius: `${currentMode.borderRadius}px`,\r\n height: containerHeight,\r\n overflow: 'hidden',\r\n }}\r\n >\r\n {link ? (\r\n <a\r\n href={link}\r\n target={props?.linktype=='EXTERNAL' ? props?.link?.target :'_self'}\r\n style={{ display: 'block', width: '100%', height: '100%' }}\r\n >\r\n {imageElement}\r\n </a>\r\n ) : (\r\n imageElement\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default ImageComponent;\r\n","import React from \"react\";\r\nimport \"./product-list-view-one.css\";\r\nimport { Linodeurl } from '../../../const';\r\n\r\nconst ProductListViewOne = (props: any) => {\r\n const [target, setTarget] = React.useState(\"_blank\");\r\n console.warn(props)\r\n React.useEffect(() => {\r\n if (typeof window !== \"undefined\") {\r\n if (window.matchMedia(\"(display-mode: standalone)\").matches) {\r\n setTarget(\"_self\");\r\n }\r\n if (\r\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\r\n navigator.userAgent\r\n )\r\n ) {\r\n setTarget(\"_self\");\r\n }\r\n }\r\n }, []);\r\n\r\n const data = props.props || props;\r\n const slug = data?._id; // Using code instead of slug\r\n\r\n // Updated price extraction to match your JSON structure\r\n const sellingPrice = Number(data?.price?.SP?.$numberDecimal || 0);\r\n const mrpPrice = Number(data?.price?.MRP?.$numberDecimal || 0);\r\n\r\n const calculateDiscount = (): number | null => {\r\n if (!sellingPrice || !mrpPrice || mrpPrice <= sellingPrice) return null;\r\n return Math.round(100 - (sellingPrice / mrpPrice) * 100);\r\n };\r\n\r\n const discount = calculateDiscount();\r\n\r\n // Extract variant options for display\r\n const getVariantOptions = () => {\r\n if (!data?.variant) return \"\";\r\n return data.variant\r\n .map((v: any) => v.valueId?.name?.displayName || v.valueId?.name?.all || \"\")\r\n .filter(Boolean)\r\n .join(\" • \");\r\n };\r\n\r\n const variantOptions = getVariantOptions();\r\n\r\n return (\r\n <div className=\"card\">\r\n <a href={`/${slug}`} target={target}>\r\n <div className=\"card_grid\">\r\n <div className=\"card_top\">\r\n <img\r\n src={`${Linodeurl}${data?.image?.all?.url || data?.image?.url}`}\r\n alt={data?.name?.all || data?.name}\r\n className=\"product_image\"\r\n />\r\n </div>\r\n <div className=\"card_bottom\">\r\n <div className=\"cardname\">\r\n <h3>{data?.name?.all || data?.name}</h3>\r\n <h5>{variantOptions}</h5>\r\n </div>\r\n <div className=\"card_value\">\r\n {sellingPrice !== 0 && (\r\n <div className=\"card_price\">\r\n <h4>₹{sellingPrice.toLocaleString(\"en-IN\")}</h4>\r\n <div className=\"card_right_grid\">\r\n {mrpPrice > sellingPrice && (\r\n <p >₹{mrpPrice.toLocaleString(\"en-IN\")}</p>\r\n )}\r\n {discount !== null && discount > 0 && (\r\n <span>({discount}% OFF)</span>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n <div className=\"review_counts\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"#f46b27\"\r\n width=\"13\"\r\n height=\"13\"\r\n >\r\n <path d=\"M10 15l-5.878 3.09 1.122-6.545L.488 6.91l6.562-.955L10 0l2.95 5.955 6.562.955-4.756 4.635 1.122 6.545z\" />\r\n </svg>\r\n <p>{data?.starrating}</p>\r\n <span>({data?.startRatingCount} Reviews)</span>\r\n </div>\r\n {/* {Number(data?.starrating) && Number(data?.startRatingCount) && (\r\n \r\n )} */}\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </div>\r\n );\r\n};\r\n\r\nexport default ProductListViewOne;","import React from \"react\";\r\nimport \"./product-list-view-two.css\";\r\nimport { Linodeurl } from '../../../const';\r\n\r\nconst ProductListViewTwo = (props: any) => {\r\n console.warn(props);\r\n const [target, setTarget] = React.useState(\"_blank\");\r\n\r\n React.useEffect(() => {\r\n if (typeof window !== \"undefined\") {\r\n if (window.matchMedia(\"(display-mode: standalone)\").matches) {\r\n setTarget(\"_self\");\r\n }\r\n if (\r\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\r\n navigator.userAgent\r\n )\r\n ) {\r\n setTarget(\"_self\");\r\n }\r\n }\r\n }, []);\r\n\r\n const data = props.props || props;\r\n const slug = data?._id; // Using code instead of slug since slug doesn't exist in your data\r\n\r\n // Updated price extraction to match your JSON structure\r\n const sellingPrice = Number(data?.price?.SP?.$numberDecimal || 0);\r\n const mrpPrice = Number(data?.price?.MRP?.$numberDecimal || 0);\r\n\r\n const calculateDiscount = () => {\r\n if (!sellingPrice || !mrpPrice || mrpPrice <= sellingPrice) return null;\r\n return Math.round(100 - (sellingPrice / mrpPrice) * 100);\r\n };\r\n\r\n const discount = calculateDiscount();\r\n\r\n // Extract variant options for display\r\n // const getVariantOptions = () => {\r\n // if (!data?.variant) return \"\";\r\n // return data.variant\r\n // .map((v: any) => v.valueId?.name || v.valueId?.name || \"\")\r\n // .filter(Boolean)\r\n // .join(\" • \");\r\n // };\r\n\r\n // const variantOptions = getVariantOptions();\r\n\r\n return (\r\n <div className=\"card\">\r\n <a href={`/${slug}`} target={target} rel=\"noopener noreferrer\">\r\n <div className=\"card_content\">\r\n \r\n \r\n <div className=\"card_middle\">\r\n <img\r\n src={`${Linodeurl}${data?.image?.all?.url || data?.image?.url}`}\r\n alt={data?.name?.all || data?.name}\r\n className=\"product_image\"\r\n />\r\n\r\n </div>\r\n <div className=\"card_top\">\r\n <h3 className=\"product_name\">{data?.name?.all || data?.name}</h3>\r\n <h5 className=\"product_option\">{data?.code}</h5>\r\n </div>\r\n <div className=\"card_bottom\">\r\n <div className=\"price_container\">\r\n {sellingPrice !== 0 && (\r\n <>\r\n <div className=\"price_row\">\r\n <h4 className=\"selling_price\">₹{sellingPrice.toLocaleString(\"en-IN\")}</h4>\r\n {discount !== null && discount > 0 && (\r\n <span className=\"discounts\">{discount}% OFF</span>\r\n )}\r\n </div>\r\n {mrpPrice > sellingPrice && (\r\n <p className=\"save_amount\">Save ₹{(mrpPrice - sellingPrice).toLocaleString(\"en-IN\")}</p>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n\r\n <div className=\"review_container\">\r\n <div className=\"rating\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n width=\"14\"\r\n height=\"14\"\r\n >\r\n <path d=\"M10 15l-5.878 3.09 1.122-6.545L.488 6.91l6.562-.955L10 0l2.95 5.955 6.562.955-4.756 4.635 1.122 6.545z\" />\r\n </svg>\r\n <span className=\"rating_value\">{data?.starrating}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </div>\r\n );\r\n};\r\n\r\nexport default ProductListViewTwo;","import React from 'react';\r\nimport ProductListViewOne from '../Visual-Components/Styles/ProductListViewOne';\r\nimport ProductListViewTwo from '../Visual-Components/Styles/ProductListViewTwo';\r\nimport { Linodeurl } from '../../const';\r\n\r\n\r\ninterface Product {\r\n _id: string;\r\n code: string;\r\n name: string | { all: string };\r\n image: any;\r\n isActive: boolean;\r\n price?:any;\r\n}\r\n\r\ninterface GroupProductStatic {\r\n _id: string;\r\n code: string;\r\n name: string;\r\n}\r\n\r\ninterface GroupProductDynamic {\r\n code: string;\r\n name: { all: string };\r\n list: Product[];\r\n isActive: boolean;\r\n}\r\n\r\ninterface GroupProductData {\r\n static: GroupProductStatic;\r\n dynamic: GroupProductDynamic;\r\n showItems:Product[]\r\n\r\n}\r\n\r\ninterface HeaderTextStyle {\r\n fontSize: number;\r\n fontColor: string;\r\n isBold: boolean;\r\n isItalic: boolean;\r\n isUnderline: boolean;\r\n}\r\n\r\ninterface DeviceBooleanProps {\r\n web: boolean;\r\n mobileweb: boolean;\r\n mobileapp: boolean;\r\n tablet: boolean;\r\n}\r\n\r\ninterface DeviceLayoutProps {\r\n web: string;\r\n mobileweb: string;\r\n mobileapp: string;\r\n tablet: string;\r\n}\r\n\r\nexport interface GroupProductComponentProps {\r\n headerText: { all: string };\r\n type: string;\r\n groupproduct: GroupProductData;\r\n showItems:Product[]\r\n activeStatus: boolean;\r\n headerImage: string;\r\n selectedProducts: Product[];\r\n items: any[];\r\n\r\n cardColor: string;\r\n showProductName: DeviceBooleanProps;\r\n headerTextStyle: HeaderTextStyle;\r\n layout: DeviceLayoutProps;\r\n style: DeviceLayoutProps;\r\n \r\n showHeader: DeviceBooleanProps;\r\n isHorizontalScroll: DeviceBooleanProps;\r\n headerBackground: string;\r\n viewAllLink?: string;\r\n}\r\n\r\ninterface GroupProductComponentMainProps {\r\n props: GroupProductComponentProps;\r\n deviceMode?: string;\r\n}\r\n\r\nconst GroupProductComponent: React.FC<GroupProductComponentMainProps> = ({ \r\n props, \r\n deviceMode = 'web' \r\n}) => {\r\n const getCurrentBooleanProp = (prop: DeviceBooleanProps) => {\r\n switch(deviceMode) {\r\n case 'mobileweb': return prop.mobileweb;\r\n case 'mobileapp': return prop.mobileapp;\r\n case 'tablet': return prop.tablet;\r\n case 'web':\r\n default: return prop.web;\r\n }\r\n };\r\n\r\n const getCurrentLayout = () => {\r\n switch(deviceMode) {\r\n case 'mobileweb': return props.layout.mobileweb;\r\n case 'mobileapp': return props.layout.mobileapp;\r\n case 'tablet': return props.layout.tablet;\r\n case 'web':\r\n default: return props.layout.web;\r\n }\r\n };\r\n\r\n const getCurrentStyle = () => {\r\n switch(deviceMode) {\r\n case 'mobileweb': return props.style.mobileweb;\r\n case 'mobileapp': return props.style.mobileapp;\r\n case 'tablet': return props.style.tablet;\r\n case 'web':\r\n default: return props.style.web;\r\n }\r\n };\r\n const showHeader = getCurrentBooleanProp(props.showHeader);\r\n const showProductName = getCurrentBooleanProp(props.showProductName);\r\n const isHorizontalScroll = getCurrentBooleanProp(props.isHorizontalScroll);\r\n const currentLayout = getCurrentLayout();\r\n const currentstyle=getCurrentStyle();\r\n\r\n const getProducts = () => {\r\n if(props?.groupproduct?.showItems) return props.groupproduct.showItems\r\n return [];\r\n };\r\n\r\n const products = getProducts();\r\n \r\n // Carousel navigation functions\r\n const scrollLeft = () => {\r\n const carousel = document.querySelector('.groupProductCarousel');\r\n if (carousel) {\r\n carousel.scrollBy({ left: -200, behavior: 'smooth' });\r\n }\r\n };\r\n\r\n const scrollRight = () => {\r\n const carousel = document.querySelector('.groupProductCarousel');\r\n if (carousel) {\r\n carousel.scrollBy({ left: 200, behavior: 'smooth' });\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n style={{\r\n border: '1px solid #e1e1e1',\r\n width: '100%', \r\n maxWidth: '100%',\r\n borderRadius: '0px',\r\n minHeight: '100px',\r\n position: 'relative',\r\n overflow: 'hidden',\r\n marginBottom:'20px',\r\n marginTop:'0px'\r\n \r\n }}\r\n className='GroupProductComponent'\r\n >\r\n {showHeader && (\r\n <div\r\n className=\"groupProductHeader\"\r\n style={{\r\n backgroundColor: props.headerBackground,\r\n padding: '12px 16px',\r\n borderRadius: '0px',\r\n marginBottom: '4px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n flexWrap: 'wrap',\r\n gap: '12px',\r\n }}\r\n >\r\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\r\n {props.headerImage && (\r\n <div style={{ width: '32px', height: '32px' }}>\r\n {/* <ImageDisplayComponent \r\n fileUrl={props.headerImage}\r\n preserveAspectRatio={true}\r\n maxWidth=\"100%\"\r\n maxHeight=\"32px\"\r\n /> */}\r\n <img\r\n src={`${Linodeurl}${props.headerImage}`} \r\n style={{ width: '100%', height: '100%', objectFit: 'cover' }}\r\n />\r\n </div>\r\n )}\r\n <p style={{\r\n color: props.headerTextStyle.fontColor,\r\n fontSize: `${props.headerTextStyle.fontSize}px`,\r\n fontWeight: props.headerTextStyle.isBold ? 'bold' : 'normal',\r\n fontStyle: props.headerTextStyle.isItalic ? 'italic' : 'normal',\r\n textDecoration: props.headerTextStyle.isUnderline ? 'underline' : 'none',\r\n margin: 0\r\n }}>\r\n {props.headerText?.all || 'Header text'} \r\n </p>\r\n </div>\r\n\r\n <div style={{ display: 'flex', alignItems: 'center', gap: '16px' }}>\r\n \r\n {props.type=='static' && (\r\n <a\r\n href={`http://localhost:5173/${props.groupproduct.static.code}/s?type=groupproduct`}\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n style={{\r\n color: 'black',\r\n textDecoration: 'none',\r\n fontWeight: '500',\r\n fontSize: '14px',\r\n padding: '6px 12px',\r\n border: 'none',\r\n borderRadius: '4px',\r\n backgroundColor: 'transparent',\r\n cursor: 'pointer'\r\n }}\r\n>\r\n View All\r\n</a>\r\n )}\r\n\r\n\r\n \r\n\r\n {currentLayout === 'NONE' && products.length > 4 && (\r\n <div style={{ display: 'flex', gap: '8px' }}>\r\n <button \r\n onClick={scrollLeft} \r\n style={{\r\n width: '32px',\r\n height: '32px',\r\n borderRadius: '50%',\r\n border: '1px solid #ddd',\r\n backgroundColor: '#fff',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '16px',\r\n fontWeight: 'bold'\r\n }}\r\n onMouseOver={(e) => {\r\n e.currentTarget.style.backgroundColor = '#f8f9fa';\r\n }}\r\n onMouseOut={(e) => {\r\n e.currentTarget.style.backgroundColor = '#fff';\r\n }}\r\n >\r\n &#8249;\r\n </button>\r\n <button \r\n onClick={scrollRight} \r\n style={{\r\n width: '32px',\r\n height: '32px',\r\n borderRadius: '50%',\r\n border: '1px solid #ddd',\r\n backgroundColor: '#fff',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '16px',\r\n fontWeight: 'bold'\r\n }}\r\n onMouseOver={(e) => {\r\n e.currentTarget.style.backgroundColor = '#f8f9fa';\r\n }}\r\n onMouseOut={(e) => {\r\n e.currentTarget.style.backgroundColor = '#fff';\r\n }}\r\n >\r\n &#8250;\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n\r\n <div \r\n className=\"groupProductCarousel\" \r\n style={{\r\n display: currentLayout === 'NONE' ? 'flex' : 'block',\r\n overflowX: currentLayout === 'NONE' && isHorizontalScroll ? 'auto' : 'visible',\r\n gap: currentLayout === 'NONE' ? '12px' : '0',\r\n padding: '12px',\r\n scrollBehavior: 'smooth',\r\n backgroundColor: props.cardColor || '#fff',\r\n scrollbarWidth: 'thin',\r\n borderRadius: '8px',\r\n position: 'relative',\r\n scrollbarColor: '#c1c1c1 transparent'\r\n }}\r\n >\r\n {products.length > 0 ? (\r\n currentLayout === 'NONE' ? (\r\n products.slice(0, props.type === 'static' ? 15 : products.length).map((product) => {\r\n if (currentstyle === 'STYLE1') {\r\n return (\r\n <div key={product._id}>\r\n <ProductListViewOne props={product} />\r\n </div>\r\n );\r\n } else if (currentstyle === 'STYLE2') {\r\n return (\r\n <div key={product._id}>\r\n <ProductListViewTwo props={product} />\r\n </div>\r\n );\r\n } else {\r\n // Default style (NONE)\r\n return (\r\n <a href={`/${product._id}`} target={'_blank'} rel=\"noopener noreferrer\" style={{textDecoration:\"none\"}}>\r\n <div\r\n key={product._id}\r\n className=\"productImageSlide\"\r\n style={{\r\n height: 'auto',\r\n minWidth: deviceMode === 'mobileapp' || deviceMode === 'mobileweb' ? '120px' : '150px',\r\n\r\n borderRadius: '8px',\r\n overflow: 'hidden',\r\n border: '1px solid #eee',\r\n backgroundColor: '#fff',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: '12px',\r\n boxShadow: '0 2px 4px rgba(0,0,0,0.1)',\r\n transition: 'transform 0.2s ease',\r\n cursor: 'pointer',\r\n }}\r\n onMouseOver={(e) => {\r\n e.currentTarget.style.transform = 'translateY(-2px)';\r\n e.currentTarget.style.boxShadow = '0 4px 8px rgba(0,0,0,0.15)';\r\n }}\r\n onMouseOut={(e) => {\r\n e.currentTarget.style.transform = 'translateY(0)';\r\n e.currentTarget.style.boxShadow = '0 2px 4px rgba(0,0,0,0.1)';\r\n }}\r\n>\r\n <div\r\n style={{\r\n height: '120px',\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n marginBottom: '8px',\r\n }}\r\n >\r\n <img\r\n src={`${Linodeurl}${product.image?.url}`}\r\n alt={typeof product.name === 'object' ? product.name.all : product.name}\r\n style={{ width: '100%', height: '100%', objectFit: 'contain' }}\r\n />\r\n </div>\r\n\r\n {showProductName && (\r\n <div\r\n style={{\r\n marginTop: '8px',\r\n textAlign: 'center',\r\n fontSize: '14px',\r\n fontWeight: '500',\r\n color: '#333',\r\n lineHeight: '1.4',\r\n height: '40px',\r\n overflow: 'hidden',\r\n display: '-webkit-box',\r\n WebkitLineClamp: 2,\r\n WebkitBoxOrient: 'vertical',\r\n }}\r\n >\r\n {typeof product.name === 'object' ? product.name.all : product.name}\r\n <h1 style={{ fontSize: '16px', fontWeight: '700', color: '#333' }}>\r\n {product?.price?.SP?.$numberDecimal}\r\n </h1>\r\n {/* <h2 style={{ fontSize: '14px', fontWeight: '500', color: '#666' }}>\r\n MRP: {product?.price?.MRP?.$numberDecimal}\r\n </h2> */}\r\n </div>\r\n )}\r\n</div>\r\n </a>\r\n\r\n );\r\n }\r\n})\r\n ) : currentLayout === 'SMALL' ? (\r\n <div style={{\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(2, 1fr)',\r\n gap: '16px',\r\n padding: '8px'\r\n }}>\r\n {\r\n products.map((product) => (\r\n <div\r\n key={product._id}\r\n className=\"productImageSlide\"\r\n style={{\r\n height: 'auto',\r\n borderRadius: '8px',\r\n overflow: 'hidden',\r\n border: '1px solid #eee',\r\n backgroundColor: '#fff',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: '12px',\r\n boxShadow: '0 2px 4px rgba(0,0,0,0.1)',\r\n transition: 'transform 0.2s ease',\r\n cursor: 'pointer'\r\n }}\r\n onMouseOver={(e) => {\r\n e.currentTarget.style.transform = 'translateY(-2px)';\r\n e.currentTarget.style.boxShadow = '0 4px 8px rgba(0,0,0,0.15)';\r\n }}\r\n onMouseOut={(e) => {\r\n e.currentTarget.style.transform = 'translateY(0)';\r\n e.currentTarget.style.boxShadow = '0 2px 4px rgba(0,0,0,0.1)';\r\n }}\r\n >\r\n <div style={{ \r\n height: '100px', \r\n width: '100%', \r\n display: 'flex', \r\n alignItems: 'center', \r\n justifyContent: 'center',\r\n marginBottom: '8px'\r\n }}>\r\n <img\r\n src={`${Linodeurl}${product.image?.all?.url}`}\r\n alt=\"\"\r\n style={{ width: '100%', height: '100%', objectFit: 'contain' }}\r\n/>\r\n </div>\r\n {showProductName && <div style={{ \r\n textAlign: 'center',\r\n fontSize: '12px',\r\n fontWeight: '500',\r\n color: '#333',\r\n lineHeight: '1.4',\r\n height: '32px',\r\n overflow: 'hidden',\r\n display: '-webkit-box',\r\n WebkitLineClamp: 2,\r\n WebkitBoxOrient: 'vertical'\r\n }}>\r\n {typeof product.name === 'object' ? (product.name as { all: string }).all : product.name}\r\n </div>}\r\n </div>\r\n ))}\r\n </div>\r\n ) : currentLayout === 'MEDIUM' ? (\r\n <div style={{\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(3, 1fr)',\r\n gap: '16px',\r\n padding: '8px'\r\n }}>\r\n {\r\n products.map((product) => (\r\n <div\r\n key={product._id}\r\n className=\"productImageSlide\"\r\n style={{\r\n height: 'auto',\r\n borderRadius: '8px',\r\n overflow: 'hidden',\r\n border: '1px solid #eee',\r\n backgroundColor: '#fff',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: '12px',\r\n boxShadow: '0 2px 4px rgba(0,0,0,0.1)',\r\n transition: 'transform 0.2s ease',\r\n cursor: 'pointer'\r\n }}\r\n onMouseOver={(e) => {\r\n e.currentTarget.style.transform = 'translateY(-2px)';\r\n e.currentTarget.style.boxShadow = '0 4px 8px rgba(0,0,0,0.15)';\r\n }}\r\n onMouseOut={(e) => {\r\n e.currentTarget.style.transform = 'translateY(0)';\r\n e.currentTarget.style.boxShadow = '0 2px 4px rgba(0,0,0,0.1)';\r\n }}\r\n >\r\n <div style={{ \r\n height: '120px', \r\n width: '100%', \r\n display: 'flex', \r\n alignItems: 'center', \r\n justifyContent: 'center',\r\n marginBottom: '8px'\r\n }}>\r\n <img\r\n src={`${Linodeurl}${product.image?.all?.url}`}\r\n alt=\"\"\r\n style={{ width: '100%', height: '100%', objectFit: 'contain' }}\r\n/>\r\n </div>\r\n {showProductName && <div style={{ \r\n textAlign: 'center',\r\n fontSize: '14px',\r\n fontWeight: '500',\r\n color: '#333',\r\n lineHeight: '1.4',\r\n height: '40px',\r\n overflow: 'hidden',\r\n display: '-webkit-box',\r\n WebkitLineClamp: 2,\r\n WebkitBoxOrient: 'vertical'\r\n }}>\r\n {typeof product.name === 'object' ? (product.name as { all: string }).all : product.name}\r\n </div>}\r\n </div>\r\n ))}\r\n </div>\r\n ) : currentLayout === 'MEDIUM_THREE' ? (\r\n <div style={{ display: 'flex', flexDirection: 'column', gap: '16px', padding: '8px' }}>\r\n {products.length > 0 && (\r\n <div\r\n className=\"productImageSlide\"\r\n style={{\r\n height: 'auto',\r\n borderRadius: '8px',\r\n overflow: 'hidden',\r\n border: '1px solid #eee',\r\n backgroundColor: '#fff',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: '16px',\r\n boxShadow: '0 2px 4px rgba(0,0,0,0.1)',\r\n transition: 'transform 0.2s ease',\r\n cursor: 'pointer'\r\n }}\r\n onMouseOver={(e) => {\r\n e.currentTarget.style.transform = 'translateY(-2px)';\r\n e.currentTarget.style.boxShadow = '0 4px 8px rgba(0,0,0,0.15)';\r\n }}\r\n onMouseOut={(e) => {\r\n e.currentTarget.style.transform = 'translateY(0)';\r\n e.currentTarget.style.boxShadow = '0 2px 4px rgba(0,0,0,0.1)';\r\n }}\r\n >\r\n <div style={{ \r\n height: '160px', \r\n width: '100%', \r\n display: 'flex', \r\n alignItems: 'center', \r\n justifyContent: 'center',\r\n marginBottom: '12px'\r\n }}>\r\n <img\r\n src={`${Linodeurl}${products[0].image?.all?.url}`}\r\n alt=\"\"\r\n style={{ width: '100%', height: '100%', objectFit: 'contain' }}\r\n/>\r\n </div>\r\n {showProductName && <div style={{ \r\n textAlign: 'center',\r\n fontSize: '16px',\r\n fontWeight: '600',\r\n color: '#333',\r\n lineHeight: '1.4'\r\n }}>\r\n {typeof products[0].name === 'object' ? (products[0].name as { all: string }).all : products[0].name}\r\n </div>}\r\n </div>\r\n )}\r\n {products.length > 1 && (\r\n <div style={{\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(2,1fr)',\r\n gap: '16px'\r\n }}>\r\n {products.slice(1).map((product) => (\r\n <div\r\n key={product._id}\r\n className=\"productImageSlide\"\r\n style={{\r\n height: 'auto',\r\n borderRadius: '8px',\r\n overflow: 'hidden',\r\n border: '1px solid #eee',\r\n backgroundColor: '#fff',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: '12px',\r\n boxShadow: '0 2px 4px rgba(0,0,0,0.1)',\r\n transition: 'transform 0.2s ease',\r\n cursor: 'pointer'\r\n }}\r\n onMouseOver={(e) => {\r\n e.currentTarget.style.transform = 'translateY(-2px)';\r\n e.currentTarget.style.boxShadow = '0 4px 8px rgba(0,0,0,0.15)';\r\n }}\r\n onMouseOut={(e) => {\r\n e.currentTarget.style.transform = 'translateY(0)';\r\n e.currentTarget.style.boxShadow = '0 2px 4px rgba(0,0,0,0.1)';\r\n }}\r\n >\r\n <div style={{ \r\n height: '100px', \r\n width: '100%', \r\n display: 'flex', \r\n alignItems: 'center', \r\n justifyContent: 'center',\r\n marginBottom: '8px'\r\n }}>\r\n <img\r\n src={`${Linodeurl}${product.image?.all?.url}`}\r\n alt=\"\"\r\n style={{ width: '100%', height: '100%', objectFit: 'contain' }}\r\n/>\r\n </div>\r\n {showProductName && <div style={{ \r\n textAlign: 'center',\r\n fontSize: '12px',\r\n fontWeight: '500',\r\n color: '#333',\r\n lineHeight: '1.4',\r\n height: '32px',\r\n overflow: 'hidden',\r\n display: '-webkit-box',\r\n WebkitLineClamp: 2,\r\n WebkitBoxOrient: 'vertical'\r\n }}>\r\n {typeof product.name === 'object' ? (product.name as { all: string }).all : product.name}\r\n </div>}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n ) : null\r\n ) : (\r\n <div style={{\r\n textAlign: 'center',\r\n color: '#666',\r\n padding: '40px',\r\n width: '100%',\r\n border: '2px dashed #ddd',\r\n borderRadius: '8px',\r\n backgroundColor: '#f9f9f9'\r\n }}>\r\n <p>No products selected. Use settings to add products.</p>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default GroupProductComponent;","import React from 'react';\nimport '../../../src/index.css';\nimport { Linodeurl } from '../../const';\n\ninterface VideoData {\n url: string;\n type: 'Youtube' | 'Vimeo' | 'Dailymotion' | 'Video';\n controls?: boolean;\n loop?: boolean;\n alt?: string;\n thumbnail?: Record<string, unknown>;\n autoplay?: boolean;\n muted?: boolean;\n}\n\ninterface VideoModeProps {\n borderRadius: number;\n height: string;\n}\n\nexport interface VideoComponentProps {\n videos: VideoData;\n mode: {\n web: VideoModeProps;\n mobileweb: VideoModeProps;\n mobileapp: VideoModeProps;\n tablet: VideoModeProps;\n };\n}\n\ninterface VideoComponentMainProps {\n props: VideoComponentProps;\n deviceMode?: string;\n boxHeight?: string;\n}\n\nconst extractYouTubeId = (url: string): string | null => {\n try {\n const parsed = new URL(url);\n if (parsed.hostname.includes('youtu.be')) {\n return parsed.pathname.replace('/', '') || null;\n }\n if (parsed.hostname.includes('youtube.com')) {\n if (parsed.pathname.startsWith('/watch')) {\n return parsed.searchParams.get('v');\n }\n if (parsed.pathname.startsWith('/embed/')) {\n return parsed.pathname.split('/embed/')[1] || null;\n }\n }\n } catch {}\n return null;\n};\n\nconst extractVimeoId = (url: string): string | null => {\n try {\n const parsed = new URL(url);\n if (parsed.hostname.includes('vimeo.com')) {\n const parts = parsed.pathname.split('/').filter(Boolean);\n if (parts[0] === 'video') return parts[1] || null;\n return parts[0] || null;\n }\n if (parsed.hostname.includes('player.vimeo.com')) {\n const parts = parsed.pathname.split('/').filter(Boolean);\n return parts[1] || null;\n }\n } catch {}\n return null;\n};\n\nconst extractDailymotionId = (url: string): string | null => {\n try {\n const parsed = new URL(url);\n if (parsed.hostname.includes('dailymotion.com')) {\n const parts = parsed.pathname.split('/').filter(Boolean);\n if (parts[0] === 'video') return parts[1] || null;\n }\n if (parsed.hostname.includes('dai.ly')) {\n return parsed.pathname.replace('/', '') || null;\n }\n } catch {}\n return null;\n};\n\nconst VideoComponent: React.FC<VideoComponentMainProps> = ({\n props,\n deviceMode = 'web',\n boxHeight = '280px',\n}) => {\n const getCurrentMode = () => {\n switch (deviceMode) {\n case 'mobileweb':\n return props.mode.mobileweb;\n case 'mobileapp':\n return props.mode.mobileapp;\n case 'tablet':\n return props.mode.tablet;\n case 'web':\n default:\n return props.mode.web;\n }\n };\n\n const currentMode = getCurrentMode();\n const video = props.videos;\n\n const containerHeight = boxHeight;\n\n const renderPlayer = () => {\n const commonStyle: React.CSSProperties = {\n width: '100%',\n height: '100%',\n border: 0,\n borderRadius: `${currentMode.borderRadius}px`,\n objectFit: 'contain',\n };\n\n if (video.type === 'Youtube') {\n const id = extractYouTubeId(video.url);\n const src = id ? `https://www.youtube.com/embed/${id}` : video.url;\n return (\n <iframe\n title={video.alt || 'YouTube video'}\n src={src}\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n allowFullScreen\n style={commonStyle}\n />\n );\n }\n\n if (video.type === 'Vimeo') {\n const id = extractVimeoId(video.url);\n const src = id ? `https://player.vimeo.com/video/${id}` : video.url;\n return (\n <iframe\n title={video.alt || 'Vimeo video'}\n src={src}\n allow=\"autoplay; fullscreen; picture-in-picture\"\n allowFullScreen\n style={commonStyle}\n />\n );\n }\n\n if (video.type === 'Dailymotion') {\n const id = extractDailymotionId(video.url);\n const src = id ? `https://www.dailymotion.com/embed/video/${id}` : video.url;\n return (\n <iframe\n title={video.alt || 'Dailymotion video'}\n src={src}\n allow=\"autoplay; fullscreen; picture-in-picture\"\n allowFullScreen\n style={commonStyle}\n />\n );\n }\n\n // Default: normal video\n return (\n <video\n autoPlay={video.autoplay !== false}\n muted={video.muted !== false}\n playsInline\n controls={video.controls !== false}\n loop={video.loop === true}\n style={{ width: '100%', height: '100%', borderRadius: `${currentMode.borderRadius}px` }}\n poster={typeof video.thumbnail === 'string' ? video.thumbnail : undefined}\n >\n <source src={`${Linodeurl}${video.url}`} />\n </video>\n );\n };\n\n return (\n <div\n className=\"image-box\"\n style={{\n borderRadius: `${currentMode.borderRadius}px`,\n height: containerHeight,\n objectFit: 'contain',\n\n }}\n >\n {renderPlayer()}\n </div>\n );\n};\n\nexport default VideoComponent;\n","import React from 'react'\r\nimport { Linodeurl } from '../../const';\r\n\r\ninterface PageImage {\r\n\tshapeImageId: string;\r\n\tshape: string;\r\n\tisDynamic: string;\r\n\turl: string;\r\n\twidth: number;\r\n\theight: number;\r\n }\r\n \r\n interface PageId {\r\n\t_id: string;\r\n\tname: string;\r\n\tcode: string;\r\n\timage: PageImage;\r\n\tisActive: boolean;\r\n }\r\n \r\n interface Channel {\r\n\t_id: string;\r\n\tname: string;\r\n\tcode: string;\r\n\tisActive: boolean;\r\n }\r\n \r\n interface PageDataItem {\r\n\tpage_id: any;\r\n\tchannel: Channel;\r\n }\r\ninterface BrandImage {\r\n\tshapeImageId: string;\r\n\tshape: string;\r\n\tisDynamic: boolean | string;\r\n\turl: string;\r\n\twidth?: number;\r\n\theight?: number;\r\n\talt?: string;\r\n}\r\n\r\ninterface BrandItem {\r\n\t_id?: string;\r\n\tcode: string;\r\n\tname: any;\r\n\timage: BrandImage;\r\n\tpage?: string;\r\n\tpages?: PageDataItem[];\r\n}\r\n\r\ninterface GroupBrandStatic {\r\n\t_id: string;\r\n\tcode: string;\r\n\tname: string;\r\n}\r\n\r\ninterface GroupBrandDynamic {\r\n\tcode: string;\r\n\tname: { all: string };\r\n\tlist: BrandItem[];\r\n\tisActive?: boolean;\r\n}\r\n\r\ninterface GroupBrandData {\r\n\tstatic: GroupBrandStatic;\r\n\tdynamic: GroupBrandDynamic;\r\n\tshowItems:BrandItem[];\r\n}\r\n\r\ninterface HeaderTextStyle {\r\n\tfontSize: number;\r\n\tfontColor: string;\r\n\tisBold: boolean;\r\n\tisItalic: boolean;\r\n\tisUnderline: boolean;\r\n}\r\n\r\ninterface DeviceBooleanProps {\r\n\tweb: boolean;\r\n\tmobileweb: boolean;\r\n\tmobileapp: boolean;\r\n\ttablet: boolean;\r\n}\r\n\r\ninterface DeviceLayoutProps {\r\n\tweb: string;\r\n\tmobileweb: string;\r\n\tmobileapp: string;\r\n\ttablet: string;\r\n}\r\n\r\nexport interface GroupBrandComponentProps {\r\n\theaderText: any;\r\n\ttype: string;\r\n\tgroupbrand: GroupBrandData;\r\n\tshowItems?:BrandItem[];\r\n\tselectedBrands?: BrandItem[];\r\n\titems?: BrandItem[];\r\n\tcardColor: string;\r\n\tshowProductName: DeviceBooleanProps;\r\n\theaderTextStyle: HeaderTextStyle;\r\n\tlayout: DeviceLayoutProps;\r\n\tstyle: DeviceLayoutProps;\r\n\tshowHeader: DeviceBooleanProps;\r\n\tisHorizontalScroll: DeviceBooleanProps;\r\n\theaderBackground: string;\r\n}\r\n\r\ninterface GroupBrandComponentMainProps {\r\n\tprops: GroupBrandComponentProps;\r\n\tdeviceMode?: string;\r\n}\r\n\r\nconst GroupBrandComponent: React.FC<GroupBrandComponentMainProps> = ({ props, deviceMode = 'web' }) => {\r\n\tconst getCurrentBooleanProp = (prop?: DeviceBooleanProps) => {\r\n\t\tif (!prop) return false;\r\n\t\tswitch (deviceMode) {\r\n\t\t\tcase 'mobileweb': return !!prop.mobileweb;\r\n\t\t\tcase 'mobileapp': return !!prop.mobileapp;\r\n\t\t\tcase 'tablet': return !!prop.tablet;\r\n\t\t\tcase 'web':\r\n\t\t\tdefault: return !!prop.web;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getCurrentLayout = () => {\r\n\t\t// Safely fall back to web, then to 'NONE' if the specific layout is missing\r\n\t\tif (!props.layout) return 'NONE';\r\n\t\tswitch (deviceMode) {\r\n\t\t\tcase 'mobileweb': return props.layout.mobileweb || 'NONE';\r\n\t\t\tcase 'mobileapp': return props.layout.mobileapp || 'NONE';\r\n\t\t\tcase 'tablet': return props.layout.tablet || 'NONE';\r\n\t\t\tcase 'web':\r\n\t\t\tdefault: return props.layout.web || 'NONE';\r\n\t\t}\r\n\t};\r\n\r\n\t\r\n\r\n\tconst showHeader = getCurrentBooleanProp(props.showHeader);\r\n\tconst showBrandName = getCurrentBooleanProp(props.showProductName);\r\n\tconst isHorizontalScroll = getCurrentBooleanProp(props.isHorizontalScroll);\r\n\tconst currentLayout = getCurrentLayout();\r\n\tconst currentStyle = 'NONE'\r\n\r\n\tconst getBrands = (): BrandItem[] => {\r\n\t\tif (props.groupbrand?.showItems) {\r\n\t\t\t// if (props.items && props.items.length) return props.items;\r\n\t\t\tif (props.groupbrand?.showItems?.length) return props.groupbrand?.showItems;\r\n\t\t}\r\n\t\t// if (props.selectedBrands && props.selectedBrands.length) return props.selectedBrands;\r\n\t\treturn [];\r\n\t};\r\n\r\n\tconst brands = getBrands();\r\n\r\n\t// Carousel navigation buttons (layout NONE)\r\n\tconst scrollLeft = () => {\r\n\t\tconst carousel = document.querySelector('.groupBrandCarousel');\r\n\t\tif (carousel) {\r\n\t\t\t(carousel as HTMLElement).scrollBy({ left: -200, behavior: 'smooth' });\r\n\t\t}\r\n\t};\r\n\r\n\tconst scrollRight = () => {\r\n\t\tconst carousel = document.querySelector('.groupBrandCarousel');\r\n\t\tif (carousel) {\r\n\t\t\t(carousel as HTMLElement).scrollBy({ left: 200, behavior: 'smooth' });\r\n\t\t}\r\n\t};\r\n\r\n\tconst getImageUrl = (url: string) => {\r\n\t\tif (!url) return '';\r\n\t\tif (url.startsWith('http://') || url.startsWith('https://')) return url;\r\n\t\treturn `${Linodeurl}${url}`;\r\n\t};\r\n\r\n\tconst buildBrandHref = (item: BrandItem): string | null => {\r\n\t\tconsole.log(item);\r\n\t\t\r\n\t\t// Check if item has pages and at least one page exists\r\n\t\tif (item.pages && item.pages.length > 0) {\r\n\t\t\tconst firstPage = item.pages[0];\r\n\t\t\t\r\n\t\t\t// Check if the page is active\r\n\t\t\t\tconsole.log(firstPage.page_id?._id);\r\n\t\t\t\t// If page is active, use the brand page format\r\n\t\t\t\treturn `/page/${encodeURIComponent(firstPage.page_id)}`;\r\n\t\t\t\r\n\t\t}\r\n\t\t\r\n\t\t// Fallback if no pages exist\r\n\t\treturn null;\r\n\t};\r\n\r\n\tconst Card = ({ item, large = false }: { item: BrandItem; large?: boolean }) => (\r\n\t\t<a\r\n\t\t\thref={buildBrandHref(item)|| undefined}\r\n\t\t\tstyle={{ textDecoration: 'none', color: 'inherit' }}\r\n\t\t>\r\n\t\t\t<div\r\n\t\t\t\tclassName=\"brandCard\"\r\n\t\t\t\tstyle={{\r\n\t\t\t\t\theight: 'auto',\r\n\t\t\t\t\tborderRadius: '8px',\r\n\t\t\t\t\toverflow: 'hidden',\r\n\t\t\t\t\tborder: '1px solid #eee',\r\n\t\t\t\t\tbackgroundColor: '#fff',\r\n\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\tflexDirection: 'column',\r\n\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\tjustifyContent: 'center',\r\n\t\t\t\t\tpadding: large ? '16px' : '12px',\r\n\t\t\t\t\tboxShadow: '0 2px 4px rgba(0,0,0,0.1)',\r\n\t\t\t\t\ttransition: 'transform 0.2s ease',\r\n\t\t\t\t\tcursor: 'pointer'\r\n\t\t\t\t}}\r\n\t\t\t\tonMouseOver={(e) => {\r\n\t\t\t\t\t(e.currentTarget as HTMLDivElement).style.transform = 'translateY(-2px)';\r\n\t\t\t\t\t(e.currentTarget as HTMLDivElement).style.boxShadow = '0 4px 8px rgba(0,0,0,0.15)';\r\n\t\t\t\t}}\r\n\t\t\t\tonMouseOut={(e) => {\r\n\t\t\t\t\t(e.currentTarget as HTMLDivElement).style.transform = 'translateY(0)';\r\n\t\t\t\t\t(e.currentTarget as HTMLDivElement).style.boxShadow = '0 2px 4px rgba(0,0,0,0.1)';\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t<div style={{ height: large ? '160px' : '120px', width: '100%', display: 'flex', alignItems: 'center', justifyContent: 'center', marginBottom: large ? '12px' : '8px' }}>\r\n\t\t\t\t\t<img src={getImageUrl(item.image.url)} alt={item.image.alt || ''} style={{ width: '100%', height: '100%', objectFit: 'contain' }} />\r\n\t\t\t\t</div>\r\n\t\t\t\t{showBrandName && (\r\n\t\t\t\t\t<div style={{ textAlign: 'center', fontSize: large ? '16px' : '14px', fontWeight: large ? 600 as any : 500 as any, color: '#333', lineHeight: '1.4', height: large ? 'auto' : '40px', overflow: 'hidden', display: large ? 'block' : '-webkit-box', WebkitLineClamp: large ? undefined as any : 2, WebkitBoxOrient: 'vertical' as any }}>\r\n\t\t\t\t\t\t{item.name}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\t\t\t</div>\r\n\t\t</a>\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tstyle={{\r\n\t\t\t\tborder: '1px solid #e1e1e1',\r\n\t\t\t\twidth: '100%',\r\n\t\t\t\tmaxWidth: '100%',\r\n\t\t\t\tborderRadius: '0px',\r\n\t\t\t\tminHeight: '100px',\r\n\t\t\t\tposition: 'relative',\r\n\t\t\t\toverflow: 'hidden',\r\n\t\t\t\tmarginBottom: '20px',\r\n\t\t\t\tmarginTop: '0px'\r\n\t\t\t}}\r\n\t\t\tclassName='GroupBrandComponent'\r\n\t\t>\r\n\t\t\t{showHeader && (\r\n\t\t\t\t<div\r\n\t\t\t\t\tclassName=\"groupBrandHeader\"\r\n\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\tbackgroundColor: props.headerBackground,\r\n\t\t\t\t\t\tpadding: '12px 16px',\r\n\t\t\t\t\t\tborderRadius: '0px',\r\n\t\t\t\t\t\tmarginBottom: '4px',\r\n\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\tjustifyContent: 'space-between',\r\n\t\t\t\t\t\tflexWrap: 'wrap',\r\n\t\t\t\t\t\tgap: '12px',\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t<p style={{\r\n\t\t\t\t\t\tcolor: props.headerTextStyle.fontColor,\r\n\t\t\t\t\t\tfontSize: `${props.headerTextStyle.fontSize}px`,\r\n\t\t\t\t\t\tfontWeight: props.headerTextStyle.isBold ? 'bold' : 'normal',\r\n\t\t\t\t\t\tfontStyle: props.headerTextStyle.isItalic ? 'italic' : 'normal',\r\n\t\t\t\t\t\ttextDecoration: props.headerTextStyle.isUnderline ? 'underline' : 'none',\r\n\t\t\t\t\t\tmargin: 0\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\t\t{props.headerText || 'Brands'}\r\n\t\t\t\t\t</p>\r\n\r\n\t\t\t\t\t{currentLayout === 'NONE' && brands.length > 0 && (\r\n\t\t\t\t\t\t<div style={{ display: 'flex', gap: '8px' }}>\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\tonClick={scrollLeft}\r\n\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\twidth: '32px',\r\n\t\t\t\t\t\t\t\t\theight: '32px',\r\n\t\t\t\t\t\t\t\t\tborderRadius: '50%',\r\n\t\t\t\t\t\t\t\t\tborder: '1px solid #ddd',\r\n\t\t\t\t\t\t\t\t\tbackgroundColor: '#fff',\r\n\t\t\t\t\t\t\t\t\tcursor: 'pointer',\r\n\t\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\r\n\t\t\t\t\t\t\t\t\tfontSize: '16px',\r\n\t\t\t\t\t\t\t\t\tfontWeight: 'bold'\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tonMouseOver={(e) => { e.currentTarget.style.backgroundColor = '#f8f9fa'; }}\r\n\t\t\t\t\t\t\t\tonMouseOut={(e) => { e.currentTarget.style.backgroundColor = '#fff'; }}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t‹\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\tonClick={scrollRight}\r\n\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\twidth: '32px',\r\n\t\t\t\t\t\t\t\t\theight: '32px',\r\n\t\t\t\t\t\t\t\t\tborderRadius: '50%',\r\n\t\t\t\t\t\t\t\t\tborder: '1px solid #ddd',\r\n\t\t\t\t\t\t\t\t\tbackgroundColor: '#fff',\r\n\t\t\t\t\t\t\t\t\tcursor: 'pointer',\r\n\t\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\r\n\t\t\t\t\t\t\t\t\tfontSize: '16px',\r\n\t\t\t\t\t\t\t\t\tfontWeight: 'bold'\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tonMouseOver={(e) => { e.currentTarget.style.backgroundColor = '#f8f9fa'; }}\r\n\t\t\t\t\t\t\t\tonMouseOut={(e) => { e.currentTarget.style.backgroundColor = '#fff'; }}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t›\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</div>\r\n\t\t\t)}\r\n\r\n\t\t\t<div\r\n\t\t\t\tstyle={{\r\n\t\t\t\t\tdisplay: currentLayout === 'NONE' ? 'flex' : 'block',\r\n\t\t\t\t\toverflowX: currentLayout === 'NONE' ? (isHorizontalScroll ? 'auto' : 'hidden') : 'visible',\r\n\t\t\t\t\tgap: currentLayout === 'NONE' ? '12px' : '0',\r\n\t\t\t\t\tpadding: '12px',\r\n\t\t\t\t\tscrollBehavior: 'smooth',\r\n\t\t\t\t\tbackgroundColor: props.cardColor || '#fff',\r\n\t\t\t\t\tscrollbarWidth: 'thin',\r\n\t\t\t\t\tborderRadius: '8px',\r\n\t\t\t\t\tposition: 'relative',\r\n\t\t\t\t\tscrollbarColor: '#c1c1c1 transparent'\r\n\t\t\t\t}}\r\n\t\t\t\tclassName=\"groupBrandCarousel\"\r\n\t\t\t>\r\n\t\t\t\t{brands.length > 0 ? (\r\n\t\t\t\t\tcurrentLayout === 'NONE' ? (\r\n\t\t\t\t\t\tbrands.map((brand) => (\r\n\t\t\t\t\t\t\tcurrentStyle === 'NONE' ? (\r\n\t\t\t\t\t\t\t\t<div key={brand.code} style={{ minWidth: '150px' }}>\r\n\t\t\t\t\t\t\t\t\t<Card item={brand} />\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t<div key={brand.code} style={{ minWidth: '150px' }}>\r\n\t\t\t\t\t\t\t\t\t<Card item={brand} />\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t))\r\n\t\t\t\t\t) : currentLayout === 'SMALL' ? (\r\n\t\t\t\t\t\t<div style={{ display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)', gap: '16px', padding: '8px' }}>\r\n\t\t\t\t\t\t\t{brands.map((brand) => (\r\n\t\t\t\t\t\t\t\t<Card key={brand.code} item={brand} />\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t) : currentLayout === 'MEDIUM' ? (\r\n\t\t\t\t\t\t<div style={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: '16px', padding: '8px' }}>\r\n\t\t\t\t\t\t\t{brands.map((brand) => (\r\n\t\t\t\t\t\t\t\t<Card key={brand.code} item={brand} />\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t) : currentLayout === 'MEDIUM_THREE' ? (\r\n\t\t\t\t\t\t<div style={{ display: 'flex', flexDirection: 'column', gap: '16px', padding: '8px' }}>\r\n\t\t\t\t\t\t\t{brands.length > 0 && (\r\n\t\t\t\t\t\t\t\t<Card item={brands[0]} large />\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{brands.length > 1 && (\r\n\t\t\t\t\t\t\t\t<div style={{ display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)', gap: '16px' }}>\r\n\t\t\t\t\t\t\t\t\t{brands.slice(1).map((brand) => (\r\n\t\t\t\t\t\t\t\t\t\t<Card key={brand.code} item={brand} />\r\n\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t) : null\r\n\t\t\t\t) : (\r\n\t\t\t\t\t<div style={{ textAlign: 'center', color: '#666', padding: '40px', width: '100%', border: '2px dashed #ddd', borderRadius: '8px', backgroundColor: '#f9f9f9' }}>\r\n\t\t\t\t\t\t<p>No brands available.</p>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nexport default GroupBrandComponent","(typeof document !== \"undefined\") && (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 var setWebWorker = function setWebWorker(flag) {\n _useWebWorker = !!flag;\n };\n var getWebWorker = function getWebWorker() {\n return _useWebWorker;\n };\n var setLocationHref = function setLocationHref(value) {\n locationHref = value;\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 for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype;\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n }\n }\n }\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop);\n }\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n ProxyFunction.prototype = prototype;\n return ProxyFunction;\n }\n\n // import Howl from '../../3rd_party/howler';\n\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 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 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 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 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 if (window.Howl) {\n return new window.Howl({\n src: [assetPath]\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 this._updateVolume();\n },\n mute: function mute() {\n this._isMuted = true;\n this._updateVolume();\n },\n unmute: function unmute() {\n this._isMuted = false;\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 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 switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1;\n break;\n default:\n value = 1.1;\n break;\n }\n for (i = 0; i < len; i += 1) {\n arr.push(value);\n }\n return arr;\n }\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len);\n }\n if (type === 'int16') {\n return new Int16Array(len);\n }\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len);\n }\n return createRegularArray(type, len);\n }\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory;\n }\n return createRegularArray;\n }();\n function createSizedArray(len) {\n return Array.apply(null, {\n length: len\n });\n }\n\n function _typeof$6(o) { \"@babel/helpers - typeof\"; return _typeof$6 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$6(o); }\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 (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 for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\n }\n })();\n function ProjectInterface$1() {\n return {};\n }\n BMMath.random = Math.random;\n BMMath.abs = function (val) {\n var tOfVal = _typeof$6(val);\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length);\n var i;\n var len = val.length;\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i]);\n }\n return absArr;\n }\n return Math.abs(val);\n };\n var defaultCurveSegments = 150;\n var degToRads = Math.PI / 180;\n var roundCorner = 0.5519;\n function roundValues(flag) {\n _shouldRoundValues = !!flag;\n }\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value);\n }\n return value;\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 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 function BMCompleteEvent(type, frameMultiplier) {\n this.type = type;\n this.direction = frameMultiplier < 0 ? -1 : 1;\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 function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type;\n this.firstFrame = firstFrame;\n this.totalFrames = totalFrames;\n }\n function BMDestroyEvent(type, target) {\n this.type = type;\n this.target = target;\n }\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError';\n this.nativeError = nativeError;\n this.currentTime = currentTime;\n }\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError';\n this.nativeError = nativeError;\n }\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type;\n this.nativeError = nativeError;\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 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 switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n default:\n break;\n }\n return [r, g, b];\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 switch (max) {\n case min:\n h = 0;\n break;\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n default:\n break;\n }\n return [h, s, v];\n }\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[1] += offset;\n if (hsv[1] > 1) {\n hsv[1] = 1;\n } else if (hsv[1] <= 0) {\n hsv[1] = 0;\n }\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[2] += offset;\n if (hsv[2] > 1) {\n hsv[2] = 1;\n } else if (hsv[2] < 0) {\n hsv[2] = 0;\n }\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\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 if (hsv[0] > 1) {\n hsv[0] -= 1;\n } else if (hsv[0] < 0) {\n hsv[0] += 1;\n }\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n var rgbToHex = function () {\n var colorMap = [];\n var i;\n var hex;\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16);\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n }\n return function (r, g, b) {\n if (r < 0) {\n r = 0;\n }\n if (g < 0) {\n g = 0;\n }\n if (b < 0) {\n b = 0;\n }\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n };\n }();\n var setSubframeEnabled = function setSubframeEnabled(flag) {\n subframeEnabled = !!flag;\n };\n var getSubframeEnabled = function getSubframeEnabled() {\n return subframeEnabled;\n };\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\n expressionsPlugin = value;\n };\n var getExpressionsPlugin = function getExpressionsPlugin() {\n return expressionsPlugin;\n };\n var setExpressionInterfaces = function setExpressionInterfaces(value) {\n expressionsInterfaces = value;\n };\n var getExpressionInterfaces = function getExpressionInterfaces() {\n return expressionsInterfaces;\n };\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n defaultCurveSegments = value;\n };\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\n return defaultCurveSegments;\n };\n var setIdPrefix = function setIdPrefix(value) {\n idPrefix$1 = value;\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(o) { \"@babel/helpers - typeof\"; return _typeof$5 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$5(o); }\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 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 });\n // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n var url = URL.createObjectURL(blob);\n return new Worker(url);\n }\n workerFn = fn;\n return workerProxy;\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 for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true;\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\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 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 if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\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 function completeChars(chars, assets) {\n if (chars) {\n var i = 0;\n var len = chars.length;\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);\n // 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 completeLayers(chars[i].data.layers, assets);\n }\n }\n }\n }\n function findComp(id, comps) {\n var i = 0;\n var len = comps.length;\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i];\n }\n i += 1;\n }\n return null;\n }\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps);\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true;\n return comp.layers;\n }\n return JSON.parse(JSON.stringify(comp.layers));\n }\n return null;\n }\n function completeShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\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 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 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 function convertPathsToAbsoluteValues(path) {\n var i;\n var len = path.i.length;\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 function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n if (minimum[0] > animVersion[0]) {\n return true;\n }\n if (animVersion[0] > minimum[0]) {\n return false;\n }\n if (minimum[1] > animVersion[1]) {\n return true;\n }\n if (animVersion[1] > minimum[1]) {\n return false;\n }\n if (minimum[2] > animVersion[2]) {\n return true;\n }\n if (animVersion[2] > minimum[2]) {\n return false;\n }\n return null;\n }\n var checkText = function () {\n var minimumVersion = [4, 4, 14];\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 function iterateLayers(layers) {\n var i;\n var len = layers.length;\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\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 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 for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i];\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 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 var checkPathProperties = function () {\n var minimumVersion = [5, 7, 15];\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p;\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a\n };\n }\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p\n };\n }\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r\n };\n }\n }\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\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 var checkColors = function () {\n var minimumVersion = [4, 1, 9];\n function iterateShapes(shapes) {\n var i;\n var len = shapes.length;\n var j;\n var jLen;\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 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 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 function iterateLayers(layers) {\n var i;\n var len = layers.length;\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes);\n }\n }\n }\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\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 var checkShapes = function () {\n var minimumVersion = [4, 4, 18];\n function completeClosingShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\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 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 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 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 for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\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 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 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 if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes);\n }\n }\n }\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\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 function completeData(animationData) {\n if (animationData.__complete) {\n return;\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 function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {\n // data.singleShape = true;\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 if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager();\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 if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response;\n }\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\n return xhr.response;\n }\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response);\n }\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText);\n }\n return null;\n }\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response;\n var xhr = new XMLHttpRequest();\n // set responseType after calling open or IE will break.\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json';\n } catch (err) {} // eslint-disable-line no-empty\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 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 xhr.send();\n }\n return {\n load: loadAsset\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 _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 _workerSelf.dataManager.completeData(animation);\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 workerInstance.onmessage = function (event) {\n var data = event.data;\n var id = data.id;\n var process = processes[id];\n processes[id] = null;\n if (data.status === 'success') {\n process.onComplete(data.payload);\n } else if (process.onError) {\n process.onError();\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 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 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 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 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 function imageLoaded() {\n this.loadedAssets += 1;\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n function footageLoaded() {\n this.loadedFootagesCount += 1;\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = '';\n if (assetData.e) {\n path = assetData.p;\n } else if (assetsPath) {\n var imagePath = assetData.p;\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n path = assetsPath + imagePath;\n } else {\n path = originalPath;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n return path;\n }\n function testImageLoaded(img) {\n var _count = 0;\n var intervalId = setInterval(function () {\n var box = img.getBBox();\n if (box.width || _count > 500) {\n this._imageLoaded();\n clearInterval(intervalId);\n }\n _count += 1;\n }.bind(this), 50);\n }\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createNS('image');\n if (isSafari) {\n this.testImageLoaded(img);\n } else {\n img.addEventListener('load', this._imageLoaded, false);\n }\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n this._imageLoaded();\n }.bind(this), false);\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n if (this._elementHelper.append) {\n this._elementHelper.append(img);\n } else {\n this._elementHelper.appendChild(img);\n }\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\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 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 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 this._footageLoaded();\n }.bind(this), function () {\n ob.img = {};\n this._footageLoaded();\n }.bind(this));\n return ob;\n }\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb;\n var i;\n var len = assets.length;\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 function setPath(path) {\n this.path = path || '';\n }\n function setAssetsPath(path) {\n this.assetsPath = path || '';\n }\n function getAsset(assetData) {\n var i = 0;\n var len = this.images.length;\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img;\n }\n i += 1;\n }\n return null;\n }\n function destroy() {\n this.imagesLoadedCb = null;\n this.images.length = 0;\n }\n function loadedImages() {\n return this.totalImages === this.loadedAssets;\n }\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount;\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 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 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 BaseEvent.prototype = {\n triggerEvent: function triggerEvent(eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName];\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 this._cbs[eventName].push(callback);\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 while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1);\n i -= 1;\n len -= 1;\n }\n i += 1;\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 for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':');\n if (line.length === 2) {\n keys[line[0]] = line[1].trim();\n keysCount += 1;\n }\n }\n if (keysCount === 0) {\n throw new Error();\n }\n return keys;\n }\n return function (_markers) {\n var markers = [];\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 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 markers.push(markerData);\n }\n return markers;\n };\n }();\n\n var ProjectInterface = function () {\n function registerComposition(comp) {\n this.compositions.push(comp);\n }\n return function () {\n function _thisProjectFunction(name) {\n var i = 0;\n var len = this.compositions.length;\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 return this.compositions[i].compInterface;\n }\n i += 1;\n }\n return null;\n }\n _thisProjectFunction.compositions = [];\n _thisProjectFunction.currentFrame = 0;\n _thisProjectFunction.registerComposition = registerComposition;\n return _thisProjectFunction;\n };\n }();\n\n var renderers = {};\n var registerRenderer = function registerRenderer(key, value) {\n renderers[key] = value;\n };\n function getRenderer(key) {\n return renderers[key];\n }\n function getRegisteredRenderer() {\n // Returns canvas by default for compatibility\n if (renderers.canvas) {\n return 'canvas';\n }\n // Returns any renderer that is registered\n for (var key in renderers) {\n if (renderers[key]) {\n return key;\n }\n }\n return '';\n }\n\n function _typeof$4(o) { \"@babel/helpers - typeof\"; return _typeof$4 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$4(o); }\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 extendPrototype([BaseEvent], AnimationItem);\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container;\n }\n var animType = 'svg';\n if (params.animType) {\n animType = params.animType;\n } else if (params.renderer) {\n animType = params.renderer;\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 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 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 if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory);\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 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 AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed');\n };\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation);\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 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 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 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 if (prerender === 'false') {\n params.prerender = false;\n }\n if (!params.path) {\n this.trigger('destroy');\n } else {\n this.setParams(params);\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 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 for (j = 0; j < jLen; j += 1) {\n i = 0;\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j];\n break;\n }\n i += 1;\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 if (data.assets) {\n len = data.assets.length;\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i]);\n }\n }\n this.animationData.__complete = false;\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n };\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data;\n var expressionsPlugin = getExpressionsPlugin();\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n this.loadNextSegment();\n };\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments;\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready');\n this.timeCompleted = this.totalFrames;\n return;\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 AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments;\n if (!segments) {\n this.timeCompleted = this.totalFrames;\n }\n this.loadNextSegment();\n };\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images');\n this.checkLoaded();\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 AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return;\n }\n try {\n this.animationData = animData;\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 this.renderer.configAnimation(animData);\n if (!animData.assets) {\n animData.assets = [];\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 if (this.isPaused) {\n this.audioController.pause();\n }\n } catch (error) {\n this.triggerConfigError(error);\n }\n };\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return;\n }\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded();\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\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 if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n this.renderer.initItems();\n setTimeout(function () {\n this.trigger('DOMLoaded');\n }.bind(this), 0);\n this.gotoFrame();\n if (this.autoplay) {\n this.play();\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 var _height = typeof height === 'number' ? height : undefined;\n this.renderer.updateContainerSize(_width, _height);\n };\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag;\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 this.trigger('enterFrame');\n this.renderFrame();\n this.trigger('drawnFrame');\n };\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return;\n }\n try {\n if (this.expressionsPlugin) {\n this.expressionsPlugin.resetFrame();\n }\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n } catch (error) {\n this.triggerRenderFrameError(error);\n }\n };\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return;\n }\n if (this.isPaused === true) {\n this.isPaused = false;\n this.trigger('_play');\n this.audioController.resume();\n if (this._idle) {\n this._idle = false;\n this.trigger('_active');\n }\n }\n };\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return;\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 AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n if (this.isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n };\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return;\n }\n this.pause();\n this.playCount = 0;\n this._completedLoop = false;\n this.setCurrentRawFrameValue(0);\n };\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker;\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i];\n if (marker.payload && marker.payload.name === markerName) {\n return marker;\n }\n }\n return null;\n };\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n var numValue = Number(value);\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\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 this.pause();\n };\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n var numValue = Number(value);\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\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 this.play();\n };\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return;\n }\n var nextValue = this.currentRawFrame + value * this.frameModifier;\n var _isComplete = false;\n // 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 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 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 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 if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue);\n this.pause();\n this.trigger('complete');\n }\n };\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0;\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 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 this.totalFrames = arr[1] - arr[0];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[0];\n this.setCurrentRawFrameValue(0.001 + offset);\n }\n this.trigger('segmentStart');\n };\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1;\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 this.firstFrame = init;\n this.totalFrames = end - init;\n this.timeCompleted = this.totalFrames;\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true);\n }\n };\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0;\n }\n if (_typeof$4(arr[0]) === 'object') {\n var i;\n var len = arr.length;\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i]);\n }\n } else {\n this.segments.push(arr);\n }\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0);\n }\n if (this.isPaused) {\n this.play();\n }\n };\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0;\n this.segments.push([this.animationData.ip, this.animationData.op]);\n if (forceFlag) {\n this.checkSegments(0);\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 return false;\n };\n AnimationItem.prototype.destroy = function (name) {\n if (name && this.name !== name || !this.renderer) {\n return;\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 AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value;\n this.gotoFrame();\n };\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val;\n this.updaFrameModifier();\n };\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1;\n this.updaFrameModifier();\n };\n AnimationItem.prototype.setLoop = function (isLooping) {\n this.loop = isLooping;\n };\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return;\n }\n this.audioController.setVolume(val);\n };\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume();\n };\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n this.audioController.mute();\n };\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n this.audioController.unmute();\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 AnimationItem.prototype.getPath = function () {\n return this.path;\n };\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = '';\n if (assetData.e) {\n path = assetData.p;\n } else if (this.assetsPath) {\n var imagePath = assetData.p;\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n path = this.assetsPath + imagePath;\n } else {\n path = this.path;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n return path;\n };\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0;\n var len = this.assets.length;\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i];\n }\n i += 1;\n }\n return null;\n };\n AnimationItem.prototype.hide = function () {\n this.renderer.hide();\n };\n AnimationItem.prototype.show = function () {\n this.renderer.show();\n };\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\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) {\n // TODO: decide how to handle catch case\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 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 case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n break;\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n break;\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n break;\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this));\n break;\n default:\n this.triggerEvent(name);\n }\n }\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n }\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n }\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n }\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n }\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\n }\n };\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\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 function removeElement(ev) {\n var i = 0;\n var animItem = ev.target;\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1);\n i -= 1;\n len -= 1;\n if (!animItem.isPaused) {\n subtractPlayingCount();\n }\n }\n i += 1;\n }\n }\n function registerAnimation(element, animationData) {\n if (!element) {\n return null;\n }\n var i = 0;\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation;\n }\n i += 1;\n }\n var animItem = new AnimationItem();\n setupAnimation(animItem, element);\n animItem.setData(element, animationData);\n return animItem;\n }\n function getRegisteredAnimations() {\n var i;\n var lenAnims = registeredAnimations.length;\n var animations = [];\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation);\n }\n return animations;\n }\n function addPlayingCount() {\n playingAnimationsNum += 1;\n activate();\n }\n function subtractPlayingCount() {\n playingAnimationsNum -= 1;\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 function loadAnimation(params) {\n var animItem = new AnimationItem();\n setupAnimation(animItem, null);\n animItem.setParams(params);\n return animItem;\n }\n function setSpeed(val, animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation);\n }\n }\n function setDirection(val, animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation);\n }\n }\n function play(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation);\n }\n }\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime;\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime);\n }\n initTime = nowTime;\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume);\n } else {\n _stopped = true;\n }\n }\n function first(nowTime) {\n initTime = nowTime;\n window.requestAnimationFrame(resume);\n }\n function pause(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation);\n }\n }\n function goToAndStop(value, isFrame, animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n }\n }\n function stop(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation);\n }\n }\n function togglePause(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation);\n }\n }\n function destroy(animation) {\n var i;\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation);\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 for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer);\n }\n registerAnimation(animElements[i], animationData);\n }\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg';\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 function resize() {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize();\n }\n }\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first);\n _stopped = false;\n }\n }\n }\n function freeze() {\n _isFrozen = true;\n }\n function unfreeze() {\n _isFrozen = false;\n activate();\n }\n function setVolume(val, animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation);\n }\n }\n function mute(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation);\n }\n }\n function unmute(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation);\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;\n // moduleOb.start = start;\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 /**\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n *\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\n * Usage:\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\n *\n */\n\n var ob = {};\n ob.getBezierEasing = getBezierEasing;\n var beziers = {};\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n if (beziers[str]) {\n return beziers[str];\n }\n var bezEasing = new BezierEasing([a, b, c, d]);\n beziers[str] = bezEasing;\n return bezEasing;\n }\n\n // These values are established by empiricism with tests (tradeoff: performance VS precision)\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 function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n function C(aA1) {\n return 3.0 * aA1;\n }\n\n // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n }\n\n // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\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 function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\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 return currentT;\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 return aGuessT;\n }\n\n /**\n * points is an array of [ mX1, mY1, mX2, mY2 ]\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 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 if (x === 0) return 0;\n if (x === 1) return 1;\n return calcBezier(this._getTForX(x), mY1, mY2);\n },\n // Private part\n\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 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 for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n },\n /**\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\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 for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n\n // Interpolate to provide an initial guess for t\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 if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n if (initialSlope === 0.0) {\n return guessForT;\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 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 function newElement() {\n var element;\n if (_length) {\n _length -= 1;\n element = pool[_length];\n } else {\n element = _create();\n }\n return element;\n }\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n if (_release) {\n _release(element);\n }\n pool[_length] = element;\n _length += 1;\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 return poolFactory(8, create);\n }();\n\n var segmentsLengthPool = function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0\n };\n }\n function release(element) {\n var i;\n var len = element.lengths.length;\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i]);\n }\n element.lengths.length = 0;\n }\n return poolFactory(8, create, release);\n }();\n\n function bezFunction() {\n var math = Math;\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 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 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 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 return diffDist > -0.0001 && diffDist < 0.0001;\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 for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1);\n ptDistance = 0;\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 if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n lastPoint[i] = point[i];\n }\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n }\n lengthData.percents[k] = perc;\n lengthData.lengths[k] = addedLength;\n }\n lengthData.addedLength = addedLength;\n return lengthData;\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 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 if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n totalLength += lengths[i].addedLength;\n }\n segmentsLength.totalLength = totalLength;\n return segmentsLength;\n }\n function BezierData(length) {\n this.segmentLength = 0;\n this.points = new Array(length);\n }\n function PointData(partial, point) {\n this.partialLength = partial;\n this.point = point;\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 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 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 var bezierData = new BezierData(curveSegments);\n len = pt3.length;\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len);\n perc = k / (curveSegments - 1);\n ptDistance = 0;\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 if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n }\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n bezierData.points[k] = new PointData(ptDistance, point);\n lastPoint = point;\n }\n bezierData.segmentLength = addedLength;\n storedData[bezierName] = bezierData;\n }\n return storedData[bezierName];\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 if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos];\n }\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\n var flag = true;\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 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 flag = false;\n }\n }\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\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 var bezierSegmentPoints = createTypedArray('float32', 8);\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 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 var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\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 var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\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 var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\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 var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n var t1t1t1 = t1 * t1 * t1;\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 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 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 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 return bezierSegmentPoints;\n }\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D\n };\n }\n var bez = bezFunction();\n\n var initFrame = initialDefaultFrame;\n var mathAbs = Math.abs;\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime;\n var newValue;\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length);\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 while (flag) {\n keyData = this.keyframes[i];\n nextKeyData = this.keyframes[i + 1];\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData;\n }\n iterationIndex = 0;\n break;\n }\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i;\n break;\n }\n if (i < len - 1) {\n i += 1;\n } else {\n iterationIndex = 0;\n flag = false;\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 if (keyData.to) {\n if (!keyframeMetadata.bezierData) {\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n }\n var bezierData = keyframeMetadata.bezierData;\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n kLen = bezierData.points[ind].point.length;\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k];\n }\n // caching._lastKeyframeIndex = -1;\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 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 while (flag) {\n addedLength += bezierData.points[j].partialLength;\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length;\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k];\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 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 break;\n }\n if (j < jLen - 1) {\n j += 1;\n } else {\n flag = false;\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 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 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 perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\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 if (this.propType === 'multidimensional') {\n newValue[i] = keyValue;\n } else {\n newValue = keyValue;\n }\n }\n }\n }\n caching.lastIndex = iterationIndex;\n return newValue;\n }\n\n // based on @Toji's https://github.com/toji/gl-matrix/\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 if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\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 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 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 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 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 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 var renderResult = this.interpolateValue(frameNum, this._caching);\n this.pv = renderResult;\n }\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n function setVValue(val) {\n var multipliedValue;\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult;\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 while (i < len) {\n multipliedValue = val[i] * this.mult;\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue;\n this._mdf = true;\n }\n i += 1;\n }\n }\n }\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return;\n }\n if (this.lock) {\n this.setVValue(this.pv);\n return;\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 for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n this.setVValue(finalValue);\n this._isFirstFrame = false;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\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 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 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 this._isFirstFrame = true;\n this.effectsSequence = [];\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\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 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 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 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 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 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 for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame;\n this.pv[i] = initFrame;\n }\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: createTypedArray('float32', arrLen)\n };\n this.addEffect = addEffect;\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 var p;\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 case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n break;\n default:\n break;\n }\n }\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p);\n }\n return p;\n }\n var ob = {\n getProp: getProp\n };\n return ob;\n }();\n\n function DynamicPropertyContainer() {}\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 for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\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 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 ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed;\n this.setLength(len);\n var i = 0;\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 ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength();\n }\n this._length = len;\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 ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr;\n this._length = Math.max(this._length, pos + 1);\n if (this._length >= this._maxLength) {\n this.doubleArrayLength();\n }\n switch (type) {\n case 'v':\n arr = this.v;\n break;\n case 'i':\n arr = this.i;\n break;\n case 'o':\n arr = this.o;\n break;\n default:\n arr = [];\n break;\n }\n if (!arr[pos] || arr[pos] && !replace) {\n arr[pos] = pointPool.newElement();\n }\n arr[pos][0] = x;\n arr[pos][1] = y;\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 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 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 var cnt = this._length - 1;\n var len = this._length;\n var i;\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 return newPath;\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 function release(shapePath) {\n var len = shapePath._length;\n var i;\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 shapePath._length = 0;\n shapePath.c = false;\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 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 return cloned;\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 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 this.shapes[this._length] = shapeData;\n this._length += 1;\n };\n ShapeCollection.prototype.releaseShapes = function () {\n var i;\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i]);\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 function newShapeCollection() {\n var shapeCollection;\n if (_length) {\n _length -= 1;\n shapeCollection = pool[_length];\n } else {\n shapeCollection = new ShapeCollection();\n }\n return shapeCollection;\n }\n function release(shapeCollection) {\n var i;\n var len = shapeCollection._length;\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i]);\n }\n shapeCollection._length = 0;\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n pool[_length] = shapeCollection;\n _length += 1;\n }\n return ob;\n }();\n\n var ShapePropertyFactory = function () {\n var initFrame = -999999;\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 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){\n keyPropS = kf[kf.length - 1].s[0];\n }else{\n keyPropS = kf[kf.length - 2].e[0];\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 while (flag) {\n keyData = kf[i];\n nextKeyData = kf[i + 1];\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break;\n }\n if (i < len - 1) {\n i += 1;\n } else {\n flag = false;\n }\n }\n keyframeMetadata = this.keyframesMetadata[i] || {};\n isHold = keyData.h === 1;\n iterationIndex = i;\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 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 perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n }\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n }\n keyPropS = keyData.s[0];\n }\n jLen = previousValue._length;\n kLen = keyPropS.i[0].length;\n caching.lastIndex = iterationIndex;\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 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 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 function resetShape() {\n this.paths = this.localShapeCollection;\n }\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false;\n }\n var i;\n var len = shape1._length;\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 return true;\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 function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n if (!this.effectsSequence.length) {\n this._mdf = false;\n return;\n }\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n this.lock = true;\n this._mdf = false;\n var finalValue;\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 var i;\n var len = this.effectsSequence.length;\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n this.setVValue(finalValue);\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\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 function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n ShapeProperty.prototype.interpolateShape = interpolateShape;\n ShapeProperty.prototype.getValue = processEffectsSequence;\n ShapeProperty.prototype.setVValue = setVValue;\n ShapeProperty.prototype.addEffect = addEffect;\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 KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n KeyframedShapeProperty.prototype.setVValue = setVValue;\n KeyframedShapeProperty.prototype.addEffect = addEffect;\n var EllShapeProperty = function () {\n var cPoint = roundCorner;\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 if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertEllToPath();\n }\n }\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\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 var _cw = this.d !== 3;\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 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 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 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 if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertToPath();\n }\n }\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\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;\n this.v.i.length = numPts;\n this.v.o.length = numPts; */\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 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\n /* this.v.v[i] = [x,y];\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\n this.v._length = numPts; */\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 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 this.paths.length = 0;\n this.paths[0] = this.v;\n }\n };\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n return StarShapePropertyFactory;\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 if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertRectToPath();\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 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 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 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 this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n if (this._mdf) {\n this.convertRectToPath();\n }\n },\n reset: resetShape\n };\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n return RectShapePropertyFactory;\n }();\n function getShapeProp(elem, data, type) {\n var prop;\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks;\n var keys = dataProp.k;\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 if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n return prop;\n }\n function getConstructorFunction() {\n return ShapeProperty;\n }\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty;\n }\n var ob = {};\n ob.getShapeProp = getShapeProp;\n ob.getConstructorFunction = getConstructorFunction;\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n return ob;\n }();\n\n /*!\n Transformation Matrix v2.0\n (c) Epistemex 2014-2015\n www.epistemex.com\n By Ken Fyrstenberg\n Contributions by leeoniya.\n License: MIT, header required.\n */\n\n /**\n * 2D transformation matrix object initialized with identity matrix.\n *\n * The matrix can synchronize a canvas context by supplying the context\n * as an argument, or later apply current absolute transform to an\n * existing context.\n *\n * All values are handled as floating point values.\n *\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\n * @prop {number} a - scale x\n * @prop {number} b - shear y\n * @prop {number} c - shear x\n * @prop {number} d - scale y\n * @prop {number} e - translate x\n * @prop {number} f - translate y\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\n * @constructor\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 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 function rotate(angle) {\n if (angle === 0) {\n return this;\n }\n var mCos = _cos(angle);\n var mSin = _sin(angle);\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n function rotateX(angle) {\n if (angle === 0) {\n return this;\n }\n var mCos = _cos(angle);\n var mSin = _sin(angle);\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n }\n function rotateY(angle) {\n if (angle === 0) {\n return this;\n }\n var mCos = _cos(angle);\n var mSin = _sin(angle);\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n }\n function rotateZ(angle) {\n if (angle === 0) {\n return this;\n }\n var mCos = _cos(angle);\n var mSin = _sin(angle);\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0);\n }\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay));\n }\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle);\n var mSin = _sin(angle);\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);\n // 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 function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1;\n }\n if (sx === 1 && sy === 1 && sz === 1) {\n return this;\n }\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\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 function translate(tx, ty, tz) {\n tz = tz || 0;\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 return this;\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 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 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\n /* matrix order (canvas compatible):\n * ace\n * bdf\n * 001\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 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 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 return this._identity;\n }\n function equals(matr) {\n var i = 0;\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false;\n }\n i += 1;\n }\n return true;\n }\n function clone(matr) {\n var i;\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i];\n }\n return matr;\n }\n function cloneFromProps(props) {\n var i;\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i];\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 {\n x: x * me.a + y * me.c + me.e,\n y: x * me.b + y * me.d + me.f\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 function applyToY(x, y, z) {\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\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 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 function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix();\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n }\n function inversePoints(pts) {\n var i;\n var len = pts.length;\n var retPts = [];\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i]);\n }\n return retPts;\n }\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6);\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 return arr;\n }\n function applyToPointArray(x, y, z) {\n var arr;\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 return arr;\n }\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y;\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 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 /* if(this.isIdentity()) {\n return '';\n } */\n var i = 0;\n var props = this.props;\n var cssValue = 'matrix3d(';\n var v = 10000;\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v;\n cssValue += i === 15 ? ')' : ',';\n i += 1;\n }\n return cssValue;\n }\n function roundMatrixProperty(val) {\n var v = 10000;\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n return _rnd(val * v) / v;\n }\n return val;\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 /* if(this.isIdentity()) {\n return '';\n } */\n var props = this.props;\n var _a = roundMatrixProperty(props[0]);\n var _b = roundMatrixProperty(props[1]);\n var _c = roundMatrixProperty(props[4]);\n var _d = roundMatrixProperty(props[5]);\n var _e = roundMatrixProperty(props[12]);\n var _f = roundMatrixProperty(props[13]);\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\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(o) { \"@babel/helpers - typeof\"; return _typeof$3 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$3(o); }\n var lottie = {};\n var standalone = '__[STANDALONE]__';\n var animationData = '__[ANIMATIONDATA]__';\n var renderer = '';\n function setLocation(href) {\n setLocationHref(href);\n }\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer);\n } else {\n animationManager.searchAnimations();\n }\n }\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag);\n }\n function setPrefix(prefix) {\n setIdPrefix(prefix);\n }\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData);\n }\n return animationManager.loadAnimation(params);\n }\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200);\n break;\n default:\n case 'medium':\n setDefaultCurveSegments(50);\n break;\n case 'low':\n setDefaultCurveSegments(10);\n break;\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value);\n }\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false);\n } else {\n roundValues(true);\n }\n }\n function inBrowser() {\n return typeof navigator !== 'undefined';\n }\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin);\n }\n }\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory;\n case 'shapePropertyFactory':\n return ShapePropertyFactory;\n case 'matrix':\n return Matrix;\n default:\n return null;\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;\n // lottie.start = start;\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.13.0';\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval);\n searchAnimations();\n }\n }\n function getQueryVariable(variable) {\n var vars = queryString.split('&');\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=');\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1]);\n }\n }\n return null;\n }\n var queryString = '';\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 renderer = getQueryVariable('renderer');\n }\n var readyStateCheckInterval = setInterval(checkReady, 100);\n\n // this adds bodymovin to the window object for backwards compatibility\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\n var ShapeModifiers = function () {\n var ob = {};\n var modifiers = {};\n ob.registerModifier = registerModifier;\n ob.getModifier = getModifier;\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory;\n }\n }\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data);\n }\n return ob;\n }();\n function ShapeModifier() {}\n ShapeModifier.prototype.initModifierProperties = function () {};\n ShapeModifier.prototype.addShapeToModifier = function () {};\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 if (this._isAnimated) {\n data.setAsAnimated();\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 if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n function TrimModifier() {}\n extendPrototype([ShapeModifier], TrimModifier);\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 TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = [];\n };\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = [];\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 var shapeSegments = [];\n var i;\n var len = segments.length;\n var segmentOb;\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i];\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n var shapeS;\n var shapeE;\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0;\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n }\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1;\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n }\n shapeSegments.push([shapeS, shapeE]);\n }\n }\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0]);\n }\n return shapeSegments;\n };\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i;\n var len = pathsData.length;\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i]);\n }\n pathsData.length = 0;\n return pathsData;\n };\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s;\n var e;\n if (this._mdf || _isFirstFrame) {\n var o = this.o.v % 360 / 360;\n if (o < 0) {\n o += 1;\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 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 if (s > e) {\n var _s = s;\n s = e;\n e = _s;\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 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 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 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 for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\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 if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength;\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData);\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 shapeData.totalShapeLength = totalShapeLength;\n shapeData.pathsData = pathsData;\n }\n totalModifierLength += totalShapeLength;\n shapeData.shape._mdf = true;\n }\n }\n var shapeS = s;\n var shapeE = e;\n var addedLength = 0;\n var edges;\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i];\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection;\n localShapeCollection.releaseShapes();\n // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\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 jLen = edges.length;\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0];\n shapeE = edges[j][1];\n segments.length = 0;\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 var newShapesData = this.addShapes(shapeData, segments[0]);\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 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 this.addPaths(newShapesData, localShapeCollection);\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 TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i;\n var len = newPaths.length;\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i]);\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 if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n }\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\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 if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos);\n }\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\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 if (!shapePath) {\n shapePath = shapePool.newElement();\n segmentCount = 0;\n initPos = 0;\n } else {\n segmentCount = shapePath._length;\n initPos = shapePath._length;\n }\n shapes.push(shapePath);\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 for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1];\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);\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n newShape = false;\n shapePath.c = false;\n }\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n }\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1];\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength;\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);\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n newShape = false;\n shapePath.c = false;\n }\n } else {\n shapePath.c = false;\n }\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\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 if (addedLength > shapeSegment.e) {\n break;\n }\n if (i < len - 1) {\n shapePath = shapePool.newElement();\n newShape = true;\n shapes.push(shapePath);\n segmentCount = 0;\n }\n }\n return shapes;\n };\n\n function PuckerAndBloatModifier() {}\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\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 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 for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0];\n centerPoint[1] += path.v[i][1];\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 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 return clonedPath;\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 if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\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 for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n }\n }\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n var TransformPropertyFactory = function () {\n var defaultVector = [0, 0];\n function applyToMatrix(mat) {\n var _mdf = this._mdf;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || _mdf;\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v);\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 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 function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n if (this._isDirty) {\n this.precalculateMatrix();\n this._isDirty = false;\n }\n this.iterateDynamicProperties();\n if (this._mdf || forceRender) {\n var frameRate;\n this.v.cloneFromProps(this.pre.props);\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\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 if (this.autoOriented) {\n var v1;\n var v2;\n frameRate = this.elem.globalData.frameRate;\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 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 this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\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 this.frameId = this.elem.globalData.frameId;\n }\n function precalculateMatrix() {\n this.appliedTransformations = 0;\n this.pre.reset();\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 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 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 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 function autoOrient() {\n //\n // var prevP = this.getValueAtTime();\n }\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop);\n this.elem.addDynamicProperty(prop);\n this._isDirty = true;\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();\n // Precalculated matrix with non animated properties\n this.pre = new Matrix();\n this.appliedTransformations = 0;\n this.initDynamicPropertyContainer(container || elem);\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 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 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 if (data.or.k[0].ti) {\n var i;\n var len = data.or.k.length;\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 this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this);\n // sh Indicates it needs to be capped between -180 and 180\n this.or.sh = true;\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || {\n k: 0\n }, 0, degToRads, this);\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 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);\n // 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 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 this._isDirty = true;\n if (!this.dynamicProperties.length) {\n this.getValue(true);\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 function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container);\n }\n return {\n getTransformProperty: getTransformProperty\n };\n }();\n\n function RepeaterModifier() {}\n extendPrototype([ShapeModifier], RepeaterModifier);\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 if (!this.dynamicProperties.length) {\n this.getValue(true);\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 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 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 while (pos > 0) {\n pos -= 1;\n // this._elements.unshift(arr.splice(pos,1)[0]);\n this._elements.unshift(arr[pos]);\n }\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i;\n var len = elements.length;\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false;\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it);\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 RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i;\n var len = elements.length;\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag;\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag);\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 if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v);\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 this._groups.splice(0, 0, group);\n this._currentCopies += 1;\n }\n this.elem.reloadShapes();\n hasReloaded = true;\n }\n cont = 0;\n var renderFlag;\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 if (!renderFlag) {\n var elems = this.elemsData[i].it;\n var transformData = elems[elems.length - 1];\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 cont += 1;\n }\n this._currentCopies = copies;\n /// /\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 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 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 if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n iteration -= offsetModulo;\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 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 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 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 for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n this.matrix.reset();\n } else {\n this.matrix.reset();\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\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 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 return hasReloaded;\n };\n RepeaterModifier.prototype.addShape = function () {};\n\n function RoundCornersModifier() {}\n extendPrototype([ShapeModifier], RoundCornersModifier);\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 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 for (i = 0; i < len; i += 1) {\n currentV = path.v[i];\n currentO = path.o[i];\n currentI = path.i[i];\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;\n clonedPath.o[index] = currentO;\n clonedPath.i[index] = currentI; */\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 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 if (i === len - 1) {\n closerV = path.v[0];\n } else {\n closerV = path.v[i + 1];\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 return clonedPath;\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 if (rd !== 0) {\n var shapeData;\n var localShapeCollection;\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\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 for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n }\n }\n shapeData.shape.paths = shapeData.localShapeCollection;\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 function floatZero(f) {\n return Math.abs(f) <= 0.00001;\n }\n function lerp(p0, p1, amount) {\n return p0 * (1 - amount) + p1 * amount;\n }\n function lerpPoint(p0, p1, amount) {\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n }\n function quadRoots(a, b, c) {\n // no root\n if (a === 0) return [];\n var s = b * b - 4 * a * c;\n // Complex roots\n if (s < 0) return [];\n var singleRoot = -b / (2 * a);\n // 1 root\n if (s === 0) return [singleRoot];\n var delta = Math.sqrt(s) / (2 * a);\n // 2 roots\n return [singleRoot - delta, singleRoot + delta];\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 function singlePoint(p) {\n return new PolynomialBezier(p, p, p, p, false);\n }\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\n if (linearize && pointEqual(p0, p1)) {\n p1 = lerpPoint(p0, p3, 1 / 3);\n }\n if (linearize && pointEqual(p2, p3)) {\n p2 = lerpPoint(p0, p3, 2 / 3);\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 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 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 PolynomialBezier.prototype.tangentAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[1], p[0]);\n };\n PolynomialBezier.prototype.normalAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[0], p[1]);\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 if (floatZero(root)) {\n if (root > 0 && root < 1) return [tcusp];\n return [];\n }\n return [tcusp - root, tcusp + root].filter(function (r) {\n return r > 0 && r < 1;\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 function extrema(bez, comp) {\n var min = bez.points[0][comp];\n var max = bez.points[bez.points.length - 1][comp];\n if (min > max) {\n var e = max;\n max = min;\n min = e;\n }\n // Derivative roots to find min/max\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\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 return {\n min: min,\n max: max\n };\n }\n PolynomialBezier.prototype.bounds = function () {\n return {\n x: extrema(this, 0),\n y: extrema(this, 1)\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 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 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 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 function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n if (!boxIntersect(d1, d2)) return;\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 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 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 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 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 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 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 function polarOffset(p, angle, length) {\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n }\n function pointDistance(p1, p2) {\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n }\n function pointEqual(p1, p2) {\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n }\n\n function ZigZagModifier() {}\n extendPrototype([ShapeModifier], ZigZagModifier);\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 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 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 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 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 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 return direction;\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 if (!path.c) {\n count -= 1;\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 for (var i = 0; i < count; i += 1) {\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n if (i === count - 1 && !path.c) {\n segment = null;\n } else {\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n }\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n }\n return clonedPath;\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 if (amplitude !== 0) {\n var shapeData;\n var localShapeCollection;\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\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 for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n }\n }\n shapeData.shape.paths = shapeData.localShapeCollection;\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 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 function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n var p0 = seg1.points[3];\n var p1 = seg2.points[0];\n\n // Bevel\n if (lineJoin === 3) return p0;\n\n // Connected, they don't need a joint\n if (pointEqual(p0, p1)) return p0;\n\n // Round\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 }\n\n // Miter\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 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 return p0;\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 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 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 if (a.length > 1 && b.length > 1) {\n intersect = getIntersection(a[0], b[b.length - 1]);\n if (intersect) {\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n }\n }\n return [outa, outb];\n }\n function pruneIntersections(segments) {\n var e;\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 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 return segments;\n }\n function offsetSegmentSplit(segment, amount) {\n /*\n We split each bezier segment into smaller pieces based\n on inflection points, this ensures the control point\n polygon is convex.\n (A cubic bezier can have none, one, or two inflection points)\n */\n var flex = segment.inflectionPoints();\n var left;\n var right;\n var split;\n var mid;\n if (flex.length === 0) {\n return [offsetSegment(segment, amount)];\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 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 function OffsetPathModifier() {}\n extendPrototype([ShapeModifier], OffsetPathModifier);\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 OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\n var outputBezier = shapePool.newElement();\n outputBezier.c = inputBezier.c;\n var count = inputBezier.length();\n if (!inputBezier.c) {\n count -= 1;\n }\n var i;\n var j;\n var segment;\n var multiSegments = [];\n for (i = 0; i < count; i += 1) {\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\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 multiSegments = pruneIntersections(multiSegments);\n\n // Add bezier segments to the output and apply line joints\n var lastPoint = null;\n var lastSeg = null;\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 for (j = 0; j < multiSegment.length; j += 1) {\n segment = multiSegment[j];\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 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 if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n return outputBezier;\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 if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\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 for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n }\n }\n shapeData.shape.paths = shapeData.localShapeCollection;\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 for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase();\n switch (styleName) {\n case 'italic':\n fStyle = 'italic';\n break;\n case 'bold':\n fWeight = '700';\n break;\n case 'black':\n fWeight = '900';\n break;\n case 'medium':\n fWeight = '500';\n break;\n case 'regular':\n case 'normal':\n fWeight = '400';\n break;\n case 'light':\n case 'thin':\n fWeight = '200';\n break;\n default:\n break;\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 = [];\n // Hindi characters\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 function trimFontOptions(font) {\n var familyArray = font.split(',');\n var i;\n var len = familyArray.length;\n var enabledFamilies = [];\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 return enabledFamilies.join(',');\n }\n function setUpNode(font, family) {\n var parentNode = createTag('span');\n // Node is invisible to screen readers.\n parentNode.setAttribute('aria-hidden', true);\n parentNode.style.fontFamily = family;\n var node = createTag('span');\n // Characters that vary significantly among different fonts\n node.innerText = 'giItT1WQy@!-/#';\n // Visible - so we can measure it - but not on the screen\n parentNode.style.position = 'absolute';\n parentNode.style.left = '-10000px';\n parentNode.style.top = '-10000px';\n // Large font size makes even subtle changes obvious\n parentNode.style.fontSize = '300px';\n // Reset any font properties\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);\n\n // Remember width with no applied web font\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 function checkLoadedFonts() {\n var i;\n var len = this.fonts.length;\n var node;\n var w;\n var loadedCount = len;\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 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 if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\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 if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20);\n } else {\n setTimeout(this.setIsLoadedBinded, 10);\n }\n }\n function createHelper(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas';\n var helper;\n var fontProps = getFontProperties(fontData);\n if (engine === 'svg') {\n var tHelper = createNS('text');\n tHelper.style.fontSize = '100px';\n // tHelper.style.fontFamily = fontData.fFamily;\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 if (fontData.fClass) {\n tHelper.style.fontFamily = 'inherit';\n tHelper.setAttribute('class', fontData.fClass);\n } else {\n tHelper.style.fontFamily = fontData.fFamily;\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 function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text;\n return helper.getComputedTextLength();\n }\n return helper.measureText(text).width;\n }\n return {\n measureText: measure\n };\n }\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true;\n return;\n }\n if (this.chars) {\n this.isLoaded = true;\n this.fonts = fontData.list;\n return;\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 var fontArr = fontData.list;\n var i;\n var len = fontArr.length;\n var _pendingFonts = len;\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 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 if (loadedSelector.length > 0) {\n shouldLoadFont = false;\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 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 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 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 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 fontArr[i].helper = createHelper(fontArr[i], defs);\n fontArr[i].cache = {};\n this.fonts.push(fontArr[i]);\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 function addChars(chars) {\n if (!chars) {\n return;\n }\n if (!this.chars) {\n this.chars = [];\n }\n var i;\n var len = chars.length;\n var j;\n var jLen = this.chars.length;\n var found;\n for (i = 0; i < len; i += 1) {\n j = 0;\n found = false;\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 j += 1;\n }\n if (!found) {\n this.chars.push(chars[i]);\n jLen += 1;\n }\n }\n }\n function getCharData(_char, style, font) {\n var i = 0;\n var len = this.chars.length;\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 i += 1;\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 return emptyChar;\n }\n function measureText(_char2, fontName, size) {\n var fontData = this.getFontByName(fontName);\n // Using the char instead of char.charCodeAt(0)\n // to avoid collisions between equal chars\n var index = _char2;\n if (!fontData.cache[index]) {\n var tHelper = fontData.helper;\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 return fontData.cache[index] * size;\n }\n function getFontByName(name) {\n var i = 0;\n var len = this.fonts.length;\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i];\n }\n i += 1;\n }\n return this.fonts[0];\n }\n function getCodePoint(string) {\n var codePoint = 0;\n var first = string.charCodeAt(0);\n if (first >= 0xD800 && first <= 0xDBFF) {\n var second = string.charCodeAt(1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n return codePoint;\n }\n\n // Skin tone modifiers\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n return surrogateModifiers.indexOf(sum) !== -1;\n }\n function isZeroWidthJoiner(charCode) {\n return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\n }\n\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 function isVariationSelector(charCode) {\n return charCode === VARIATION_SELECTOR_16_CODE_POINT;\n }\n\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 function isRegionalCode(string) {\n var codePoint = getCodePoint(string);\n if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n return true;\n }\n return false;\n }\n\n // Some Emoji implementations represent combinations of\n // two “regional indicator” letters as a single flag symbol.\n function isFlagEmoji(string) {\n return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n }\n function isCombinedCharacter(_char3) {\n return combinedCharacters.indexOf(_char3) !== -1;\n }\n\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 function isRegionalFlag(text, index) {\n var codePoint = getCodePoint(text.substr(index, 2));\n if (codePoint !== BLACK_FLAG_CODE_POINT) {\n return false;\n }\n var count = 0;\n index += 2;\n while (count < 5) {\n codePoint = getCodePoint(text.substr(index, 2));\n if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n return false;\n }\n count += 1;\n index += 2;\n }\n return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n }\n function setIsLoaded() {\n this.isLoaded = true;\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 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 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 return data;\n };\n function slotFactory(animationData) {\n return new SlotManager(animationData);\n }\n\n function RenderableElement() {}\n RenderableElement.prototype = {\n initRenderable: function initRenderable() {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false;\n // layer's display state\n this.hidden = false;\n // If layer's transparency equals 0, it can be hidden\n this.isTransparent = false;\n // list of animated components\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 * @function\n * Initializes frame related properties.\n *\n * @param {number} num\n * current frame number in Layer's time\n *\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 for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\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 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 function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\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 for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element);\n this.effectElements.push(effectItem);\n }\n }\n function GroupEffect(data, element) {\n this.init(data, element);\n }\n extendPrototype([DynamicPropertyContainer], GroupEffect);\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\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 for (i = 0; i < len; i += 1) {\n eff = null;\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this);\n break;\n case 1:\n eff = new AngleEffect(effects[i], element, this);\n break;\n case 2:\n eff = new ColorEffect(effects[i], element, this);\n break;\n case 3:\n eff = new PointEffect(effects[i], element, this);\n break;\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this);\n break;\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this);\n break;\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this);\n break;\n case 5:\n eff = new EffectsManager(effects[i], element, this);\n break;\n // case 6:\n default:\n eff = new NoValueEffect(effects[i], element, this);\n break;\n }\n if (eff) {\n this.effectElements.push(eff);\n }\n }\n };\n\n function BaseElement() {}\n BaseElement.prototype = {\n checkMasks: function checkMasks() {\n if (!this.data.hasMask) {\n return false;\n }\n var i = 0;\n var len = this.data.masksProperties.length;\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true;\n }\n i += 1;\n }\n return false;\n },\n initExpressions: function initExpressions() {\n var expressionsInterfaces = getExpressionInterfaces();\n if (!expressionsInterfaces) {\n return;\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 if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager);\n }\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n this.layerInterface.registerEffectsInterface(effectsInterface);\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();\n\n // Stretch factor for old animations missing this property.\n if (!this.data.sr) {\n this.data.sr = 1;\n }\n // effects manager\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 /**\n * @file\n * Handles element's layer frame update.\n * Checks layer in point and out point\n *\n */\n\n function FrameElement() {}\n FrameElement.prototype = {\n /**\n * @function\n * Initializes frame related properties.\n *\n */\n initFrame: function initFrame() {\n // set to true when inpoint is rendered\n this._isFirstFrame = false;\n // list of animated properties\n this.dynamicProperties = [];\n // If layer has been modified in current tick this will be true\n this._mdf = false;\n },\n /**\n * @function\n * Calculates all dynamic values\n *\n * @param {number} num\n * current frame number in Layer's time\n * @param {boolean} isVisible\n * if layers is currently in range\n *\n */\n prepareProperties: function prepareProperties(num, isVisible) {\n var i;\n var len = this.dynamicProperties.length;\n for (i = 0; i < len; i += 1) {\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n this.dynamicProperties[i].getValue();\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 FootageElement.prototype.prepareFrame = function () {};\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n FootageElement.prototype.getBaseElement = function () {\n return null;\n };\n FootageElement.prototype.renderFrame = function () {};\n FootageElement.prototype.destroy = function () {};\n FootageElement.prototype.initExpressions = function () {\n var expressionsInterfaces = getExpressionInterfaces();\n if (!expressionsInterfaces) {\n return;\n }\n var FootageInterface = expressionsInterfaces('footage');\n this.layerInterface = FootageInterface(this);\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 AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true);\n this.prepareProperties(num, true);\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 this._volume = this.lv.v[0];\n var totalVolume = this._volume * this._volumeMultiplier;\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume;\n this.audio.volume(totalVolume);\n }\n };\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\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 AudioElement.prototype.show = function () {\n // this.audio.play()\n };\n AudioElement.prototype.hide = function () {\n this.audio.pause();\n this._isPlaying = false;\n };\n AudioElement.prototype.pause = function () {\n this.audio.pause();\n this._isPlaying = false;\n this._canPlay = false;\n };\n AudioElement.prototype.resume = function () {\n this._canPlay = true;\n };\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue);\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 AudioElement.prototype.getBaseElement = function () {\n return null;\n };\n AudioElement.prototype.destroy = function () {};\n AudioElement.prototype.sourceRectAtTime = function () {};\n AudioElement.prototype.initExpressions = function () {};\n\n function BaseRenderer() {}\n BaseRenderer.prototype.checkLayers = function (num) {\n var i;\n var len = this.layers.length;\n var data;\n this.completeLayers = true;\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i];\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 this.completeLayers = this.elements[i] ? this.completeLayers : false;\n }\n this.checkPendingElements();\n };\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer);\n case 0:\n return this.createComp(layer);\n case 1:\n return this.createSolid(layer);\n case 3:\n return this.createNull(layer);\n case 4:\n return this.createShape(layer);\n case 5:\n return this.createText(layer);\n case 6:\n return this.createAudio(layer);\n case 13:\n return this.createCamera(layer);\n case 15:\n return this.createFootage(layer);\n default:\n return this.createNull(layer);\n }\n };\n BaseRenderer.prototype.createCamera = function () {\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n };\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this);\n };\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this);\n };\n BaseRenderer.prototype.buildAllItems = function () {\n var i;\n var len = this.layers.length;\n for (i = 0; i < len; i += 1) {\n this.buildItem(i);\n }\n this.checkPendingElements();\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 for (i = 0; i < len; i += 1) {\n j = 0;\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i];\n break;\n }\n j += 1;\n }\n }\n };\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface;\n };\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems();\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 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 if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy);\n } else {\n element.setHierarchy(hierarchy);\n }\n }\n }\n i += 1;\n }\n };\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element);\n };\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\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 BaseRenderer.prototype.getElementById = function (ind) {\n var i;\n var len = this.elements.length;\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.ind === ind) {\n return this.elements[i];\n }\n }\n return null;\n };\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift();\n var element;\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue];\n } else {\n var i;\n var len = this.elements.length;\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 if (path.length === 0) {\n return element;\n }\n return element.getElementByPath(path);\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 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 if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true;\n }\n\n // TODO: check TYPE 11: Guided elements\n if (this.data.ty !== 11) {\n // 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 if (this.hierarchy) {\n var mat;\n var finalMat = this.finalTransform.mat;\n var i = 0;\n var len = this.hierarchy.length;\n // Checking if any of the transformation matrices in the hierarchy chain has changed.\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 i += 1;\n }\n }\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props;\n finalMat.cloneFromProps(mat);\n for (i = 0; i < len; i += 1) {\n finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n }\n }\n }\n if (!this.localTransforms || this.finalTransform._matMdf) {\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\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 if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) {\n while (i < len) {\n if (this.localTransforms[i]._mdf) {\n this.finalTransform._localMatMdf = true;\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 i += 1;\n }\n }\n if (this.finalTransform._localMatMdf) {\n var localMat = this.finalTransform.localMat;\n this.localTransforms[0].matrix.clone(localMat);\n for (i = 1; i < len; i += 1) {\n var lmat = this.localTransforms[i].matrix;\n localMat.multiply(lmat);\n }\n localMat.multiply(this.finalTransform.mat);\n }\n if (this.finalTransform._opMdf) {\n var localOp = this.finalTransform.localOpacity;\n for (i = 0; i < len; i += 1) {\n localOp *= this.localTransforms[i].opacity * 0.01;\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 if (transformEffects.length) {\n this.localTransforms = [];\n this.finalTransform.localMat = new Matrix();\n var i = 0;\n var len = transformEffects.length;\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 while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform);\n }\n comp = comp.comp;\n } else {\n flag = false;\n }\n }\n var i;\n var len = transforms.length;\n var ptNew;\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0);\n // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\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 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 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 path = createNS('path');\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 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 }\n\n // TODO move this to a factory or to a constructor\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 if (properties[i].mode === 'i') {\n jLen = currentMasks.length;\n var g = createNS('g');\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j]);\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 if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath();\n }\n // TODO move this to a factory or to a constructor\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 if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n }\n }\n this.maskElement = createNS(maskType);\n len = currentMasks.length;\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i]);\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 if (this.viewData.length) {\n this.element.addRenderableComponent(this);\n }\n }\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop;\n };\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat;\n var i;\n var len = this.masksProperties.length;\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 if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\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 if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan;\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 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 this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n }\n }\n }\n }\n };\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement;\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 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 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 }\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 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 }\n // pathNodes.__renderedString = pathString;\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = '';\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n }\n viewData.elem.setAttribute('d', pathShapeValue);\n }\n viewData.lastPath = pathString;\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 function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter');\n fil.setAttribute('id', filId);\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 return fil;\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 return ob;\n }();\n\n var featureSupport = function () {\n var ob = {\n maskType: true,\n svgLumaHidden: true,\n offscreenCanvas: typeof OffscreenCanvas !== 'undefined'\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 if (/firefox/i.test(navigator.userAgent)) {\n ob.svgLumaHidden = false;\n }\n return ob;\n }();\n\n var registeredEffects$1 = {};\n var idPrefix = 'filter_result_';\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 for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\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 if (registeredEffects$1[type].countsAsEffect) {\n count += 1;\n }\n }\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n if (count) {\n elem.globalData.defs.appendChild(fil);\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n SVGEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n return effects;\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 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;\n // If this layer acts as a mask for the following layer\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 if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\n // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\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 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 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 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 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 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 if (!this.matteMasks[matteType]) {\n var id = this.layerId + '_' + matteType;\n var filId;\n var fil;\n var useElement;\n var gg;\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 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 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 this.globalData.defs.appendChild(maskGroup);\n }\n this.matteMasks[matteType] = id;\n }\n return this.matteMasks[matteType];\n },\n setMatte: function setMatte(id) {\n if (!this.matteElement) {\n return;\n }\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n }\n };\n\n /**\n * @file\n * Handles AE's layer parenting property.\n *\n */\n\n function HierarchyElement() {}\n HierarchyElement.prototype = {\n /**\n * @function\n * Initializes hierarchy properties\n *\n */\n initHierarchy: function initHierarchy() {\n // element's parent list\n this.hierarchy = [];\n // if element is parent of another layer _isParent will be true\n this._isParent = false;\n this.checkParenting();\n },\n /**\n * @function\n * Sets layer's hierarchy.\n * @param {array} hierarch\n * layer's parent list\n *\n */\n setHierarchy: function setHierarchy(hierarchy) {\n this.hierarchy = hierarchy;\n },\n /**\n * @function\n * Sets layer as parent.\n *\n */\n setAsParent: function setAsParent() {\n this._isParent = true;\n },\n /**\n * @function\n * Searches layer's parenting chain\n *\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 (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 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 this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.renderElement();\n this.renderInnerContent();\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 if (this.assetData && this.assetData.sid) {\n this.assetData = globalData.slotManager.getProp(this.assetData);\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 extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\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 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 IShapeElement.prototype = {\n addShapeToModifiers: function addShapeToModifiers(data) {\n var i;\n var len = this.shapeModifiers.length;\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 while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true;\n }\n }\n return false;\n },\n renderModifiers: function renderModifiers() {\n if (!this.shapeModifiers.length) {\n return;\n }\n var i;\n var len = this.shapes.length;\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset();\n }\n len = this.shapeModifiers.length;\n var shouldBreakProcess;\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame);\n // 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 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 while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos;\n }\n i += 1;\n }\n return 0;\n },\n addProcessedElement: function addProcessedElement(elem, pos) {\n var elements = this.processedElements;\n var i = elements.length;\n while (i) {\n i -= 1;\n if (elements[i].elem === elem) {\n elements[i].pos = pos;\n return;\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;\n // 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 this._isAnimated = !!shape.k;\n // TODO: commenting this for now since all shapes are animated\n var i = 0;\n var len = transformers.length;\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true;\n break;\n }\n i += 1;\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 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 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 if (!this.k) {\n this.getValue(true);\n }\n this._isAnimated = this.k;\n }\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return;\n }\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || forceRender;\n if (this._mdf) {\n var i = 0;\n var len = this.dataProps.length;\n if (this.renderer === 'svg') {\n this.dashStr = '';\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 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 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 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 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 GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0;\n var len = this.o.length / 2;\n var diff;\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n if (diff > 0.01) {\n return false;\n }\n i += 1;\n }\n return true;\n };\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false;\n }\n if (this.data.k.k[0].s) {\n var i = 0;\n var len = this.data.k.k.length;\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false;\n }\n i += 1;\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false;\n }\n return true;\n };\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue();\n this._mdf = false;\n this._cmdf = false;\n this._omdf = false;\n if (this.prop._mdf || forceRender) {\n var i;\n var len = this.data.p * 4;\n var mult;\n var val;\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 if (this.c[i] !== val) {\n this.c[i] = val;\n this._cmdf = !forceRender;\n }\n }\n if (this.o.length) {\n len = this.prop.v.length;\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 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 this._mdf = !forceRender;\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 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 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 for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop');\n gfill.appendChild(stop);\n stops.push(stop);\n }\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n this.gf = gfill;\n this.cst = stops;\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 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 maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml);\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 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 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 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 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 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 return shapeString;\n };\n\n var SVGElementsRenderer = function () {\n var _identityMatrix = new Matrix();\n var _matrixHelper = new Matrix();\n var ob = {\n createRenderFunction: createRenderFunction\n };\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill;\n case 'gf':\n return renderGradient;\n case 'gs':\n return renderGradientStroke;\n case 'st':\n return renderStroke;\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath;\n case 'tr':\n return renderContentTransform;\n case 'no':\n return renderNoop;\n default:\n return null;\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 if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n }\n }\n function renderNoop() {}\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 for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame;\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 while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw;\n iterations -= 1;\n k -= 1;\n }\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\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 paths = itemData.sh.paths;\n jLen = paths._length;\n if (redraw) {\n pathStringTransformed = '';\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j];\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n }\n }\n itemData.caches[l] = pathStringTransformed;\n } else {\n pathStringTransformed = itemData.caches[l];\n }\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n }\n }\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\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 if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n }\n }\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame);\n renderStroke(styleData, itemData, isFirstFrame);\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 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 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 if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0]);\n itemData.of.setAttribute(attr2, pt1[1]);\n }\n }\n var stops;\n var i;\n var len;\n var stop;\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst;\n var cValues = itemData.g.c;\n len = stops.length;\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 if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o;\n if (itemData.g._collapsable) {\n stops = itemData.cst;\n } else {\n stops = itemData.ost;\n }\n len = stops.length;\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%');\n }\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\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 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 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 if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad);\n }\n }\n if (itemData.s._mdf || 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 var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\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 if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x);\n itemData.of.setAttribute('fy', y);\n }\n }\n // gfill.setAttribute('fy','200');\n }\n }\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n var d = itemData.d;\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 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 if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n }\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n }\n }\n }\n return ob;\n }();\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = [];\n // Full shape data\n this.shapesData = data.shapes;\n // List of styles that will be applied to shapes\n this.stylesList = [];\n // List of modifiers that will be applied to shapes\n this.shapeModifiers = [];\n // List of items in shape tree\n this.itemsData = [];\n // List of items in previous shape tree\n this.processedElements = [];\n // List of animated components\n this.animatedContents = [];\n this.initElement(data, globalData, comp);\n // 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 this.prevViewData = [];\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n SVGShapeElement.prototype.initSecondaryElement = function () {};\n SVGShapeElement.prototype.identityMatrix = new Matrix();\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n };\n\n /*\n This method searches for multiple shapes that affect a single element and one of them is animated\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 for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j];\n areAnimated = false;\n tempShapes.length = 0;\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i];\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape);\n areAnimated = shape._isAnimated || areAnimated;\n }\n }\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes);\n }\n }\n };\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i;\n var len = shapes.length;\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated();\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 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 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 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 if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd');\n }\n if (data.ln) {\n pathElement.setAttribute('id', data.ln);\n }\n if (data.cl) {\n pathElement.setAttribute('class', data.cl);\n }\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n this.stylesList.push(styleOb);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData();\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln);\n }\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl);\n }\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n return elementData;\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 SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4;\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 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 SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0;\n var len = this.animatedContents.length;\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return;\n }\n i += 1;\n }\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data\n });\n };\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles;\n var j;\n var jLen = this.stylesList.length;\n for (j = 0; j < jLen; j += 1) {\n if (arr.indexOf(this.stylesList[j]) === -1 && !this.stylesList[j].closed) {\n arr.push(this.stylesList[j]);\n }\n }\n };\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n len = this.dynamicProperties.length;\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n this.renderModifiers();\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 for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n if (!processedPos) {\n arr[i]._render = render;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\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 = arr[i].hd;\n }\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem);\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 for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\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 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 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 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 ownModifiers.push(modifier);\n }\n this.addProcessedElement(arr[i], i + 1);\n }\n len = ownStyles.length;\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true;\n }\n len = ownModifiers.length;\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers();\n var i;\n var len = this.stylesList.length;\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset();\n }\n this.renderShape();\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);\n // Adding M0 0 fixes same mask bug on all browsers\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n }\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n }\n }\n };\n SVGShapeElement.prototype.renderShape = function () {\n var i;\n var len = this.animatedContents.length;\n var animatedContent;\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i];\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\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 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 if (this.o !== o) {\n this.o = o;\n this._mdf.o = true;\n updated = true;\n }\n if (this.sw !== sw) {\n this.sw = sw;\n this._mdf.sw = true;\n updated = true;\n }\n if (this.sc !== sc) {\n this.sc = sc;\n this._mdf.sc = true;\n updated = true;\n }\n if (this.fc !== fc) {\n this.fc = fc;\n this._mdf.fc = true;\n updated = true;\n }\n if (this.m !== m) {\n this.m = m;\n this._mdf.m = true;\n updated = true;\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 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 if (data.d && data.d.sid) {\n data.d = elem.globalData.slotManager.getProp(data.d);\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 if (!this.searchProperty()) {\n this.completeTextData(this.currentData);\n }\n }\n TextProperty.prototype.defaultBoxWidth = [0, 0];\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 return obj;\n };\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data);\n }\n this.currentData = data;\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n this._mdf = true;\n };\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes();\n };\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1;\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this));\n }\n return this.kf;\n };\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.elem.addDynamicProperty(this);\n };\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return;\n }\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n var currentValue = this.currentData;\n var currentIndex = this.keysIndex;\n if (this.lock) {\n this.setCurrentData(this.currentData);\n return;\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 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 if (currentValue !== finalValue) {\n this.setCurrentData(finalValue);\n }\n this.v = this.currentData;\n this.pv = this.v;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\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 while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break;\n }\n i += 1;\n }\n if (this.keysIndex !== i) {\n this.keysIndex = i;\n }\n return this.data.d.k[this.keysIndex].s;\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 while (i < len) {\n shouldCombine = shouldCombineNext;\n shouldCombineNext = false;\n charCode = text.charCodeAt(i);\n currentChars = text.charAt(i);\n if (FontManager.isCombinedCharacter(charCode)) {\n shouldCombine = true;\n // 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);\n // It's a surrogate pair (this is the Low surrogate)\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 if (FontManager.isVariationSelector(charCode)) {\n shouldCombine = true;\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n shouldCombine = true;\n shouldCombineNext = true;\n }\n if (shouldCombine) {\n charactersArray[charactersArray.length - 1] += currentChars;\n shouldCombine = false;\n } else {\n charactersArray.push(currentChars);\n }\n i += currentChars.length;\n }\n return charactersArray;\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 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 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 for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0);\n newLineFlag = false;\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 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 if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1;\n } else {\n i = lastSpaceIndex;\n }\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r');\n // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n lastSpaceIndex = -1;\n lineWidth = 0;\n } else {\n lineWidth += cLength;\n lineWidth += trackingOffset;\n }\n }\n currentHeight += fontData.ascent * documentData.finalSize / 100;\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 lineWidth = -trackingOffset;\n cLength = 0;\n var uncollapsedSpaces = 0;\n var currentChar;\n for (i = 0; i < len; i += 1) {\n newLineFlag = false;\n currentChar = documentData.finalText[i];\n charCode = currentChar.charCodeAt(0);\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 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 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 if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength;\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 index += 1;\n currentSize = 0;\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength;\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 currentSize = 0;\n index += 1;\n }\n } else {\n letters[index].ind = index;\n letters[index].extra = 0;\n index += 1;\n }\n }\n documentData.l = letters;\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidths.push(lineWidth);\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0];\n documentData.justifyOffset = 0;\n } else {\n documentData.boxWidth = maxLineWidth;\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth;\n break;\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2;\n break;\n default:\n documentData.justifyOffset = 0;\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 for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j];\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true;\n }\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true;\n }\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true;\n }\n ind = 0;\n based = animatorData.s.b;\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n letterData.anIndexes[j] = ind;\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 ind += 1;\n }\n }\n data.a[j].s.totalChars = ind;\n var currentInd = -1;\n var newInd;\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\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 letterData.anIndexes[j] = newInd;\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 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 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 TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\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 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 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 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 if (!this.dynamicProperties.length) {\n this.getValue();\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 var x1 = 0;\n var y1 = 0;\n var x2 = 1;\n var y2 = 1;\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0;\n } else {\n y1 = -this.ne.v / 100.0;\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 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 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 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 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 if (mult < 0.5) {\n mult *= 2;\n } else {\n mult = 1 - 2 * (mult - 0.5);\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;\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\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 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 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 mult = easer(mult);\n }\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 if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01;\n if (smoothness === 0) {\n smoothness = 0.00000001;\n }\n var threshold = 0.5 - smoothness * 0.5;\n if (mult < threshold) {\n mult = 0;\n } else {\n mult = (mult - threshold) / smoothness;\n if (mult > 1) {\n mult = 1;\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 if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength;\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 if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n this.finalS = s;\n this.finalE = e;\n }\n };\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr);\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 TextAnimatorProperty.prototype.searchProperties = function () {\n var i;\n var len = this._textData.a.length;\n var animatorProps;\n var getProp = PropertyFactory.getProp;\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 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 this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n };\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag;\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return;\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 if (this._hasMaskedPath) {\n mask = this._pathData.m;\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v;\n if (this._pathData.r.v) {\n paths = paths.reverse();\n }\n // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n pathInfo = {\n tLength: 0,\n segments: []\n };\n len = paths._length - 1;\n var bezierData;\n totalLength = 0;\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 i = len;\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 this._pathData.pi = pathInfo;\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 if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n }\n segmentInd = segments.length - 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength;\n pointInd -= 1;\n if (pointInd < 0) {\n segmentInd -= 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n }\n }\n }\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\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 //\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 for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n animatorJustifyOffset = 0;\n isNewLine = true;\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n }\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\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 isNewLine = false;\n }\n }\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\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 if (letters[i].n) {\n xPos = 0;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n currentLength = initPathPos;\n firstLine = false;\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 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 case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n break;\n default:\n break;\n }\n currentLine = letters[i].line;\n }\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra;\n }\n currentLength += letters[i].an / 2;\n ind = letters[i].ind;\n }\n currentLength += alignment[0] * letters[i].an * 0.005;\n var animatorOffset = 0;\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.p.v[0] * mult;\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 if (mult.length) {\n animatorOffset += animatorProps.a.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.a.v[0] * mult;\n }\n }\n }\n flag = true;\n // Force alignment only works with a single line for now\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 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 if (pointInd >= points.length) {\n pointInd = 0;\n segmentInd += 1;\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 if (points) {\n prevPoint = currentPoint;\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\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);\n\n // Grouping alignment\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n }\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\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 if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0;\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 if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n }\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\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 for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\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 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 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 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 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 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 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 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 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 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 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 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 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 for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\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 if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw;\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 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 if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\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 if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180;\n }\n matrixHelper.rotate(-rot * Math.PI / 180);\n }\n matrixHelper.translate(xPathPos, yPathPos, 0);\n currentLength -= alignment[0] * letters[i].an * 0.005;\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 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 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 case 2:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n break;\n default:\n break;\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 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 letterO = elemOpacity;\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 TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return;\n }\n this._frameId = this._elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n TextAnimatorProperty.prototype.mHelper = new Matrix();\n TextAnimatorProperty.prototype.defaultPropsArray = [];\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n function ITextElement() {}\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 ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n };\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j;\n var jLen = shapes.length;\n var pathNodes;\n var shapeStr = '';\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 return shapeStr;\n };\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index);\n };\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize);\n };\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize);\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 matrixHelper.translate(0, -documentData.ls, 0);\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n break;\n case 2:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n break;\n default:\n break;\n }\n matrixHelper.translate(xPos, yPos, 0);\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 ITextElement.prototype.emptyProp = new LetterProps();\n ITextElement.prototype.destroy = function () {};\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 function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = [];\n this.renderType = 'svg';\n this.initElement(data, globalData, comp);\n }\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text');\n }\n };\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0;\n var len = textArray.length;\n var textContents = [];\n var currentTextContent = '';\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 i += 1;\n }\n textContents.push(currentTextContent);\n return textContents;\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 if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1];\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale;\n shapeItem.s.k[1] = scale;\n }\n }\n }\n return data;\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 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 if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n this.layerElement.setAttribute('stroke-width', documentData.sw);\n }\n this.layerElement.setAttribute('font-size', documentData.finalSize);\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\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 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 if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer;\n var justify = 'start';\n switch (documentData.j) {\n case 1:\n justify = 'end';\n break;\n case 2:\n justify = 'middle';\n break;\n default:\n justify = 'start';\n break;\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 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 if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null\n };\n }\n this.textSpans[i].span = tSpan;\n yPos += documentData.finalLineHeight;\n }\n this.layerElement.appendChild(tElement);\n } else {\n var cachedSpansLength = this.textSpans.length;\n var charData;\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 if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\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 if (usesGlyphs) {\n var childSpan = createNS('g');\n tSpan.appendChild(childSpan);\n this.textSpans[i].childSpan = childSpan;\n }\n this.textSpans[i].span = tSpan;\n this.layerElement.appendChild(tSpan);\n }\n tSpan.style.display = 'inherit';\n }\n matrixHelper.reset();\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 this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n xPos += letters[i].l || 0;\n // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n xPos += trackingOffset;\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;\n // t === 1 means the character has been replaced with an animated shaped\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n } else {\n var data = emptyShapeData;\n if (charData.data && charData.data.shapes) {\n data = this.buildShapeData(charData.data, documentData.finalSize);\n }\n glyphElement = new SVGShapeElement(data, this.globalData, this);\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 this.textSpans[i].glyph = glyphElement;\n glyphElement._debug = true;\n glyphElement.prepareFrame(0);\n glyphElement.renderFrame();\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement);\n // 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 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 tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n }\n //\n }\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr);\n }\n }\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none';\n i += 1;\n }\n this._sizeChanged = true;\n };\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\n this.renderInnerContent();\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 return this.bbox;\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 for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph;\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n if (glyphElement._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n this.validateText();\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\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 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 if (glyphElement) {\n glyphElement.renderFrame();\n }\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o);\n }\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\n }\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc);\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 extendPrototype([IImageElement], ISolidElement);\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect');\n /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\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 NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n NullElement.prototype.renderFrame = function () {};\n NullElement.prototype.getBaseElement = function () {\n return null;\n };\n NullElement.prototype.destroy = function () {};\n NullElement.prototype.sourceRectAtTime = function () {};\n NullElement.prototype.hide = function () {};\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n function SVGRendererBase() {}\n extendPrototype([BaseRenderer], SVGRendererBase);\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this);\n };\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this);\n };\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this);\n };\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this);\n };\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this);\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 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 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 if (this.renderConfig.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width);\n }\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height);\n }\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className);\n }\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id);\n }\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n }\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio);\n // 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 this.animationItem.wrapper.appendChild(this.svgElement);\n // Mask animation\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 SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n this.layerElement = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\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 this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n SVGRendererBase.prototype.updateContainerSize = function () {};\n SVGRendererBase.prototype.findIndexByInd = function (ind) {\n var i = 0;\n var len = this.layers.length;\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ind === ind) {\n return i;\n }\n }\n return -1;\n };\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n elements[pos] = true;\n var element = this.createItem(this.layers[pos]);\n elements[pos] = element;\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element);\n }\n element.initExpressions();\n }\n this.appendElementInPos(element, pos);\n if (this.layers[pos].tt) {\n var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n if (elementIndex === -1) {\n return;\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 SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n if (element.data.tt) {\n var i = 0;\n var len = this.elements.length;\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 i += 1;\n }\n }\n }\n };\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return;\n }\n if (num === null) {\n num = this.renderedFrame;\n } else {\n this.renderedFrame = num;\n }\n // console.log('-------');\n // console.log('FRAME ',num);\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 if (!this.completeLayers) {\n this.checkLayers(num);\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 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 SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement();\n if (!newElement) {\n return;\n }\n var i = 0;\n var nextElement;\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 i += 1;\n }\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement);\n } else {\n this.layerElement.appendChild(newElement);\n }\n };\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none';\n };\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block';\n };\n\n function ICompElement() {}\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\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 if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems();\n }\n this.hide();\n };\n\n /* ICompElement.prototype.hide = function(){\n if(!this.hidden){\n this.hideElement();\n var i,len = this.elements.length;\n for( i = 0; i < len; i+=1 ){\n if(this.elements[i]){\n this.elements[i].hide();\n }\n }\n }\n }; */\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n if (!this.isInRange && !this.data.xt) {\n return;\n }\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1;\n }\n this.renderedFrame = timeRemapped;\n } else {\n this.renderedFrame = num / this.data.sr;\n }\n var i;\n var len = this.elements.length;\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame);\n }\n // This iteration needs to be backwards because of how expressions connect between each other\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 if (this.elements[i]._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n ICompElement.prototype.renderInnerContent = function () {\n var i;\n var len = this.layers.length;\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n ICompElement.prototype.setElements = function (elems) {\n this.elements = elems;\n };\n ICompElement.prototype.getElements = function () {\n return this.elements;\n };\n ICompElement.prototype.destroyElements = function () {\n var i;\n var len = this.layers.length;\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\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 extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\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 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 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 if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\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 extendPrototype([SVGRendererBase], SVGRenderer);\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 ShapeTransformManager.prototype = {\n addTransformSequence: function addTransformSequence(transforms) {\n var i;\n var len = transforms.length;\n var key = '_';\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_';\n }\n var sequence = this.sequences[key];\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 return sequence;\n },\n processSequence: function processSequence(sequence, isFirstFrame) {\n var i = 0;\n var len = sequence.transforms.length;\n var _mdf = isFirstFrame;\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true;\n break;\n }\n i += 1;\n }\n if (_mdf) {\n sequence.finalTransform.reset();\n for (i = len - 1; i >= 0; i -= 1) {\n sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n }\n }\n sequence._mdf = _mdf;\n },\n processSequences: function processSequences(isFirstFrame) {\n var i;\n var len = this.sequenceList.length;\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;\n\n // 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 var svgString = [\n '<svg xmlns=\"http://www.w3.org/2000/svg\">',\n '<filter id=\"' + id + '\">',\n '<feColorMatrix type=\"matrix\" color-interpolation-filters=\"sRGB\" values=\"',\n '0.3, 0.3, 0.3, 0, 0, ',\n '0.3, 0.3, 0.3, 0, 0, ',\n '0.3, 0.3, 0.3, 0, 0, ',\n '0.3, 0.3, 0.3, 0, 0',\n '\"/>',\n '</filter>',\n '</svg>',\n ].join('');\n var blob = new Blob([svgString], { type: 'image/svg+xml' });\n var url = URL.createObjectURL(blob);\n */\n\n function createLumaSvgFilter() {\n var _svg = createNS('svg');\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 _svg.appendChild(fil);\n _svg.setAttribute('id', id + '_svg');\n if (featureSupport.svgLumaHidden) {\n _svg.style.display = 'none';\n }\n return _svg;\n }\n function loadLuma() {\n if (!lumaBuffer) {\n svg = createLumaSvgFilter();\n document.body.appendChild(svg);\n lumaBuffer = createTag('canvas');\n lumaBufferCtx = lumaBuffer.getContext('2d');\n // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n lumaBufferCtx.filter = 'url(#' + id + ')';\n lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n lumaBufferCtx.fillRect(0, 0, 1, 1);\n }\n }\n function getLuma(canvas) {\n if (!lumaBuffer) {\n loadLuma();\n }\n lumaBuffer.width = canvas.width;\n lumaBuffer.height = canvas.height;\n // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n lumaBufferCtx.filter = 'url(#' + id + ')';\n return lumaBuffer;\n }\n return {\n load: loadLuma,\n get: getLuma\n };\n };\n function createCanvas(width, height) {\n if (featureSupport.offscreenCanvas) {\n return new OffscreenCanvas(width, height);\n }\n var canvas = createTag('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\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 function CVEffects(elem) {\n var i;\n var len = elem.data.ef ? elem.data.ef.length : 0;\n this.filters = [];\n var filterManager;\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect;\n filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n }\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n CVEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n return effects;\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 for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true;\n }\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n }\n this.hasMasks = hasMasks;\n if (hasMasks) {\n this.element.addRenderableComponent(this);\n }\n }\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return;\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 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 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 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 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 this.element.globalData.renderer.save(true);\n ctx.clip();\n };\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n CVMaskElement.prototype.destroy = function () {\n this.element = null;\n };\n\n function CVBaseElement() {}\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 if (this.data.tt >= 3 && !document._isProxy) {\n assetLoader.loadLumaCanvas();\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 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);\n // on the first buffer we store the current state of the global drawing\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n // 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 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];\n // 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 var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx);\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n // We clear the canvas again\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform);\n // We draw the mask\n var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n mask.renderFrame(true);\n // We draw the second buffer (that contains the content of this layer)\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n\n // 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 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);\n // we repaint the context with the mask applied to it\n this.canvasContext.drawImage(lumaBuffer, 0, 0);\n }\n this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n this.canvasContext.drawImage(buffer, 0, 0);\n // 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 this.canvasContext.globalCompositeOperation = 'destination-over';\n this.canvasContext.drawImage(this.buffers[0], 0, 0);\n this.canvasContext.setTransform(this.currentTransform);\n // We reset the globalCompositeOperation to source-over, the standard type of operation\n this.canvasContext.globalCompositeOperation = 'source-over';\n }\n },\n renderFrame: function renderFrame(forceRender) {\n if (this.hidden || this.data.hd) {\n return;\n }\n if (this.data.td === 1 && !forceRender) {\n return;\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 if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true);\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 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 this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n var i;\n var len = styles.length;\n var styledShape;\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 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 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 CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\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 if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\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 elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2];\n styleElem.lj = lineJoinEnum[data.lj || 2];\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml;\n }\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v;\n }\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this);\n elementData.d = d;\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 this.stylesList.push(styleElem);\n elementData.style = styleElem;\n return elementData;\n };\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: []\n };\n return elementData;\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 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 CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n len = this.dynamicProperties.length;\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n };\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i;\n var len = this.stylesList.length;\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 CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i;\n var len = this.stylesList.length;\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop();\n }\n }\n };\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i;\n var len = styles.length;\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true;\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 for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\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 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 for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\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 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 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 ownModifiers.push(modifier);\n }\n this.addProcessedElement(arr[i], i + 1);\n }\n this.removeTransformFromStyleList();\n this.closeStyles(ownStyles);\n len = ownModifiers.length;\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\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 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 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 for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i];\n type = currentStyle.type;\n\n // 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 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 if (type === 'st' || type === 'gs') {\n renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd);\n // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n renderer.ctxLineWidth(currentStyle.wi);\n // ctx.lineWidth = currentStyle.wi;\n renderer.ctxLineCap(currentStyle.lc);\n // ctx.lineCap = currentStyle.lc;\n renderer.ctxLineJoin(currentStyle.lj);\n // ctx.lineJoin = currentStyle.lj;\n renderer.ctxMiterLimit(currentStyle.ml || 0);\n // ctx.miterLimit = currentStyle.ml || 0;\n } else {\n renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd);\n // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n }\n renderer.ctxOpacity(currentStyle.coOp);\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath();\n }\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n jLen = elems.length;\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath();\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da);\n ctx.lineDashOffset = currentStyle[\"do\"];\n }\n }\n nodes = elems[j].trNodes;\n kLen = nodes.length;\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 if (type === 'st' || type === 'gs') {\n // ctx.stroke();\n renderer.ctxStroke();\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter);\n }\n }\n }\n if (type !== 'st' && type !== 'gs') {\n // ctx.fill(currentStyle.r);\n this.globalData.renderer.ctxFill(currentStyle.r);\n }\n renderer.restore();\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 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 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 for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j];\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length;\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 shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\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 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 styledShape.trNodes = shapeNodes;\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 for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n }\n }\n };\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\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 if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n };\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var grd;\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 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 if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\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 var i;\n var len = styleData.g.p;\n var cValues = itemData.g.c;\n var opacity = 1;\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 grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n }\n styleElem.grd = grd;\n }\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n };\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var d = itemData.d;\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray;\n styleElem[\"do\"] = d.dashoffset[0];\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 if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v;\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 extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\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 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 this.fill = hasFill;\n var hasStroke = false;\n if (documentData.sc) {\n hasStroke = true;\n this.values.stroke = this.buildColor(documentData.sc);\n this.values.sWidth = documentData.sw;\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;\n // this.tHelper.font = this.values.fValue;\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 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 if (singleShape && letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n jLen = shapes.length;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n }\n commands = createSizedArray(jLen - 1);\n var commandsCounter = 0;\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 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 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 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 if (singleShape) {\n xPos += letters[i].l;\n xPos += trackingOffset;\n }\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands;\n } else {\n this.textSpans[cnt] = {\n elem: commands\n };\n }\n cnt += 1;\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');\n // ctx.lineCap = 'butt';\n this.globalData.renderer.ctxLineJoin('miter');\n // ctx.lineJoin = 'miter';\n this.globalData.renderer.ctxMiterLimit(4);\n // ctx.miterLimit = 4;\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\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 for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n if (renderedLetter) {\n renderer.save();\n renderer.ctxTransform(renderedLetter.p);\n renderer.ctxOpacity(renderedLetter.o);\n }\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n renderer.ctxFillStyle(renderedLetter.fc);\n lastFill = renderedLetter.fc;\n // ctx.fillStyle = renderedLetter.fc;\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill;\n renderer.ctxFillStyle(this.values.fill);\n // ctx.fillStyle = this.values.fill;\n }\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\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 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 this.globalData.canvasContext.closePath();\n renderer.ctxFill();\n // this.globalData.canvasContext.fill();\n /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw;\n renderer.ctxLineWidth(renderedLetter.sw);\n // ctx.lineWidth = renderedLetter.sw;\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth;\n renderer.ctxLineWidth(this.values.sWidth);\n // ctx.lineWidth = this.values.sWidth;\n }\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc;\n renderer.ctxStrokeStyle(renderedLetter.sc);\n // ctx.strokeStyle = renderedLetter.sc;\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke;\n renderer.ctxStrokeStyle(this.values.stroke);\n // ctx.strokeStyle = this.values.stroke;\n }\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\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 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 this.globalData.canvasContext.closePath();\n renderer.ctxStroke();\n // this.globalData.canvasContext.stroke();\n /// ctx.strokeText(letters[i].val,0,0);\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 extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\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 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 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 CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0);\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 extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n CVSolidElement.prototype.renderInnerContent = function () {\n // var ctx = this.canvasContext;\n this.globalData.renderer.ctxFillStyle(this.data.sc);\n // ctx.fillStyle = this.data.sc;\n this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh);\n // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n //\n };\n\n function CanvasRendererBase() {}\n extendPrototype([BaseRenderer], CanvasRendererBase);\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this);\n };\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this);\n };\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this);\n };\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this);\n };\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\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 this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n };\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n };\n CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n this.canvasContext.fillStyle = value;\n };\n CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n this.canvasContext.strokeStyle = value;\n };\n CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n this.canvasContext.lineWidth = value;\n };\n CanvasRendererBase.prototype.ctxLineCap = function (value) {\n this.canvasContext.lineCap = value;\n };\n CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n this.canvasContext.lineJoin = value;\n };\n CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n this.canvasContext.miterLimit = value;\n };\n CanvasRendererBase.prototype.ctxFill = function (rule) {\n this.canvasContext.fill(rule);\n };\n CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n this.canvasContext.fillRect(x, y, w, h);\n };\n CanvasRendererBase.prototype.ctxStroke = function () {\n this.canvasContext.stroke();\n };\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n this.contextData.reset();\n };\n CanvasRendererBase.prototype.save = function () {\n this.canvasContext.save();\n };\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n if (actionFlag) {\n this.globalData.blendMode = 'source-over';\n }\n this.contextData.restore(actionFlag);\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 if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\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 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 CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n this.reset();\n var elementWidth;\n var elementHeight;\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 this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n }\n var elementRel;\n var animationRel;\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 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 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 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 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;\n for(i=0;i<len;i+=1){\n if(this.elements[i] && this.elements[i].data.ty === 0){\n this.elements[i].resize(this.globalData.transformCanvas);\n }\n } */\n this.ctxTransform(this.transformCanvas.props);\n this.canvasContext.beginPath();\n this.canvasContext.rect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n this.canvasContext.closePath();\n this.canvasContext.clip();\n this.renderFrame(this.renderedFrame, true);\n };\n CanvasRendererBase.prototype.destroy = function () {\n if (this.renderConfig.clearCanvas && this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n var i;\n var len = this.layers ? this.layers.length : 0;\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n this.elements.length = 0;\n this.globalData.canvasContext = null;\n this.animationItem.container = null;\n this.destroyed = true;\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 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;\n\n // console.log('--------');\n // console.log('NEW: ',num);\n var i;\n var len = this.layers.length;\n if (!this.completeLayers) {\n this.checkLayers(num);\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 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 for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n if (this.renderConfig.clearCanvas !== true) {\n this.restore();\n }\n }\n };\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\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){\n element.resize(this.globalData.transformCanvas);\n } */\n };\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none';\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 function CVContextData() {\n this.stack = [];\n this.cArrPos = 0;\n this.cTr = new Matrix();\n var i;\n var len = 15;\n for (i = 0; i < len; i += 1) {\n var canvasContext = new CanvasContext();\n this.stack[i] = canvasContext;\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 CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2;\n var i = 0;\n for (i = this._length; i < newLength; i += 1) {\n this.stack[i] = new CanvasContext();\n }\n this._length = newLength;\n };\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0;\n this.cTr.reset();\n this.stack[this.cArrPos].opacity = 1;\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 for (i = 0; i < 16; i += 1) {\n arr[i] = transform[i];\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 this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n this.nativeContext.globalAlpha = currentContext.opacity;\n this.currentOpacity = currentContext.opacity;\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 CVContextData.prototype.save = function (saveOnNativeFlag) {\n if (saveOnNativeFlag) {\n this.nativeContext.save();\n }\n var props = this.cTr.props;\n if (this._length <= this.cArrPos) {\n this.duplicate();\n }\n var currentStack = this.stack[this.cArrPos];\n var i;\n for (i = 0; i < 16; i += 1) {\n currentStack.transform[i] = props[i];\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 CVContextData.prototype.setOpacity = function (value) {\n this.stack[this.cArrPos].opacity = value;\n };\n CVContextData.prototype.setContext = function (value) {\n this.nativeContext = value;\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 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 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 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 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 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 CVContextData.prototype.transform = function (props) {\n this.transformMat.cloneFromProps(props);\n // Taking the last transform value from the stored stack of transforms\n var currentTransform = this.cTr;\n // Applying the last transform value after the new transform to respect the order of transformations\n this.transformMat.multiply(currentTransform);\n // Storing the new transformed value in the stored transform\n currentTransform.cloneFromProps(this.transformMat.props);\n var trProps = currentTransform.props;\n // Applying the new transform to the canvas\n this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n };\n CVContextData.prototype.opacity = function (op) {\n var currentOpacity = this.stack[this.cArrPos].opacity;\n currentOpacity *= op < 0 ? 0 : op;\n if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n if (this.currentOpacity !== op) {\n this.nativeContext.globalAlpha = op;\n this.currentOpacity = op;\n }\n this.stack[this.cArrPos].opacity = currentOpacity;\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 this.nativeContext.fill(rule);\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 this.nativeContext.fillRect(x, y, w, h);\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 if (this.appliedLineWidth !== this.currentLineWidth) {\n this.appliedLineWidth = this.currentLineWidth;\n this.nativeContext.lineWidth = this.appliedLineWidth;\n }\n if (this.appliedLineCap !== this.currentLineCap) {\n this.appliedLineCap = this.currentLineCap;\n this.nativeContext.lineCap = this.appliedLineCap;\n }\n if (this.appliedLineJoin !== this.currentLineJoin) {\n this.appliedLineJoin = this.currentLineJoin;\n this.nativeContext.lineJoin = this.appliedLineJoin;\n }\n if (this.appliedMiterLimit !== this.currentMiterLimit) {\n this.appliedMiterLimit = this.currentMiterLimit;\n this.nativeContext.miterLimit = this.appliedMiterLimit;\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 extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\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 for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n CVCompElement.prototype.destroy = function () {\n var i;\n var len = this.layers.length;\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n this.layers = null;\n this.elements = null;\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 if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\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 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 extendPrototype([CanvasRendererBase], CanvasRenderer);\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function HBaseElement() {}\n HBaseElement.prototype = {\n checkBlendMode: function checkBlendMode() {},\n initRendererElement: function initRendererElement() {\n this.baseElement = createTag(this.data.tg || 'div');\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 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 if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\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 if (this.finalTransform._matMdf) {\n var matrixValue = this.finalTransform.mat.toCSS();\n transformedElementStyle.transform = matrixValue;\n transformedElementStyle.webkitTransform = matrixValue;\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 this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.layerElement = null;\n this.transformedElement = null;\n if (this.matteElement) {\n this.matteElement = null;\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 extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n HSolidElement.prototype.createContent = function () {\n var rect;\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 this.layerElement.appendChild(rect);\n };\n\n function HShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = [];\n // Full shape data\n this.shapesData = data.shapes;\n // List of styles that will be applied to shapes\n this.stylesList = [];\n // List of modifiers that will be applied to shapes\n this.shapeModifiers = [];\n // List of items in shape tree\n this.itemsData = [];\n // List of items in previous shape tree\n this.processedElements = [];\n // List of animated components\n this.animatedContents = [];\n this.shapesContainer = createNS('g');\n this.initElement(data, globalData, comp);\n // 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 this.prevViewData = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n }\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n HShapeElement.prototype.createContent = function () {\n var cont;\n this.baseElement.style.fontSize = 0;\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 this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n this.filterUniqueShapes();\n this.shapeCont = cont;\n };\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n var i;\n var len = transformers.length;\n for (i = 0; i < len; i += 1) {\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n }\n return point;\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 if (len <= 1) {\n return;\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 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 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 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 HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\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 a |= 0; // eslint-disable-line no-bitwise\n c |= 0; // eslint-disable-line no-bitwise\n\n if (a === 0 && b === 0) {\n //\n } else if (a === 0) {\n t = -c / b;\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 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 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 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 HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n var i;\n var len = itemsData.length;\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 HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n var width = 0;\n if (widthProperty.keyframes) {\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n var kfw = widthProperty.keyframes[i].s;\n if (kfw > width) {\n width = kfw;\n }\n }\n width *= widthProperty.mult;\n } else {\n width = widthProperty.v * widthProperty.mult;\n }\n boundingBox.x -= width;\n boundingBox.xMax += width;\n boundingBox.y -= width;\n boundingBox.yMax += width;\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 HShapeElement.prototype.renderInnerContent = function () {\n this._renderShapeFrame();\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;\n // var tempBoundingBox = this.shapeCont.getBBox();\n if (this.currentBoxContains(tempBoundingBox)) {\n return;\n }\n var changed = false;\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 if (this.currentBBox.h !== tempBoundingBox.height) {\n this.currentBBox.h = tempBoundingBox.height;\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\n changed = true;\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 extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n HTextElement.prototype.createContent = function () {\n this.isMasked = this.checkMasks();\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 this.checkParenting();\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 if (documentData.sc) {\n innerElemStyle.stroke = this.buildColor(documentData.sc);\n innerElemStyle.strokeWidth = documentData.sw + 'px';\n }\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n if (!this.globalData.fontManager.chars) {\n innerElemStyle.fontSize = documentData.finalSize + 'px';\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\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 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 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 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 }\n // tSpan.setAttribute('visibility', 'hidden');\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 if (charData) {\n shapeData = charData.data;\n } else {\n shapeData = null;\n }\n matrixHelper.reset();\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 if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\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 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 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 if (!this.isMasked) {\n this.textSpans[cnt] = tParent;\n } else {\n this.textSpans[cnt] = tSpan;\n }\n this.textSpans[cnt].style.display = 'block';\n this.textPaths[cnt] = tSpan;\n cnt += 1;\n }\n while (cnt < this.textSpans.length) {\n this.textSpans[cnt].style.display = 'none';\n cnt += 1;\n }\n };\n HTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var svgStyle;\n if (this.data.singleShape) {\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\n return;\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 this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n return;\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 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 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 }\n /// /textSpan.setAttribute('opacity',renderedLetter.o);\n textSpan.style.opacity = renderedLetter.o;\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\n textPath.setAttribute('stroke-width', renderedLetter.sw);\n }\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\n textPath.setAttribute('stroke', renderedLetter.sc);\n }\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\n textPath.setAttribute('fill', renderedLetter.fc);\n textPath.style.color = renderedLetter.fc;\n }\n }\n }\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n var boundingBox = this.innerElem.getBBox();\n if (this.currentBBox.w !== boundingBox.width) {\n this.currentBBox.w = boundingBox.width;\n this.svgElement.setAttribute('width', boundingBox.width);\n }\n if (this.currentBBox.h !== boundingBox.height) {\n this.currentBBox.h = boundingBox.height;\n this.svgElement.setAttribute('height', boundingBox.height);\n }\n var margin = 1;\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 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 if (data.ks.a) {\n this.a = getProp(this, data.ks.a, 1, 0, this);\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 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 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;\n\n // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n this.finalTransform = {\n mProp: this\n };\n }\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\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 for (i = 0; i < len; i += 1) {\n // [perspectiveElem,container]\n comp = this.comp.threeDElements[i];\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 HCameraElement.prototype.createElements = function () {};\n HCameraElement.prototype.hide = function () {};\n HCameraElement.prototype.renderFrame = function () {\n var _mdf = this._isFirstFrame;\n var i;\n var len;\n if (this.hierarchy) {\n len = this.hierarchy.length;\n for (i = 0; i < len; i += 1) {\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\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 if (this.hierarchy) {\n len = this.hierarchy.length - 1;\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 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 if (this.a) {\n var diffVector;\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 var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2));\n // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\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 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 if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n for (i = 0; i < len; i += 1) {\n comp = this.comp.threeDElements[i];\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 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 this.mat.clone(this._prevMat);\n }\n }\n this._isFirstFrame = false;\n };\n HCameraElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n HCameraElement.prototype.destroy = function () {};\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 extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n HImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n var img = new Image();\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 img.crossOrigin = 'anonymous';\n img.src = assetPath;\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 extendPrototype([BaseRenderer], HybridRendererBase);\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n HybridRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newDOMElement = element.getBaseElement();\n if (!newDOMElement) {\n return;\n }\n var layer = this.layers[pos];\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 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 i += 1;\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 HybridRendererBase.prototype.createShape = function (data) {\n if (!this.supports3d) {\n return new SVGShapeElement(data, this.globalData, this);\n }\n return new HShapeElement(data, this.globalData, this);\n };\n HybridRendererBase.prototype.createText = function (data) {\n if (!this.supports3d) {\n return new SVGTextLottieElement(data, this.globalData, this);\n }\n return new HTextElement(data, this.globalData, this);\n };\n HybridRendererBase.prototype.createCamera = function (data) {\n this.camera = new HCameraElement(data, this.globalData, this);\n return this.camera;\n };\n HybridRendererBase.prototype.createImage = function (data) {\n if (!this.supports3d) {\n return new IImageElement(data, this.globalData, this);\n }\n return new HImageElement(data, this.globalData, this);\n };\n HybridRendererBase.prototype.createSolid = function (data) {\n if (!this.supports3d) {\n return new ISolidElement(data, this.globalData, this);\n }\n return new HSolidElement(data, this.globalData, this);\n };\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n var i = 0;\n var len = this.threeDElements.length;\n while (i < len) {\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n return this.threeDElements[i].perspectiveElem;\n }\n i += 1;\n }\n return null;\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 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 perspectiveElem.appendChild(container);\n // this.resizerElem.appendChild(perspectiveElem);\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 HybridRendererBase.prototype.build3dContainers = function () {\n var i;\n var len = this.layers.length;\n var lastThreeDContainerData;\n var currentContainer = '';\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 lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n } else {\n if (currentContainer !== '2d') {\n currentContainer = '2d';\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n }\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n }\n }\n len = this.threeDElements.length;\n for (i = len - 1; i >= 0; i -= 1) {\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n }\n };\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n var i = 0;\n var len = this.threeDElements.length;\n while (i < len) {\n if (pos <= this.threeDElements[i].endPos) {\n var j = this.threeDElements[i].startPos;\n var nextElement;\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n j += 1;\n }\n if (nextElement) {\n this.threeDElements[i].container.insertBefore(elem, nextElement);\n } else {\n this.threeDElements[i].container.appendChild(elem);\n }\n break;\n }\n i += 1;\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 if (this.renderConfig.className) {\n resizerElem.setAttribute('class', this.renderConfig.className);\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;\n // Mask animation\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 HybridRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n this.animationItem.container = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\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 this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\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 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 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 HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n HybridRendererBase.prototype.hide = function () {\n this.resizerElem.style.display = 'none';\n };\n HybridRendererBase.prototype.show = function () {\n this.resizerElem.style.display = 'block';\n };\n HybridRendererBase.prototype.initItems = function () {\n this.buildAllItems();\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 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 HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n var floatingContainer = createTag('div');\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 extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n HCompElement.prototype.createContainerElements = function () {\n this._createBaseContainerElements();\n // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\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 HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n var j = 0;\n var nextElement;\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n j += 1;\n }\n if (nextElement) {\n this.layerElement.insertBefore(elem, nextElement);\n } else {\n this.layerElement.appendChild(elem);\n }\n };\n HCompElement.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\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 extendPrototype([HybridRendererBase], HybridRenderer);\n HybridRenderer.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\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 while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface;\n }\n i += 1;\n }\n return null;\n // return {active:false};\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(o) { \"@babel/helpers - typeof\"; return _typeof$2 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$2(o); }\n /* eslint-disable */\n /*\n Copyright 2014 David Bau.\n\n Permission is hereby granted, free of charge, to any person obtaining\n a copy of this software and associated documentation files (the\n \"Software\"), to deal in the Software without restriction, including\n without limitation the rights to use, copy, modify, merge, publish,\n distribute, sublicense, and/or sell copies of the Software, and to\n permit persons to whom the Software is furnished to do so, subject to\n the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n */\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 //\n // seedrandom()\n // This is the seedrandom function described above.\n //\n function seedrandom(seed, options, callback) {\n var key = [];\n options = options === true ? {\n entropy: true\n } : options || {};\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // 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 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 while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n prng.int32 = function () {\n return arc4.g(4) | 0;\n };\n prng.quick = function () {\n return arc4.g(4) / 0x100000000;\n };\n prng[\"double\"] = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\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 }\n // Only provide the .state method if requested via options.state.\n prng.state = function () {\n return copy(arc4, {});\n };\n }\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 if (is_math_call) {\n math[rngname] = prng;\n return seed;\n }\n\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 math['seed' + rngname] = seedrandom;\n\n //\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 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 = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) {\n key = [keylen++];\n }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\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 }\n\n // The \"g\" method returns the next (count) outputs as one number.\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 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 me.i = i;\n me.j = j;\n return r;\n // 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\n //\n // copy()\n // Copies internal state of ARC4 to or from a plain object.\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\n //\n // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n function flatten(obj, depth) {\n var result = [],\n typ = _typeof$2(obj),\n prop;\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 return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n }\n\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 function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0;\n while (j < stringseed.length) {\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n }\n return tostring(key);\n }\n\n //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width));\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\n //\n // tostring()\n // Converts an array of charcodes to a string\n //\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\n }\n\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 mixkey(math.random(), pool);\n\n //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n\n // End anonymous scope, and pass initial values.\n }\n ;\n function initialize$2(BMMath) {\n seedRandom([], BMMath);\n }\n\n var propTypes = {\n SHAPE: 'shape'\n };\n\n function _typeof$1(o) { \"@babel/helpers - typeof\"; return _typeof$1 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$1(o); }\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 function resetFrame() {\n _lottieGlobal = {};\n }\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array;\n }\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n }\n function $bm_neg(a) {\n var tOfA = _typeof$1(a);\n if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n return -a;\n }\n if ($bm_isInstanceOfArray(a)) {\n var i;\n var lenA = a.length;\n var retArr = [];\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i];\n }\n return retArr;\n }\n if (a.propType) {\n return a.v;\n }\n return -a;\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 function sum(a, b) {\n var tOfA = _typeof$1(a);\n var tOfB = _typeof$1(b);\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n return a + b;\n }\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] += b;\n return a;\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 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 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 i += 1;\n }\n return retArr;\n }\n return 0;\n }\n var add = sum;\n function sub(a, b) {\n var tOfA = _typeof$1(a);\n var tOfB = _typeof$1(b);\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10);\n }\n if (tOfB === 'string') {\n b = parseInt(b, 10);\n }\n return a - b;\n }\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] -= b;\n return a;\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 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 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 i += 1;\n }\n return retArr;\n }\n return 0;\n }\n function mul(a, b) {\n var tOfA = _typeof$1(a);\n var tOfB = _typeof$1(b);\n var arr;\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b;\n }\n var i;\n var len;\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b;\n }\n return arr;\n }\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i];\n }\n return arr;\n }\n return 0;\n }\n function div(a, b) {\n var tOfA = _typeof$1(a);\n var tOfB = _typeof$1(b);\n var arr;\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b;\n }\n var i;\n var len;\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b;\n }\n return arr;\n }\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i];\n }\n return arr;\n }\n return 0;\n }\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10);\n }\n if (typeof b === 'string') {\n b = parseInt(b, 10);\n }\n return a % b;\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 function clamp(num, min, max) {\n if (min > max) {\n var mm = max;\n max = min;\n min = mm;\n }\n return Math.min(Math.max(num, min), max);\n }\n function radiansToDegrees(val) {\n return val / degToRads;\n }\n var radians_to_degrees = radiansToDegrees;\n function degreesToRadians(val) {\n return val * degToRads;\n }\n var degrees_to_radians = radiansToDegrees;\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\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 if (!arr2) {\n arr2 = helperLengthArray;\n }\n var i;\n var len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\n }\n return Math.sqrt(addedLength);\n }\n function normalize(vec) {\n return div(vec, length(vec));\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 if (max === min) {\n h = 0; // achromatic\n s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return [h, s, l, val[3]];\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 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 if (s === 0) {\n r = l; // achromatic\n b = l; // achromatic\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 return [r, g, b, val[3]];\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 if (tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n if (t <= tMin) {\n return value1;\n }\n if (t >= tMax) {\n return value2;\n }\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n if (!value1.length) {\n return value1 + (value2 - value1) * perc;\n }\n var i;\n var len = value1.length;\n var arr = createTypedArray('float32', len);\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n }\n return arr;\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 if (max.length) {\n var i;\n var len = max.length;\n if (!min) {\n min = createTypedArray('float32', len);\n }\n var arr = createTypedArray('float32', len);\n var rnd = BMMath.random();\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i]);\n }\n return arr;\n }\n if (min === undefined) {\n min = 0;\n }\n var rndm = BMMath.random();\n return min + rndm * (max - min);\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 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 return path;\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 if (!elem.globalData.renderConfig.runExpressions) {\n return noOp;\n }\n var val = data.x;\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n var _needsRandom = val.indexOf('random') !== -1;\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._name = elem.data.nm;\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;\n // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n var numKeys = property.kf ? data.k.length : 0;\n var active = !this.data || this.data.hd !== true;\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 while (iWiggle < iterations) {\n // var rnd = BMMath.random();\n for (j = 0; j < lenWiggle; j += 1) {\n addedAmps[j] += -amp + amp * 2 * BMMath.random();\n // addedAmps[j] += -amp + amp*2*rnd;\n }\n iWiggle += 1;\n }\n // var rnd2 = BMMath.random();\n var periods = time * freq;\n var perc = periods - Math.floor(periods);\n var arr = createTypedArray('float32', lenWiggle);\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;\n // 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 return arr;\n }\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n }.bind(this);\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty);\n loop_in = loopIn;\n }\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty);\n loop_out = loopOut;\n }\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty);\n }\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true);\n }\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true);\n }\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this);\n }\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this);\n }\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\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 function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n }\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n }\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\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 if (t > 1) {\n t = 1;\n } else if (t < 0) {\n t = 0;\n }\n var mult = fn(t);\n if ($bm_isInstanceOfArray(val1)) {\n var iKey;\n var lenKey = val1.length;\n var arr = createTypedArray('float32', lenKey);\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n }\n return arr;\n }\n return (val2 - val1) * mult + val1;\n }\n function nearestKey(time) {\n var iKey;\n var lenKey = data.k.length;\n var index;\n var keyTime;\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 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 break;\n }\n }\n if (index === -1) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n }\n }\n var obKey = {};\n obKey.index = index;\n obKey.time = keyTime / elem.comp.globalData.frameRate;\n return obKey;\n }\n function key(ind) {\n var obKey;\n var iKey;\n var lenKey;\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind);\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 for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey];\n obKey.value[iKey] = arr[iKey];\n }\n return obKey;\n }\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n return fr / fps;\n }\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time;\n }\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n return t * fps;\n }\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed);\n }\n function sourceRectAtTime() {\n return elem.sourceRectAtTime();\n }\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init);\n }\n return value.substring(init, end);\n }\n return '';\n }\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init);\n }\n return value.substr(init, end);\n }\n return '';\n }\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n value = valueAtTime(time);\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 function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value;\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value;\n }\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex;\n textTotal = this.textTotal;\n selectorValue = this.selectorValue;\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 if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group');\n $bm_transform = transform;\n if (transform) {\n anchorPoint = transform.anchorPoint;\n /* position = transform.position;\n rotation = transform.rotation;\n scale = transform.scale; */\n }\n }\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group');\n }\n if (!effect) {\n effect = thisLayer(4);\n }\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface;\n }\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n if (_needsRandom) {\n seedRandom(randSeed + time);\n }\n if (needsVelocity) {\n velocity = velocityAtTime(time);\n }\n expression_function();\n this.frameExpressionId = elem.globalData.frameId;\n\n // 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 scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n return scoped_bm_rt;\n }\n // Bundlers will see these as dead code and unless we reference them\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 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 function initExpressions(animation) {\n var stackCount = 0;\n var registers = [];\n function pushExpression() {\n stackCount += 1;\n }\n function popExpression() {\n stackCount -= 1;\n if (stackCount === 0) {\n releaseInstances();\n }\n }\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression);\n }\n }\n function releaseInstances() {\n var i;\n var len = registers.length;\n for (i = 0; i < len; i += 1) {\n registers[i].release();\n }\n registers.length = 0;\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 return ob;\n }();\n\n var MaskManagerInterface = function () {\n function MaskInterface(mask, data) {\n this._mask = mask;\n this._data = data;\n }\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function get() {\n if (this._mask.prop.k) {\n this._mask.prop.getValue();\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 return this._mask.op.v * 100;\n }\n });\n var MaskManager = function MaskManager(maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n var i;\n var len = maskManager.viewData.length;\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n }\n var maskFunction = function maskFunction(name) {\n i = 0;\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i];\n }\n i += 1;\n }\n return null;\n };\n return maskFunction;\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 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 expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0;\n }\n var value = '';\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 var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\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 expressionValue.valueAtTime = property.getValueAtTime;\n expressionValue.speedAtTime = property.getSpeedAtTime;\n expressionValue.velocityAtTime = property.getVelocityAtTime;\n expressionValue.propertyGroup = property.propertyGroup;\n }\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue;\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 expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n val = property.v * mult;\n if (expressionValue.value !== val) {\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n expressionValue.value = val;\n expressionValue[0] = val;\n completeProperty(expressionValue, property, 'unidimensional');\n }\n return expressionValue;\n };\n }\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue;\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 for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult;\n expressionValue[i] = arrValue[i];\n }\n return expressionValue;\n };\n }\n\n // TODO: try to avoid using this getter\n function defaultGetter() {\n return defaultUnidimensionalValue;\n }\n return function (property) {\n if (!property) {\n return defaultGetter;\n }\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property);\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 case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation;\n case 'ADBE Rotate X':\n return _thisFunction.xRotation;\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation;\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position;\n case 'ADBE Position_0':\n return _thisFunction.xPosition;\n case 'ADBE Position_1':\n return _thisFunction.yPosition;\n case 'ADBE Position_2':\n return _thisFunction.zPosition;\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint;\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity;\n default:\n return null;\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 var _px;\n var _py;\n var _pz;\n var _transformFactory;\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p);\n } else {\n _px = ExpressionPropertyInterface(transform.px);\n _py = ExpressionPropertyInterface(transform.py);\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz);\n }\n }\n Object.defineProperty(_thisFunction, 'position', {\n get: function get() {\n if (transform.p) {\n return _transformFactory();\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 if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n propMatrix.clone(toWorldMat);\n } else {\n var transformMat = this._elem.finalTransform.mProp;\n transformMat.applyToMatrix(toWorldMat);\n }\n return toWorldMat;\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 function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.applyPoint(toWorldMat, arr);\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 function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.invertPoint(toWorldMat, arr);\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 for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\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 for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n return matrix.inversePoint(arr);\n }\n function fromComp(arr) {\n var toWorldMat = new Matrix();\n toWorldMat.reset();\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n }\n return toWorldMat.inversePoint(arr);\n }\n return toWorldMat.inversePoint(arr);\n }\n function sampleImage() {\n return [1, 1, 1, 1];\n }\n return function (elem) {\n var transformInterface;\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n }\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects;\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 case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface;\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect;\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface;\n default:\n return null;\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 if (val <= 0) {\n return interfaceFunction;\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 function _propertyGroup(val) {\n val = val === undefined ? 1 : val;\n if (val <= 0) {\n return interfaceFunction;\n }\n return propertyGroup(val - 1);\n }\n return _propertyGroup;\n };\n }();\n\n var EffectsExpressionInterface = function () {\n var ob = {\n createEffectsInterface: createEffectsInterface\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 for (i = 0; i < len; i += 1) {\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n }\n var effects = elem.data.ef || [];\n var groupInterface = function groupInterface(name) {\n i = 0;\n len = effects.length;\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i];\n }\n i += 1;\n }\n return null;\n };\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function get() {\n return effects.length;\n }\n });\n return groupInterface;\n }\n return null;\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 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 return effectElements[i]();\n }\n i += 1;\n }\n throw new Error();\n }\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n var effectElements = [];\n var i;\n var len = data.ef.length;\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 if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function get() {\n return effectElements[0]();\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 function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p);\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v);\n }\n return expressionProperty();\n }\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n }\n return interfaceFunction;\n }\n return ob;\n }();\n\n var ShapePathInterface = function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh;\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 return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\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 return prop;\n }\n },\n shape: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\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 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') {\n // 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 return arr;\n }\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces;\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0;\n var len = interfaces.length;\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 i += 1;\n }\n if (typeof value === 'number') {\n return interfaces[value - 1];\n }\n return null;\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 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 default:\n return interfaceFunction.transform;\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 });\n // interfaceFunction.content = interfaceFunction;\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 function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n return null;\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 function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint;\n }\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint;\n }\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n return null;\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 function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null;\n }\n return interfaceFunction;\n }\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n });\n }\n var i;\n var len = shape.d ? shape.d.length : 0;\n var dashOb = {};\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i);\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n }\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth;\n }\n return null;\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 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 if (val === shape.s.ix) {\n return interfaceFunction.start;\n }\n if (val === shape.o.ix) {\n return interfaceFunction.offset;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\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 function transformInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.a.ix === value || value === 'Anchor Point') {\n return interfaceFunction.anchorPoint;\n }\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity;\n }\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position;\n }\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation;\n }\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale;\n }\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n return interfaceFunction.skew;\n }\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n return interfaceFunction.skewAxis;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\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 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 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 function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n if (shape.s.ix === value) {\n return interfaceFunction.size;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\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 function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n if (shape.r.ix === value) {\n return interfaceFunction.rotation;\n }\n if (shape.pt.ix === value) {\n return interfaceFunction.points;\n }\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius;\n }\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness;\n }\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius;\n }\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\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 if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\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 function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n if (shape.r.ix === value) {\n return interfaceFunction.roundness;\n }\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\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 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 return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\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 function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies;\n }\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\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 return function (shapes, view, propertyGroup) {\n var interfaces;\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value;\n if (value === 0) {\n return propertyGroup;\n }\n return interfaces[value - 1];\n }\n var i = 0;\n var len = interfaces.length;\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i];\n }\n i += 1;\n }\n return null;\n }\n function parentGroupWrapper() {\n return propertyGroup;\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 function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText;\n default:\n return null;\n }\n }\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function get() {\n elem.textProperty.getValue();\n var stringValue = elem.textProperty.currentData.t;\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 _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n Object.defineProperty(_sourceText, 'style', {\n get: function get() {\n return {\n fillColor: elem.textProperty.currentData.fc\n };\n }\n });\n }\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\n }();\n\n function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n var FootageInterface = function () {\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n var currentPropertyName = '';\n var currentProperty = elem.getFootageData();\n function init() {\n currentPropertyName = '';\n currentProperty = elem.getFootageData();\n return searchProperty;\n }\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value;\n currentProperty = currentProperty[value];\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n return currentProperty;\n }\n var propertyNameIndex = value.indexOf(currentPropertyName);\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n currentProperty = currentProperty[index];\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n return currentProperty;\n }\n return '';\n }\n return init;\n };\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface();\n }\n return null;\n }\n interfaceFunction._name = 'Outline';\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n return interfaceFunction;\n };\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface;\n }\n return null;\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 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 function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\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 return this._cachingAtTime.value;\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 if (v1.length) {\n var i;\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2);\n }\n speed = Math.sqrt(speed) * 100;\n } else {\n speed = 0;\n }\n return speed;\n }\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel;\n }\n var delta = -0.001;\n // frameNum += this.elem.data.st;\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var velocity;\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length);\n var i;\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 return velocity;\n }\n function getStaticValueAtTime() {\n return this.pv;\n }\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup;\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 type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\n if (currentFrame <= lastKeyFrame) {\n return this.pv;\n }\n var cycleDuration;\n var firstKeyFrame;\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\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 firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n var i;\n var len;\n var ret;\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\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 var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n }\n return ret;\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 if (this.pv.length) {\n ret = new Array(lastValue.length);\n len = ret.length;\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 return ret;\n }\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n }\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv;\n }\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var firstKeyFrame = keyframes[0].t;\n if (currentFrame >= firstKeyFrame) {\n return this.pv;\n }\n var cycleDuration;\n var lastKeyFrame;\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\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 lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n var i;\n var len;\n var ret;\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\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 if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n }\n return ret;\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 if (this.pv.length) {\n ret = new Array(firstValue.length);\n len = ret.length;\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n }\n return ret;\n }\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n }\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv;\n }\n width = (width || 0.4) * 0.5;\n samples = Math.floor(samples || 5);\n if (samples <= 1) {\n return this.pv;\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 if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n var sampleValue;\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\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 i += 1;\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 return value;\n }\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix()\n };\n }\n /// /\n var matrix = this._transformCachingAtTime.v;\n matrix.cloneFromProps(this.pre.props);\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 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 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 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 if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time);\n var positionY = this.py.getValueAtTime(time);\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 return matrix;\n /// /\n }\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix());\n }\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n var propertyGetProp = PropertyFactory.getProp;\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container);\n // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\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 if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem, data, prop);\n if (prop.k) {\n container.addDynamicProperty(prop);\n }\n return prop;\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 frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\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 return this._cachingAtTime.shapeValue;\n }\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n function ShapeExpressions() {}\n ShapeExpressions.prototype = {\n vertices: function vertices(prop, time) {\n if (this.k) {\n this.getValue();\n }\n var shapePath = this.v;\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\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 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 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 if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath);\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 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 i += 1;\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 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 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 if (magnitude === 0) {\n return [0, 0];\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 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 if (type === 3) {\n expressionHelpers.searchExpressions(elem, data.pt, prop);\n } else if (type === 4) {\n expressionHelpers.searchExpressions(elem, data.ks, prop);\n }\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n return prop;\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 return null;\n }\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text);\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 return currentValue;\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 TextProperty.prototype.searchExpressions = searchExpressions;\n }\n function initialize() {\n addDecorator();\n }\n\n function SVGComposableEffect() {}\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 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 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 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 extendPrototype([SVGComposableEffect], SVGTintFilter);\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 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 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 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 groupPath = createNS('g');\n groupPath.setAttribute('fill', 'none');\n groupPath.setAttribute('stroke-linecap', 'round');\n groupPath.setAttribute('stroke-dashoffset', 1);\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 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 while (elemChildren[0]) {\n g.appendChild(elemChildren[0]);\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 while (elemChildren.length) {\n this.elem.layerElement.removeChild(elemChildren[0]);\n }\n }\n this.elem.layerElement.appendChild(groupPath);\n this.elem.layerElement.removeAttribute('mask');\n groupPath.setAttribute('stroke', '#fff');\n }\n this.initialized = true;\n this.pathMasker = groupPath;\n };\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n if (!this.initialized) {\n this.initialize();\n }\n var i;\n var len = this.paths.length;\n var mask;\n var path;\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 if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n path.setAttribute('d', mask.lastPath);\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 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 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 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 path.setAttribute('stroke-dasharray', dasharrayValue);\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 if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\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 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');\n\n // Red\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 }\n // Green\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 }\n // Blue\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 }\n // Alpha\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 }\n // RGB\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\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 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 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 while (cnt <= 256) {\n perc = cnt / 256;\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 table[pos] = colorValue;\n pos += 1;\n cnt += 256 / (segments - 1);\n }\n return table.join(' ');\n };\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var val;\n var effectElements = this.filterManager.effectElements;\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 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 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 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 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 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 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 if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\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 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 SVGMatte3Effect.prototype.findSymbol = function (mask) {\n var i = 0;\n var len = _svgMatteSymbols.length;\n while (i < len) {\n if (_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n i += 1;\n }\n return null;\n };\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n if (!parentNode) {\n return;\n }\n var children = parentNode.children;\n var i = 0;\n var len = children.length;\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n i += 1;\n }\n var nextChild;\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n if (nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\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 _svgMatteSymbols.push(mask);\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 elem.setMatte(mask.layerId);\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 while (i < len) {\n if (elements[i] && elements[i].data.ind === ind) {\n this.setElementAsMask(this.elem, elements[i]);\n }\n i += 1;\n }\n this.initialized = true;\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 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;\n\n // Dimensions mapping:\n //\n // 1 -> horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY);\n\n // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n };\n\n function TransformEffect() {}\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 TransformEffect.prototype.renderFrame = function (forceFrame) {\n this._opMdf = false;\n this._mdf = false;\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 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 extendPrototype([TransformEffect], SVGTransformEffect);\n\n function CVTransformEffect(effectsManager) {\n this.init(effectsManager);\n }\n extendPrototype([TransformEffect], CVTransformEffect);\n\n // Registering renderers\n registerRenderer('canvas', CanvasRenderer);\n registerRenderer('html', HybridRenderer);\n registerRenderer('svg', SVGRenderer);\n\n // Registering shape modifiers\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);\n\n // Registering expression plugin\n setExpressionsPlugin(Expressions);\n setExpressionInterfaces(getInterface);\n initialize$1();\n initialize();\n\n // Registering svg effects\n registerEffect$1(20, SVGTintFilter, true);\n registerEffect$1(21, SVGFillFilter, true);\n registerEffect$1(22, SVGStrokeEffect, false);\n registerEffect$1(23, SVGTritoneFilter, true);\n registerEffect$1(24, SVGProLevelsFilter, true);\n registerEffect$1(25, SVGDropShadowEffect, true);\n registerEffect$1(28, SVGMatte3Effect, false);\n registerEffect$1(29, SVGGaussianBlurEffect, true);\n registerEffect$1(35, SVGTransformEffect, false);\n registerEffect(35, CVTransformEffect);\n\n return lottie;\n\n}));\n","import lottie from 'lottie-web';\nexport { default as LottiePlayer } from 'lottie-web';\nimport React, { useState, useRef, useEffect } from 'react';\n\nfunction _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nfunction _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = _objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var s = Object.getOwnPropertySymbols(e);\n for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nfunction _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nfunction _slicedToArray(r, e) {\n return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n }\n}\n\nvar _excluded$1 = [\"animationData\", \"loop\", \"autoplay\", \"initialSegment\", \"onComplete\", \"onLoopComplete\", \"onEnterFrame\", \"onSegmentStart\", \"onConfigReady\", \"onDataReady\", \"onDataFailed\", \"onLoadedImages\", \"onDOMLoaded\", \"onDestroy\", \"lottieRef\", \"renderer\", \"name\", \"assetsPath\", \"rendererSettings\"];\nvar useLottie = function useLottie(props, style) {\n var animationData = props.animationData,\n loop = props.loop,\n autoplay = props.autoplay,\n initialSegment = props.initialSegment,\n onComplete = props.onComplete,\n onLoopComplete = props.onLoopComplete,\n onEnterFrame = props.onEnterFrame,\n onSegmentStart = props.onSegmentStart,\n onConfigReady = props.onConfigReady,\n onDataReady = props.onDataReady,\n onDataFailed = props.onDataFailed,\n onLoadedImages = props.onLoadedImages,\n onDOMLoaded = props.onDOMLoaded,\n onDestroy = props.onDestroy;\n props.lottieRef;\n props.renderer;\n props.name;\n props.assetsPath;\n props.rendererSettings;\n var rest = _objectWithoutProperties(props, _excluded$1);\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n animationLoaded = _useState2[0],\n setAnimationLoaded = _useState2[1];\n var animationInstanceRef = useRef();\n var animationContainer = useRef(null);\n /*\n ======================================\n INTERACTION METHODS\n ======================================\n */\n /**\n * Play\n */\n var play = function play() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.play();\n };\n /**\n * Stop\n */\n var stop = function stop() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.stop();\n };\n /**\n * Pause\n */\n var pause = function pause() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.pause();\n };\n /**\n * Set animation speed\n * @param speed\n */\n var setSpeed = function setSpeed(speed) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setSpeed(speed);\n };\n /**\n * Got to frame and play\n * @param value\n * @param isFrame\n */\n var goToAndPlay = function goToAndPlay(value, isFrame) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.goToAndPlay(value, isFrame);\n };\n /**\n * Got to frame and stop\n * @param value\n * @param isFrame\n */\n var goToAndStop = function goToAndStop(value, isFrame) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.goToAndStop(value, isFrame);\n };\n /**\n * Set animation direction\n * @param direction\n */\n var setDirection = function setDirection(direction) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setDirection(direction);\n };\n /**\n * Play animation segments\n * @param segments\n * @param forceFlag\n */\n var playSegments = function playSegments(segments, forceFlag) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.playSegments(segments, forceFlag);\n };\n /**\n * Set sub frames\n * @param useSubFrames\n */\n var setSubframe = function setSubframe(useSubFrames) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setSubframe(useSubFrames);\n };\n /**\n * Get animation duration\n * @param inFrames\n */\n var getDuration = function getDuration(inFrames) {\n var _a;\n return (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.getDuration(inFrames);\n };\n /**\n * Destroy animation\n */\n var destroy = function destroy() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n // Removing the reference to the animation so separate cleanups are skipped.\n // Without it the internal `lottie-react` instance throws exceptions as it already cleared itself on destroy.\n animationInstanceRef.current = undefined;\n };\n /*\n ======================================\n LOTTIE\n ======================================\n */\n /**\n * Load a new animation, and if it's the case, destroy the previous one\n * @param {Object} forcedConfigs\n */\n var loadAnimation = function loadAnimation() {\n var forcedConfigs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _a;\n // Return if the container ref is null\n if (!animationContainer.current) {\n return;\n }\n // Destroy any previous instance\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n // Build the animation configuration\n var config = _objectSpread2(_objectSpread2(_objectSpread2({}, props), forcedConfigs), {}, {\n container: animationContainer.current\n });\n // Save the animation instance\n animationInstanceRef.current = lottie.loadAnimation(config);\n setAnimationLoaded(!!animationInstanceRef.current);\n // Return a function that will clean up\n return function () {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n animationInstanceRef.current = undefined;\n };\n };\n /**\n * (Re)Initialize when animation data changed\n */\n useEffect(function () {\n var onUnmount = loadAnimation();\n // Clean up on unmount\n return function () {\n return onUnmount === null || onUnmount === void 0 ? void 0 : onUnmount();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [animationData, loop]);\n // Update the autoplay state\n useEffect(function () {\n if (!animationInstanceRef.current) {\n return;\n }\n animationInstanceRef.current.autoplay = !!autoplay;\n }, [autoplay]);\n // Update the initial segment state\n useEffect(function () {\n if (!animationInstanceRef.current) {\n return;\n }\n // When null should reset to default animation length\n if (!initialSegment) {\n animationInstanceRef.current.resetSegments(true);\n return;\n }\n // If it's not a valid segment, do nothing\n if (!Array.isArray(initialSegment) || !initialSegment.length) {\n return;\n }\n // If the current position it's not in the new segment\n // set the current position to start\n if (animationInstanceRef.current.currentRawFrame < initialSegment[0] || animationInstanceRef.current.currentRawFrame > initialSegment[1]) {\n animationInstanceRef.current.currentRawFrame = initialSegment[0];\n }\n // Update the segment\n animationInstanceRef.current.setSegment(initialSegment[0], initialSegment[1]);\n }, [initialSegment]);\n /*\n ======================================\n EVENTS\n ======================================\n */\n /**\n * Reinitialize listener on change\n */\n useEffect(function () {\n var partialListeners = [{\n name: \"complete\",\n handler: onComplete\n }, {\n name: \"loopComplete\",\n handler: onLoopComplete\n }, {\n name: \"enterFrame\",\n handler: onEnterFrame\n }, {\n name: \"segmentStart\",\n handler: onSegmentStart\n }, {\n name: \"config_ready\",\n handler: onConfigReady\n }, {\n name: \"data_ready\",\n handler: onDataReady\n }, {\n name: \"data_failed\",\n handler: onDataFailed\n }, {\n name: \"loaded_images\",\n handler: onLoadedImages\n }, {\n name: \"DOMLoaded\",\n handler: onDOMLoaded\n }, {\n name: \"destroy\",\n handler: onDestroy\n }];\n var listeners = partialListeners.filter(function (listener) {\n return listener.handler != null;\n });\n if (!listeners.length) {\n return;\n }\n var deregisterList = listeners.map(\n /**\n * Handle the process of adding an event listener\n * @param {Listener} listener\n * @return {Function} Function that deregister the listener\n */\n function (listener) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener(listener.name, listener.handler);\n // Return a function to deregister this listener\n return function () {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener(listener.name, listener.handler);\n };\n });\n // Deregister listeners on unmount\n return function () {\n deregisterList.forEach(function (deregister) {\n return deregister();\n });\n };\n }, [onComplete, onLoopComplete, onEnterFrame, onSegmentStart, onConfigReady, onDataReady, onDataFailed, onLoadedImages, onDOMLoaded, onDestroy]);\n /**\n * Build the animation view\n */\n var View = /*#__PURE__*/React.createElement(\"div\", _objectSpread2({\n style: style,\n ref: animationContainer\n }, rest));\n return {\n View: View,\n play: play,\n stop: stop,\n pause: pause,\n setSpeed: setSpeed,\n goToAndStop: goToAndStop,\n goToAndPlay: goToAndPlay,\n setDirection: setDirection,\n playSegments: playSegments,\n setSubframe: setSubframe,\n getDuration: getDuration,\n destroy: destroy,\n animationContainerRef: animationContainer,\n animationLoaded: animationLoaded,\n animationItem: animationInstanceRef.current\n };\n};\n\n// helpers\nfunction getContainerVisibility(container) {\n var _container$getBoundin = container.getBoundingClientRect(),\n top = _container$getBoundin.top,\n height = _container$getBoundin.height;\n var current = window.innerHeight - top;\n var max = window.innerHeight + height;\n return current / max;\n}\nfunction getContainerCursorPosition(container, cursorX, cursorY) {\n var _container$getBoundin2 = container.getBoundingClientRect(),\n top = _container$getBoundin2.top,\n left = _container$getBoundin2.left,\n width = _container$getBoundin2.width,\n height = _container$getBoundin2.height;\n var x = (cursorX - left) / width;\n var y = (cursorY - top) / height;\n return {\n x: x,\n y: y\n };\n}\nvar useInitInteractivity = function useInitInteractivity(_ref) {\n var wrapperRef = _ref.wrapperRef,\n animationItem = _ref.animationItem,\n mode = _ref.mode,\n actions = _ref.actions;\n useEffect(function () {\n var wrapper = wrapperRef.current;\n if (!wrapper || !animationItem || !actions.length) {\n return;\n }\n animationItem.stop();\n var scrollModeHandler = function scrollModeHandler() {\n var assignedSegment = null;\n var scrollHandler = function scrollHandler() {\n var currentPercent = getContainerVisibility(wrapper);\n // Find the first action that satisfies the current position conditions\n var action = actions.find(function (_ref2) {\n var visibility = _ref2.visibility;\n return visibility && currentPercent >= visibility[0] && currentPercent <= visibility[1];\n });\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n if (action.type === \"seek\" && action.visibility && action.frames.length === 2) {\n // Seek: Go to a frame based on player scroll position action\n var frameToGo = action.frames[0] + Math.ceil((currentPercent - action.visibility[0]) / (action.visibility[1] - action.visibility[0]) * action.frames[1]);\n //! goToAndStop must be relative to the start of the current segment\n animationItem.goToAndStop(frameToGo - animationItem.firstFrame - 1, true);\n }\n if (action.type === \"loop\") {\n // Loop: Loop a given frames\n if (assignedSegment === null) {\n // if not playing any segments currently. play those segments and save to state\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n } else {\n // if playing any segments currently.\n //check if segments in state are equal to the frames selected by action\n if (assignedSegment !== action.frames) {\n // if they are not equal. new segments are to be loaded\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n } else if (animationItem.isPaused) {\n // if they are equal the play method must be called only if lottie is paused\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n }\n }\n }\n if (action.type === \"play\" && animationItem.isPaused) {\n // Play: Reset segments and continue playing full animation from current position\n animationItem.resetSegments(true);\n animationItem.play();\n }\n if (action.type === \"stop\") {\n // Stop: Stop playback\n animationItem.goToAndStop(action.frames[0] - animationItem.firstFrame - 1, true);\n }\n };\n document.addEventListener(\"scroll\", scrollHandler);\n return function () {\n document.removeEventListener(\"scroll\", scrollHandler);\n };\n };\n var cursorModeHandler = function cursorModeHandler() {\n var handleCursor = function handleCursor(_x, _y) {\n var x = _x;\n var y = _y;\n // Resolve cursor position if cursor is inside container\n if (x !== -1 && y !== -1) {\n // Get container cursor position\n var pos = getContainerCursorPosition(wrapper, x, y);\n // Use the resolved position\n x = pos.x;\n y = pos.y;\n }\n // Find the first action that satisfies the current position conditions\n var action = actions.find(function (_ref3) {\n var position = _ref3.position;\n if (position && Array.isArray(position.x) && Array.isArray(position.y)) {\n return x >= position.x[0] && x <= position.x[1] && y >= position.y[0] && y <= position.y[1];\n }\n if (position && !Number.isNaN(position.x) && !Number.isNaN(position.y)) {\n return x === position.x && y === position.y;\n }\n return false;\n });\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n // Process action types:\n if (action.type === \"seek\" && action.position && Array.isArray(action.position.x) && Array.isArray(action.position.y) && action.frames.length === 2) {\n // Seek: Go to a frame based on player scroll position action\n var xPercent = (x - action.position.x[0]) / (action.position.x[1] - action.position.x[0]);\n var yPercent = (y - action.position.y[0]) / (action.position.y[1] - action.position.y[0]);\n animationItem.playSegments(action.frames, true);\n animationItem.goToAndStop(Math.ceil((xPercent + yPercent) / 2 * (action.frames[1] - action.frames[0])), true);\n }\n if (action.type === \"loop\") {\n animationItem.playSegments(action.frames, true);\n }\n if (action.type === \"play\") {\n // Play: Reset segments and continue playing full animation from current position\n if (animationItem.isPaused) {\n animationItem.resetSegments(false);\n }\n animationItem.playSegments(action.frames);\n }\n if (action.type === \"stop\") {\n animationItem.goToAndStop(action.frames[0], true);\n }\n };\n var mouseMoveHandler = function mouseMoveHandler(ev) {\n handleCursor(ev.clientX, ev.clientY);\n };\n var mouseOutHandler = function mouseOutHandler() {\n handleCursor(-1, -1);\n };\n wrapper.addEventListener(\"mousemove\", mouseMoveHandler);\n wrapper.addEventListener(\"mouseout\", mouseOutHandler);\n return function () {\n wrapper.removeEventListener(\"mousemove\", mouseMoveHandler);\n wrapper.removeEventListener(\"mouseout\", mouseOutHandler);\n };\n };\n switch (mode) {\n case \"scroll\":\n return scrollModeHandler();\n case \"cursor\":\n return cursorModeHandler();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mode, animationItem]);\n};\nvar useLottieInteractivity = function useLottieInteractivity(_ref4) {\n var actions = _ref4.actions,\n mode = _ref4.mode,\n lottieObj = _ref4.lottieObj;\n var animationItem = lottieObj.animationItem,\n View = lottieObj.View,\n animationContainerRef = lottieObj.animationContainerRef;\n useInitInteractivity({\n actions: actions,\n animationItem: animationItem,\n mode: mode,\n wrapperRef: animationContainerRef\n });\n return View;\n};\n\nvar _excluded = [\"style\", \"interactivity\"];\nvar Lottie = function Lottie(props) {\n var _a, _b, _c;\n var style = props.style,\n interactivity = props.interactivity,\n lottieProps = _objectWithoutProperties(props, _excluded);\n /**\n * Initialize the 'useLottie' hook\n */\n var _useLottie = useLottie(lottieProps, style),\n View = _useLottie.View,\n play = _useLottie.play,\n stop = _useLottie.stop,\n pause = _useLottie.pause,\n setSpeed = _useLottie.setSpeed,\n goToAndStop = _useLottie.goToAndStop,\n goToAndPlay = _useLottie.goToAndPlay,\n setDirection = _useLottie.setDirection,\n playSegments = _useLottie.playSegments,\n setSubframe = _useLottie.setSubframe,\n getDuration = _useLottie.getDuration,\n destroy = _useLottie.destroy,\n animationContainerRef = _useLottie.animationContainerRef,\n animationLoaded = _useLottie.animationLoaded,\n animationItem = _useLottie.animationItem;\n /**\n * Make the hook variables/methods available through the provided 'lottieRef'\n */\n useEffect(function () {\n if (props.lottieRef) {\n props.lottieRef.current = {\n play: play,\n stop: stop,\n pause: pause,\n setSpeed: setSpeed,\n goToAndPlay: goToAndPlay,\n goToAndStop: goToAndStop,\n setDirection: setDirection,\n playSegments: playSegments,\n setSubframe: setSubframe,\n getDuration: getDuration,\n destroy: destroy,\n animationContainerRef: animationContainerRef,\n animationLoaded: animationLoaded,\n animationItem: animationItem\n };\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [(_a = props.lottieRef) === null || _a === void 0 ? void 0 : _a.current]);\n return useLottieInteractivity({\n lottieObj: {\n View: View,\n play: play,\n stop: stop,\n pause: pause,\n setSpeed: setSpeed,\n goToAndStop: goToAndStop,\n goToAndPlay: goToAndPlay,\n setDirection: setDirection,\n playSegments: playSegments,\n setSubframe: setSubframe,\n getDuration: getDuration,\n destroy: destroy,\n animationContainerRef: animationContainerRef,\n animationLoaded: animationLoaded,\n animationItem: animationItem\n },\n actions: (_b = interactivity === null || interactivity === void 0 ? void 0 : interactivity.actions) !== null && _b !== void 0 ? _b : [],\n mode: (_c = interactivity === null || interactivity === void 0 ? void 0 : interactivity.mode) !== null && _c !== void 0 ? _c : \"scroll\"\n });\n};\n\nexport { Lottie as default, useLottie, useLottieInteractivity };\n//# sourceMappingURL=index.es.js.map\n","import React from 'react'\r\nimport Lottie from 'lottie-react'\r\nimport { Linodeurl } from '../../const'\r\n\r\n// No custom JSX intrinsic elements needed when using lottie-react\r\n\r\ninterface LottieModeProps {\r\n autoplay: boolean\r\n loop: boolean\r\n height: string\r\n width: string\r\n}\r\n\r\nexport interface LottieComponentProps {\r\n lottieurl: string\r\n linktype: string\r\n link: {\r\n url: string\r\n target: string\r\n }\r\n product: {\r\n _id: string\r\n code: string\r\n name: object\r\n pd_type: string\r\n }\r\n page: {\r\n _id: string\r\n code: string\r\n name: object\r\n pg_type: string\r\n facet_params: any[]\r\n track_params: any[]\r\n }\r\n tag: {\r\n _id: string\r\n code: string\r\n name: object\r\n tagtype: string\r\n }\r\n mode: {\r\n web: LottieModeProps\r\n mobileweb: LottieModeProps\r\n mobileapp: LottieModeProps\r\n tablet: LottieModeProps\r\n }\r\n}\r\n\r\ninterface LottieComponentMainProps {\r\n props: LottieComponentProps\r\n deviceMode?: 'web' | 'mobileweb' | 'mobileapp' | 'tablet'\r\n}\r\n\r\nconst LottieComponent: React.FC<LottieComponentMainProps> = ({ props, deviceMode = 'web' }) => {\r\n const bannerLink = (element: any): string | null => {\r\n if (!element || !element.linktype) return null;\r\n\r\n switch (element.linktype) {\r\n case 'NONE':\r\n return null;\r\n\r\n case 'EXTERNAL':\r\n case 'EXTERNAL_LINK':\r\n return element.link?.url || null;\r\n\r\n case 'PRODUCT': {\r\n const pdType = element.product?.pd_type;\r\n const code =\r\n element.product?.pd_id?.code ||\r\n element.product?.code ||\r\n element.product?.product_data?.code;\r\n\r\n if (!code) return null;\r\n\r\n return pdType === 'VARIANT'\r\n ? `/${code}/s?type=variant`\r\n : `/${code}/s?type=model`;\r\n }\r\n\r\n case 'TAG': {\r\n const tagCode = element.tag?.code;\r\n if (!tagCode) return null;\r\n return `/${tagCode}/s?type=tag`;\r\n }\r\n\r\n case 'PAGE': {\r\n const pageId = element.page?._id || element.page?.code;\r\n const pgType = element.page?.pg_type?.toLowerCase();\r\n if (!pageId || !pgType) return null;\r\n return `/page/${pageId}?type=${pgType}`;\r\n }\r\n\r\n default:\r\n return element.slug || null;\r\n }\r\n };\r\n\r\n\r\n const link = bannerLink(props)\r\n\r\n\r\n const getCurrentMode = (): LottieModeProps => {\r\n switch (deviceMode) {\r\n case 'mobileweb':\r\n return props.mode.mobileweb\r\n case 'mobileapp':\r\n return props.mode.mobileapp\r\n case 'tablet':\r\n return props.mode.tablet\r\n case 'web':\r\n default:\r\n return props.mode.web\r\n }\r\n }\r\n\r\n const currentMode = getCurrentMode()\r\n\r\n const src = props.lottieurl?.startsWith('http')\r\n ? props.lottieurl\r\n : `${Linodeurl}${props.lottieurl}`\r\n\r\n const isClickable = bannerLink(props) !== null\r\n\r\n const [animationData, setAnimationData] = React.useState<any | null>(null)\r\n const [error, setError] = React.useState<string | null>(null)\r\n\r\n React.useEffect(() => {\r\n let isMounted = true\r\n const controller = new AbortController()\r\n setAnimationData(null)\r\n setError(null)\r\n fetch(src, { signal: controller.signal })\r\n .then(async (res) => {\r\n if (!res.ok) throw new Error(`Failed to load lottie json: ${res.status}`)\r\n return res.json()\r\n })\r\n .then((json) => {\r\n if (isMounted) setAnimationData(json)\r\n })\r\n .catch((e) => {\r\n if (isMounted && e.name !== 'AbortError') setError(e.message || 'Failed to load animation')\r\n })\r\n return () => {\r\n isMounted = false\r\n controller.abort()\r\n }\r\n }, [src])\r\n\r\n return (\r\n <>\r\n {link?(\r\n <a \r\n href={link}\r\n target={props?.linktype=='EXTERNAL' ? props?.link?.target :'_self'}\r\n >\r\n <div\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n display: 'inline-block',\r\n backgroundColor: 'white',\r\n cursor: isClickable ? 'pointer' : 'default',\r\n }}\r\n \r\n >\r\n {animationData && (\r\n <Lottie\r\n animationData={animationData}\r\n loop={currentMode.loop}\r\n autoplay={currentMode.autoplay}\r\n style={{ width: '100%', height: '100%' }}\r\n />\r\n )}\r\n {!animationData && !error && (\r\n <div style={{ width: '100%', height: '100%' }} />\r\n )}\r\n {error && (\r\n <div style={{ fontSize: '12px', color: '#999' }}>Failed to load animation</div>\r\n )}\r\n </div>\r\n </a>\r\n ):(\r\n <div\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n display: 'inline-block',\r\n backgroundColor: 'white',\r\n cursor: isClickable ? 'pointer' : 'default',\r\n }}\r\n \r\n >\r\n {animationData && (\r\n <Lottie\r\n animationData={animationData}\r\n loop={currentMode.loop}\r\n autoplay={currentMode.autoplay}\r\n style={{ width: '100%', height: '100%' }}\r\n />\r\n )}\r\n {!animationData && !error && (\r\n <div style={{ width: '100%', height: '100%' }} />\r\n )}\r\n {error && (\r\n <div style={{ fontSize: '12px', color: '#999' }}>Failed to load animation</div>\r\n )}\r\n </div>\r\n )}\r\n </>\r\n )\r\n}\r\n\r\nexport default LottieComponent","import React, { useState, useEffect, useCallback } from 'react';\nimport { Linodeurl } from '../../const';\n\n// Types for the carousel props\ninterface Slide {\n sl_id: string;\n name: string;\n sl_type: string;\n image: {\n isDynamic: boolean;\n url: string;\n alt: string;\n width: number | null;\n height: number | null;\n };\n video: {\n url?: string;\n alt?: string;\n };\n link_type: string; // NONE | EXTERNALLINK | PRODUCT | TAG | PAGE\n product: any;\n tag: any;\n page: any;\n external_link: {\n url: string;\n target: string;\n };\n}\n\ninterface SlideMode {\n web: {\n slidesToShow: number;\n };\n mobileweb: {\n slidesToShow: number;\n };\n mobileapp: {\n slidesToShow: number;\n };\n tablet: {\n slidesToShow: number;\n };\n}\n\ninterface SlidesData {\n all: Slide[];\n mode: SlideMode;\n}\n\nexport interface CarouselProps {\n name: string;\n code: string;\n scrollMode: string;\n autoplay: boolean;\n autoplayInterval: number;\n pauseOnHover: boolean;\n speed: number;\n height: string;\n vertical: boolean;\n sliderArrowVisible: boolean;\n pagingDotVisible: boolean;\n objectFit: string;\n slides: SlidesData[];\n}\n\ninterface CarouselComponentMainProps {\n props: CarouselProps;\n deviceMode?: string;\n}\n\nconst CarouselComponent: React.FC<CarouselComponentMainProps> = ({\n props,\n deviceMode = 'web'\n}) => {\n const [currentSlide, setCurrentSlide] = useState(0);\n const [isPlaying, setIsPlaying] = useState(props.autoplay);\n const [isHovered, setIsHovered] = useState(false);\n \n const slides = props.slides[0].all;\n const totalSlides = slides.length;\n\n // Function to go to next slide (advance by 1 to support wrap pairs)\n const nextSlide = useCallback(() => {\n setCurrentSlide((prev) => (prev + 1) % totalSlides);\n }, [totalSlides]);\n\n // Function to go to previous slide\n const prevSlide = useCallback(() => {\n setCurrentSlide((prev) => (prev - 1 + totalSlides) % totalSlides);\n }, [totalSlides]);\n\n // Function to go to specific slide start index\n const goToSlide = (index: number) => {\n setCurrentSlide(index % totalSlides);\n };\n\n // Handle autoplay\n useEffect(() => {\n if (!props.autoplay || !isPlaying || isHovered) return;\n\n const interval = setInterval(() => {\n nextSlide();\n }, props.autoplayInterval);\n\n return () => clearInterval(interval);\n }, [props.autoplay, props.autoplayInterval, isPlaying, isHovered, nextSlide]);\n\n // Handle pause on hover\n const handleMouseEnter = () => {\n setIsHovered(true);\n if (props.pauseOnHover) {\n setIsPlaying(false);\n }\n };\n\n const handleMouseLeave = () => {\n setIsHovered(false);\n if (props.pauseOnHover) {\n setIsPlaying(true);\n }\n };\n\n // Get current mode settings\n const getCurrentMode = () => {\n switch(deviceMode) {\n case 'mobileweb':\n return props.slides[0].mode.mobileweb;\n case 'mobileapp':\n return props.slides[0].mode.mobileapp;\n case 'tablet':\n return props.slides[0].mode.tablet;\n case 'web':\n default:\n return props.slides[0].mode.web;\n }\n };\n\n const currentMode = getCurrentMode();\n const slidesToShow = currentMode.slidesToShow;\n\n const resolveAssetUrl = (url?: string) => {\n if (!url) return '';\n if (url.startsWith('http://') || url.startsWith('https://')) return url;\n return `${Linodeurl}${url}`;\n };\n\n const buildLinkForSlide = (slide: Slide) => {\n console.warn(slide)\n switch (slide.link_type) {\n case 'NONE':\n return null;\n case 'EXTERNALLINK':\n return `${slide.external_link?.url || ''}`;\n case 'PRODUCT': {\n const product: any = slide.product || {};\n const pdType = product?.pd_type || product?.product_type;\n const code = product?.code || '';\n if (!code) return null;\n\n return pdType === 'VARIANT'\n ? `/variant/${code}`\n : `model/${code}`;\n }\n case 'TAG': {\n const tag: any = slide.tag || {};\n if (!tag.code) return null;\n return `/tag/${tag?.code}`;\n }\n case 'PAGE': {\n const page: any = slide.page || {};\n const pageId = page._id\n const pgType=page.page_type\n return `/page/${pageId}?type=${pgType}`;\n }\n default:\n return null;\n }\n };\n\n const handleSlideClick = (slide: Slide) => {\n const link = buildLinkForSlide(slide);\n if (link === null) return;\n if (typeof link === 'string') {\n if (link.startsWith('http')) {\n window.open(link, '_blank');\n } else {\n window.location.href = link;\n }\n return;\n }\n const queryString = Object.entries((link as any).query || {})\n .map(([key, value]) => `${key}=${encodeURIComponent(value as string)}`)\n .join('&');\n const fullPath = `${(link as any).pathname}${queryString ? `?${queryString}` : ''}`;\n window.location.href = fullPath;\n };\n\n return (\n <div \n className=\"carousel-container\"\n style={{\n position: 'relative',\n height: props.height,\n overflow: 'hidden'\n }}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {/* Slides container */}\n <div\n className=\"carousel-slides\"\n style={{\n display: 'flex',\n height: '100%',\n transition: `opacity ${props.speed}ms ease`,\n flexDirection: props.vertical ? 'column' : 'row'\n }}\n >\n {Array.from({ length: slidesToShow }).map((_, offset) => {\n const slide = slides[(currentSlide + offset) % totalSlides];\n const clickable = buildLinkForSlide(slide) !== null;\n return (\n <div\n key={`${slide.sl_id}-${offset}`}\n className=\"carousel-slide\"\n style={{\n flex: `0 0 ${100 / slidesToShow}%`,\n height: props.vertical ? `${100 / slidesToShow}%` : '100%',\n overflow: 'hidden',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: clickable ? 'pointer' : 'default'\n }}\n onClick={clickable ? () => handleSlideClick(slide) : undefined}\n >\n {slide.sl_type === 'video' ? (\n <video\n src={resolveAssetUrl(slide.video?.url)}\n style={{ width: '100%', height: '100%', objectFit: props.objectFit as any }}\n autoPlay={props.autoplay}\n muted\n loop\n controls={!props.autoplay}\n />\n ) : (\n <img\n src={resolveAssetUrl(slide.image?.url)}\n alt={slide.image?.alt || ''}\n style={{ width: '100%', height: '100%', objectFit: props.objectFit as any }}\n />\n )}\n </div>\n );\n })}\n \n </div>\n\n {/* Navigation arrows */}\n {props.sliderArrowVisible && totalSlides > slidesToShow && (\n <>\n <button\n className=\"carousel-arrow carousel-arrow-prev\"\n onClick={prevSlide}\n style={{\n position: 'absolute',\n ...(props.vertical\n ? { top: '10px', left: '50%', transform: 'translateX(-50%)' }\n : { top: '50%', left: '1px', transform: 'translateY(-50%)' }),\n zIndex: 10,\n background: 'white', \n color: 'black',\n border: '2px solid white', \n boxShadow: '0 2px 6px rgba(0,0,0,0.5)', \n borderRadius: '15%',\n width: '40px',\n height: '60px',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '20px',\n fontWeight: 'bold',\n transition: 'transform 0.2s ease-in-out',\n \n }}\n>\n {props.vertical ? '˄' : '‹'}\n</button>\n\n<button\n className=\"carousel-arrow carousel-arrow-next\"\n onClick={nextSlide}\n style={{\n position: 'absolute',\n ...(props.vertical\n ? { bottom: '10px', left: '50%', transform: 'translateX(-50%)' }\n : { top: '50%', right: '1px', transform: 'translateY(-50%)' }),\n zIndex: 10,\n background: 'white', \n color: 'black',\n border: '2px solid white', \n boxShadow: '0 2px 6px rgba(0,0,0,0.5)', \n borderRadius: '15%',\n width: '40px',\n height: '60px',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '20px',\n fontWeight: 'bold',\n transition: 'transform 0.2s ease-in-out',\n }}\n>\n {props.vertical ? '˅' : '›'}\n</button>\n\n </>\n )}\n\n {/* Pagination dots */}\n {props.pagingDotVisible && totalSlides > 1 && (\n <div\n className=\"carousel-dots\"\n style={{\n position: 'absolute',\n ...(props.vertical\n ? { top: '50%', right: '10px', transform: 'translateY(-50%)', bottom: 'auto', left: 'auto' }\n : { bottom: '15px', left: '0', right: '0' }\n ),\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: props.vertical ? 'column' : 'row',\n gap: '8px',\n zIndex: 100,\n padding: props.vertical ? '8px 6px' : '6px 10px',\n \n borderRadius: props.vertical ? '12px' : '16px'\n }}\n >\n {Array.from({ length: totalSlides }).map((_, index) => (\n <button\n key={index}\n aria-label={`Go to slide ${index + 1}`}\n className={`carousel-dot ${index === currentSlide ? 'active' : ''}`}\n onClick={() => goToSlide(index)}\n style={{\n width: index === currentSlide ? '12px' : '10px',\n height: index === currentSlide ? '12px' : '10px',\n borderRadius: '50%',\n border: 'none',\n background: index === currentSlide ? '#000' : '#ccc',\n cursor: 'pointer',\n transition: 'all 200ms ease'\n }}\n />\n ))}\n </div>\n )}\n </div>\n );\n};\n\nexport default CarouselComponent;","import React from 'react'\r\n\r\ninterface NavTitle {\r\n all: string\r\n}\r\n\r\ninterface NavItem {\r\n nl_id?: string\r\n id?: string\r\n title: any\r\n url?: string\r\n target?: string\r\n framename?: string\r\n children?: NavItem[]\r\n collapsed?: boolean\r\n}\r\n\r\ninterface ColorPair {\r\n background: string\r\n text: string\r\n arrow?: string\r\n separator?: string\r\n}\r\n\r\ninterface LayerStyle {\r\n isSeparator: boolean\r\n color: ColorPair\r\n colorHover: ColorPair\r\n}\r\n\r\ninterface NavigationStyles {\r\n primary: LayerStyle\r\n secondary: LayerStyle\r\n}\r\n\r\nexport interface NavigationProps {\r\n navData: NavItem[]\r\n shape: 'simple' | string\r\n styles: NavigationStyles\r\n}\r\n\r\ninterface NavigationComponentMainProps {\r\n props: NavigationProps\r\n boxHeight: string\r\n}\r\n\r\nconst NavigationComponent: React.FC<NavigationComponentMainProps> = ({ props, boxHeight }) => {\r\n const root = props.navData?.[0]\r\n const topItems: NavItem[] = root?.children || []\r\n\r\n const [openId, setOpenId] = React.useState<string | null>(null)\r\n\r\n const buildHref = (item: NavItem) => item.url || '#'\r\n\r\n const Item = ({ item, depth = 0, isRoot = false }: { item: NavItem; depth?: number; isRoot?: boolean }) => {\r\n const hasChildren = Array.isArray(item.children) && item.children.length > 0\r\n const isTop = depth === 0 && !isRoot\r\n const layer = isRoot ? props.styles.primary : (isTop ? props.styles.primary : props.styles.secondary)\r\n\r\n const baseStyles: React.CSSProperties = {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n gap: '8px',\r\n padding: isRoot ? '12px 16px' : (isTop ? '10px 14px' : '8px 12px'),\r\n color: layer.color.text,\r\n background: layer.color.background,\r\n textDecoration: 'none',\r\n whiteSpace: 'nowrap',\r\n fontSize: isRoot ? 16 : (isTop ? 14 : 13),\r\n borderBottom: layer.isSeparator && !isTop && !isRoot ? `1px solid ${layer.color.separator}` : 'none',\r\n borderRadius: isRoot ? 8 : (isTop ? 6 : 4),\r\n cursor: 'pointer',\r\n fontWeight: isRoot ? 'bold' : 'normal'\r\n }\r\n\r\n const [hover, setHover] = React.useState(false)\r\n\r\n return (\r\n <div\r\n style={{ position: 'relative' }}\r\n onMouseEnter={() => { setHover(true); if (isTop || isRoot) setOpenId(item.id || item.nl_id || null) }}\r\n onMouseLeave={() => { setHover(false); if (isTop || isRoot) setOpenId((prev) => (prev === (item.id || item.nl_id) ? null : prev)) }}\r\n >\r\n {isRoot ? (\r\n <div\r\n style={{\r\n ...baseStyles,\r\n background: hover ? layer.colorHover.background : layer.color.background,\r\n color: hover ? layer.colorHover.text : layer.color.text,\r\n cursor: 'default'\r\n }}\r\n >\r\n <span>{item?.title}</span>\r\n {hasChildren && (\r\n <span style={{ color: layer.color.arrow || layer.color.text }}>{'▾'}</span>\r\n )}\r\n </div>\r\n) : (\r\n <a\r\n href={buildHref(item)}\r\n target={item.target || '_self'}\r\n rel={item.target === '_blank' ? 'noopener noreferrer' : undefined}\r\n style={{\r\n ...baseStyles,\r\n background: hover ? layer.colorHover.background : layer.color.background,\r\n color: hover ? layer.colorHover.text : layer.color.text\r\n }}\r\n >\r\n <span>{item?.title}</span>\r\n {hasChildren && (\r\n <span style={{ color: layer.color.arrow || layer.color.text }}>{isTop ? '▾' : '›'}</span>\r\n )}\r\n </a>\r\n)}\r\n\r\n\r\n {/* Dropdown */}\r\n {hasChildren && ((isTop || isRoot) ? openId === (item.id || item.nl_id) : hover) && (\r\n <div\r\n style={{\r\n position: 'absolute',\r\n top: (isTop || isRoot) ? '100%' : 0,\r\n left: (isTop || isRoot) ? 0 : '100%',\r\n background: props.styles.secondary.color.background,\r\n color: props.styles.secondary.color.text,\r\n border: `1px solid ${props.styles.secondary.color.separator || 'transparent'}`,\r\n borderRadius: 8,\r\n minWidth: 220,\r\n padding: 6,\r\n boxShadow: '0 6px 24px rgba(0,0,0,0.12)',\r\n zIndex: 1000\r\n }}\r\n >\r\n <div style={{ display: 'flex', flexDirection: 'column' }}>\r\n {item.children!.map((child) => (\r\n <Item key={child.id || child.nl_id} item={child} depth={depth + 1} />\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n }\r\n\r\n if (!root) {\r\n return (\r\n <div style={{ padding: 12, color: '#666' }}>No navigation items</div>\r\n )\r\n }\r\n\r\n return (\r\n <nav\r\n style={{\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'start',\r\n paddingTop: '5px',\r\n paddingLeft:'10px',\r\n margin: '0px', \r\n background: props.styles.primary.color.background,\r\n borderRadius: 8,\r\n overflow: 'visible',\r\n height: boxHeight\r\n }}\r\n >\r\n {/* Render root node first */}\r\n <Item key={root.id || root.nl_id} item={root} depth={0} isRoot={true} />\r\n \r\n \r\n </nav>\r\n )\r\n}\r\n\r\nexport default NavigationComponent\r\n\r\n\r\n\r\n","import React, { useState } from 'react';\r\nimport { Linodeurl } from '../../const';\r\n\r\ninterface VideoItem {\r\n id: number;\r\n attr: {\r\n playerType: 'Video' | 'Youtube' | 'Vimeo' | 'Dailymotion';\r\n controls?: boolean;\r\n loop?: boolean;\r\n alt?: string;\r\n url: string;\r\n autoplay?: boolean;\r\n muted?: boolean;\r\n };\r\n title: string;\r\n subTitle: string;\r\n}\r\n\r\ninterface GroupVideoStatic {\r\n _id: string;\r\n name: string;\r\n code: string;\r\n}\r\n\r\ninterface GroupVideoDynamic {\r\n code: string;\r\n name: { all: string };\r\n list: VideoItem[];\r\n isActive?: boolean;\r\n}\r\n\r\ninterface GroupVideoData {\r\n static: GroupVideoStatic;\r\n dynamic: GroupVideoDynamic;\r\n groupvideodata: VideoItem[];\r\n groupimagedata: any[];\r\n}\r\n\r\ninterface HeaderTextStyle {\r\n fontSize: number;\r\n fontColor: string;\r\n isBold: boolean;\r\n isItalic: boolean;\r\n isUnderline: boolean;\r\n}\r\n\r\ninterface DeviceBooleanProps {\r\n web: boolean;\r\n mobileweb: boolean;\r\n mobileapp: boolean;\r\n tablet: boolean;\r\n}\r\n\r\ninterface DeviceLayoutProps {\r\n web: string;\r\n mobileweb: string;\r\n mobileapp: string;\r\n tablet: string;\r\n}\r\n\r\nexport interface GroupVideoListProps {\r\n nameData: string;\r\n type: string;\r\n groupvideo: GroupVideoData;\r\n headerText: string;\r\n activeStatus: boolean;\r\n headerImage: string;\r\n headerTextStyle: HeaderTextStyle;\r\n layout: DeviceLayoutProps;\r\n showHeader: DeviceBooleanProps;\r\n isHorizontalScroll: DeviceBooleanProps;\r\n headerBackground: string;\r\n carouselBackground: string;\r\n cardcolor: string;\r\n showSubtitle?: boolean;\r\n showTitle?: boolean;\r\n titleStyle?: {\r\n fontSize: number;\r\n fontColor: string;\r\n isBold: boolean;\r\n isItalic: boolean;\r\n isUnderline: boolean;\r\n };\r\n subtitleStyle?: {\r\n fontSize: number;\r\n fontColor: string;\r\n isBold: boolean;\r\n isItalic: boolean;\r\n isUnderline: boolean;\r\n };\r\n}\r\n\r\ninterface GroupVideoListMainProps {\r\n props: GroupVideoListProps;\r\n deviceMode?: string;\r\n boxHeight?: string;\r\n}\r\n\r\n// Helper functions for extracting video IDs\r\nconst extractYouTubeId = (url: string): string | null => {\r\n try {\r\n const parsed = new URL(url);\r\n if (parsed.hostname.includes('youtu.be')) {\r\n return parsed.pathname.replace('/', '') || null;\r\n }\r\n if (parsed.hostname.includes('youtube.com')) {\r\n if (parsed.pathname.startsWith('/watch')) {\r\n return parsed.searchParams.get('v');\r\n }\r\n if (parsed.pathname.startsWith('/embed/')) {\r\n return parsed.pathname.split('/embed/')[1] || null;\r\n }\r\n }\r\n } catch {}\r\n return null;\r\n};\r\n\r\nconst extractVimeoId = (url: string): string | null => {\r\n try {\r\n const parsed = new URL(url);\r\n if (parsed.hostname.includes('vimeo.com')) {\r\n const parts = parsed.pathname.split('/').filter(Boolean);\r\n if (parts[0] === 'video') return parts[1] || null;\r\n return parts[0] || null;\r\n }\r\n if (parsed.hostname.includes('player.vimeo.com')) {\r\n const parts = parsed.pathname.split('/').filter(Boolean);\r\n return parts[1] || null;\r\n }\r\n } catch {}\r\n return null;\r\n};\r\n\r\nconst extractDailymotionId = (url: string): string | null => {\r\n try {\r\n const parsed = new URL(url);\r\n if (parsed.hostname.includes('dailymotion.com')) {\r\n const parts = parsed.pathname.split('/').filter(Boolean);\r\n if (parts[0] === 'video') return parts[1] || null;\r\n }\r\n if (parsed.hostname.includes('dai.ly')) {\r\n return parsed.pathname.replace('/', '') || null;\r\n }\r\n } catch {}\r\n return null;\r\n};\r\n\r\n// Video Component\r\ninterface VideoComponentProps {\r\n videoData: {\r\n url: string;\r\n type: 'Youtube' | 'Vimeo' | 'Dailymotion' | 'Video';\r\n controls?: boolean;\r\n loop?: boolean;\r\n alt?: string;\r\n autoplay?: boolean;\r\n muted?: boolean;\r\n };\r\n borderRadius?: number;\r\n height?: string;\r\n}\r\n\r\nconst VideoComponent: React.FC<VideoComponentProps> = ({\r\n videoData,\r\n borderRadius = 6,\r\n height = '100%'\r\n}) => {\r\n const renderPlayer = () => {\r\n const commonStyle: React.CSSProperties = {\r\n width: '100%',\r\n height: '100%',\r\n border: 0,\r\n borderRadius: `${borderRadius}px`,\r\n };\r\n\r\n if (videoData.type === 'Youtube') {\r\n const id = extractYouTubeId(videoData.url);\r\n const src = id ? `https://www.youtube.com/embed/${id}` : videoData.url;\r\n return (\r\n <iframe\r\n title={videoData.alt || 'YouTube video'}\r\n src={src}\r\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\r\n allowFullScreen\r\n style={commonStyle}\r\n />\r\n );\r\n }\r\n\r\n if (videoData.type === 'Vimeo') {\r\n const id = extractVimeoId(videoData.url);\r\n const src = id ? `https://player.vimeo.com/video/${id}` : videoData.url;\r\n return (\r\n <iframe\r\n title={videoData.alt || 'Vimeo video'}\r\n src={src}\r\n allow=\"autoplay; fullscreen; picture-in-picture\"\r\n allowFullScreen\r\n style={commonStyle}\r\n />\r\n );\r\n }\r\n\r\n if (videoData.type === 'Dailymotion') {\r\n const id = extractDailymotionId(videoData.url);\r\n const src = id ? `https://www.dailymotion.com/embed/video/${id}` : videoData.url;\r\n return (\r\n <iframe\r\n title={videoData.alt || 'Dailymotion video'}\r\n src={src}\r\n allow=\"autoplay; fullscreen; picture-in-picture\"\r\n allowFullScreen\r\n style={commonStyle}\r\n />\r\n );\r\n }\r\n\r\n // Default: normal video\r\n return (\r\n <video\r\n autoPlay={videoData.autoplay !== false}\r\n muted={videoData.muted !== false}\r\n playsInline\r\n controls={videoData.controls !== false}\r\n loop={videoData.loop === true}\r\n style={{ width: '100%', height: '100%', borderRadius: `${borderRadius}px` }}\r\n >\r\n <source src={`${Linodeurl}${videoData.url}`} />\r\n Your browser does not support the video tag.\r\n </video>\r\n );\r\n };\r\n\r\n return (\r\n <div\r\n style={{\r\n borderRadius: `${borderRadius}px`,\r\n height: height,\r\n overflow: 'hidden'\r\n }}\r\n >\r\n {renderPlayer()}\r\n </div>\r\n );\r\n};\r\n\r\n// Main GroupVideoList Component\r\nconst GroupVideoList: React.FC<GroupVideoListMainProps> = ({ props, deviceMode = 'web', boxHeight }) => {\r\n const getCurrentBooleanProp = (prop?: DeviceBooleanProps) => {\r\n if (!prop) return false;\r\n switch (deviceMode) {\r\n case 'mobileweb': return !!prop.mobileweb;\r\n case 'mobileapp': return !!prop.mobileapp;\r\n case 'tablet': return !!prop.tablet;\r\n case 'web':\r\n default: return !!prop.web;\r\n }\r\n };\r\n\r\n const getCurrentLayout = () => {\r\n if (!props.layout) return 'NONE';\r\n switch (deviceMode) {\r\n case 'mobileweb': return props.layout.mobileweb || 'NONE';\r\n case 'mobileapp': return props.layout.mobileapp || 'NONE';\r\n case 'tablet': return props.layout.tablet || 'NONE';\r\n case 'web':\r\n default: return props.layout.web || 'NONE';\r\n }\r\n };\r\n\r\n const showHeader = getCurrentBooleanProp(props.showHeader);\r\n const isHorizontalScroll = getCurrentBooleanProp(props.isHorizontalScroll);\r\n const currentLayout = getCurrentLayout();\r\n\r\n const getVideos = (): VideoItem[] => {\r\n if (props.type === 'dynamic') {\r\n if (props.groupvideo?.dynamic?.list?.length) return props.groupvideo.dynamic.list;\r\n }\r\n if (props.groupvideo?.groupvideodata?.length) return props.groupvideo.groupvideodata;\r\n return [];\r\n };\r\n\r\n const videos = getVideos();\r\n\r\n // Carousel navigation buttons (layout NONE)\r\n const scrollLeft = () => {\r\n const scrollableContainer = document.querySelector('.scrollable-container');\r\n if (scrollableContainer) {\r\n (scrollableContainer as HTMLElement).scrollBy({ left: -200, behavior: 'smooth' });\r\n }\r\n };\r\n\r\n const scrollRight = () => {\r\n const scrollableContainer = document.querySelector('.scrollable-container');\r\n if (scrollableContainer) {\r\n (scrollableContainer as HTMLElement).scrollBy({ left: 200, behavior: 'smooth' });\r\n }\r\n };\r\n\r\n const VideoCard = ({ item, large = false }: { item: VideoItem; large?: boolean }) => {\r\n const [isHovered, setIsHovered] = useState(false);\r\n \r\n return (\r\n <div\r\n className=\"videoCard\"\r\n style={{\r\n height: 'auto',\r\n borderRadius: '8px',\r\n overflow: 'hidden',\r\n border: '1px solid #eee',\r\n backgroundColor: props.cardcolor || '#fff',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n padding: large ? '16px' : '12px',\r\n boxShadow: isHovered ? '0 4px 8px rgba(0,0,0,0.15)' : '0 2px 4px rgba(0,0,0,0.1)',\r\n transition: 'all 0.2s ease',\r\n cursor: 'pointer',\r\n transform: isHovered ? 'translateY(-2px)' : 'translateY(0px)',\r\n flex: 1\r\n }}\r\n onMouseOver={() => setIsHovered(true)}\r\n onMouseOut={() => setIsHovered(false)}\r\n >\r\n <div style={{ width: '100%', marginBottom: large ? '12px' : '8px' }}>\r\n <VideoComponent\r\n videoData={{\r\n url: item.attr.url,\r\n type: item.attr.playerType,\r\n controls: item.attr.controls,\r\n loop: item.attr.loop,\r\n alt: item.attr.alt,\r\n autoplay: item.attr.autoplay !== false,\r\n muted: item.attr.muted !== false\r\n }}\r\n borderRadius={6}\r\n height={`${parseInt(boxHeight || '280') - 160}px`}\r\n />\r\n </div>\r\n {(props?.showTitle !== false) && item.title && (\r\n <div style={{ \r\n textAlign: 'center', \r\n fontSize: props.titleStyle ? `${props.titleStyle.fontSize}px` : (large ? '16px' : '14px'), \r\n fontWeight: props.titleStyle?.isBold ? 'bold' : (large ? 600 : 500), \r\n color: props.titleStyle?.fontColor || '#333', \r\n fontStyle: props.titleStyle?.isItalic ? 'italic' : 'normal',\r\n textDecoration: props.titleStyle?.isUnderline ? 'underline' : 'none',\r\n lineHeight: '1.4', \r\n marginBottom: '4px'\r\n }}>\r\n {item.title}\r\n </div>\r\n )}\r\n {(props?.showSubtitle !== false) && item.subTitle && (\r\n <div style={{ \r\n textAlign: 'center', \r\n fontSize: props.subtitleStyle ? `${props.subtitleStyle.fontSize}px` : (large ? '14px' : '12px'), \r\n fontWeight: props.subtitleStyle?.isBold ? 'bold' : 400, \r\n color: props.subtitleStyle?.fontColor || '#666', \r\n fontStyle: props.subtitleStyle?.isItalic ? 'italic' : 'normal',\r\n textDecoration: props.subtitleStyle?.isUnderline ? 'underline' : 'none',\r\n lineHeight: '1.3'\r\n }}>\r\n {item.subTitle}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n };\r\n\r\n return (\r\n <div\r\n style={{\r\n border: '1px solid #e1e1e1',\r\n width: '100%',\r\n maxWidth: '100%',\r\n borderRadius: '0px',\r\n height: boxHeight || 'auto',\r\n minHeight: boxHeight ? boxHeight : '100px',\r\n position: 'relative',\r\n overflow: 'hidden',\r\n marginBottom: '20px',\r\n marginTop: '0px',\r\n display: 'flex',\r\n flexDirection: 'column'\r\n }}\r\n className='GroupVideoListComponent'\r\n >\r\n {showHeader && (\r\n <div\r\n className=\"groupVideoHeader\"\r\n style={{\r\n backgroundColor: props.headerBackground,\r\n padding: '12px 16px',\r\n borderRadius: '0px',\r\n marginBottom: '4px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n flexWrap: 'wrap',\r\n gap: '12px',\r\n }}\r\n >\r\n <p style={{\r\n color: props.headerTextStyle.fontColor,\r\n fontSize: `${props.headerTextStyle.fontSize}px`,\r\n fontWeight: props.headerTextStyle.isBold ? 'bold' : 'normal',\r\n fontStyle: props.headerTextStyle.isItalic ? 'italic' : 'normal',\r\n textDecoration: props.headerTextStyle.isUnderline ? 'underline' : 'none',\r\n margin: 0\r\n }}>\r\n {props.headerText || 'Video List'}\r\n </p>\r\n\r\n {currentLayout === 'NONE' && videos.length > 2 && (\r\n <div style={{ display: 'flex', gap: '8px' }}>\r\n <button\r\n onClick={scrollLeft}\r\n style={{\r\n width: '32px',\r\n height: '32px',\r\n borderRadius: '50%',\r\n border: '1px solid #ddd',\r\n backgroundColor: '#fff',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '16px',\r\n fontWeight: 'bold'\r\n }}\r\n onMouseOver={(e) => { e.currentTarget.style.backgroundColor = '#f8f9fa'; }}\r\n onMouseOut={(e) => { e.currentTarget.style.backgroundColor = '#fff'; }}\r\n >\r\n ‹\r\n </button>\r\n <button\r\n onClick={scrollRight}\r\n style={{\r\n width: '32px',\r\n height: '32px',\r\n borderRadius: '50%',\r\n border: '1px solid #ddd',\r\n backgroundColor: '#fff',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '16px',\r\n fontWeight: 'bold'\r\n }}\r\n onMouseOver={(e) => { e.currentTarget.style.backgroundColor = '#f8f9fa'; }}\r\n onMouseOut={(e) => { e.currentTarget.style.backgroundColor = '#fff'; }}\r\n >\r\n ›\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n\r\n <div\r\n style={{\r\n display: currentLayout === 'NONE' ? 'flex' : 'block',\r\n overflowX: currentLayout === 'NONE' ? (isHorizontalScroll ? 'auto' : 'hidden') : 'visible',\r\n gap: currentLayout === 'NONE' ? '12px' : '0',\r\n padding: '12px',\r\n scrollBehavior: 'smooth',\r\n backgroundColor: props.carouselBackground || '#fff',\r\n scrollbarWidth: 'thin',\r\n borderRadius: '8px',\r\n position: 'relative',\r\n scrollbarColor: '#c1c1c1 transparent',\r\n flex: 1,\r\n overflow: 'hidden'\r\n }}\r\n className=\"groupVideoCarousel\"\r\n >\r\n {/* Navigation buttons - positioned like carousel */}\r\n {!showHeader && currentLayout === 'NONE' && videos.length > 2 && (\r\n <>\r\n <button\r\n onClick={scrollLeft}\r\n style={{\r\n position: 'absolute',\r\n left: '10px',\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n background: 'rgba(0,0,0,0.5)',\r\n color: 'white',\r\n border: 'none',\r\n borderRadius: '50%',\r\n width: '40px',\r\n height: '40px',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '18px',\r\n zIndex: 10,\r\n transition: 'all 0.2s ease'\r\n }}\r\n onMouseOver={(e) => { \r\n e.currentTarget.style.background = 'rgba(0,0,0,0.7)';\r\n e.currentTarget.style.transform = 'translateY(-50%) scale(1.1)';\r\n }}\r\n onMouseOut={(e) => { \r\n e.currentTarget.style.background = 'rgba(0,0,0,0.5)';\r\n e.currentTarget.style.transform = 'translateY(-50%) scale(1)';\r\n }}\r\n >\r\n ‹\r\n </button>\r\n <button\r\n onClick={scrollRight}\r\n style={{\r\n position: 'absolute',\r\n right: '10px',\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n background: 'rgba(0,0,0,0.5)',\r\n color: 'white',\r\n border: 'none',\r\n borderRadius: '50%',\r\n width: '40px',\r\n height: '40px',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '18px',\r\n zIndex: 10,\r\n transition: 'all 0.2s ease'\r\n }}\r\n onMouseOver={(e) => { \r\n e.currentTarget.style.background = 'rgba(0,0,0,0.7)';\r\n e.currentTarget.style.transform = 'translateY(-50%) scale(1.1)';\r\n }}\r\n onMouseOut={(e) => { \r\n e.currentTarget.style.background = 'rgba(0,0,0,0.5)';\r\n e.currentTarget.style.transform = 'translateY(-50%) scale(1)';\r\n }}\r\n >\r\n ›\r\n </button>\r\n </>\r\n )}\r\n {videos.length > 0 ? (\r\n currentLayout === 'NONE' ? (\r\n videos.map((video) => (\r\n <div key={video.id} style={{ minWidth: '200px',height: 'auto' }}>\r\n <VideoCard item={video} />\r\n </div>\r\n ))\r\n ) : currentLayout === 'SMALL' ? (\r\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)', gap: '16px', padding: '8px' }}>\r\n {videos.map((video) => (\r\n <VideoCard key={video.id} item={video} />\r\n ))}\r\n </div>\r\n ) : currentLayout === 'MEDIUM' ? (\r\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: '16px', padding: '8px' }}>\r\n {videos.map((video) => (\r\n <VideoCard key={video.id} item={video} />\r\n ))}\r\n </div>\r\n ) : currentLayout === 'MEDIUM_THREE' ? (\r\n <div style={{ display: 'flex', flexDirection: 'column', gap: '16px', padding: '8px' }}>\r\n {videos.length > 0 && (\r\n <VideoCard item={videos[0]} large />\r\n )}\r\n {videos.length > 1 && (\r\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)', gap: '16px' }}>\r\n {videos.slice(1).map((video) => (\r\n <VideoCard key={video.id} item={video} />\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n ) : null\r\n ) : (\r\n <div style={{ textAlign: 'center', color: '#666', padding: '40px', width: '100%', border: '2px dashed #ddd', borderRadius: '8px', backgroundColor: '#f9f9f9' }}>\r\n <p>No videos available.</p>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default GroupVideoList;","import React from 'react'\r\nimport { Linodeurl } from '../../const';\r\n\r\ninterface PageImage {\r\n\tshapeImageId: string;\r\n\tshape: string;\r\n\tisDynamic: string;\r\n\turl: string;\r\n\twidth: number;\r\n\theight: number;\r\n}\r\n\r\ninterface PageId {\r\n\t_id: string;\r\n\tname: string;\r\n\tcode: string;\r\n\timage: PageImage;\r\n\tisActive: boolean;\r\n}\r\n\r\ninterface Channel {\r\n\t_id: string;\r\n\tname: string;\r\n\tcode: string;\r\n\tisActive: boolean;\r\n}\r\n\r\ninterface PageDataItem {\r\n\tpage_id: any;\r\n\tchannel: Channel;\r\n}\r\n\r\ninterface CategoryImage {\r\n\tshapeImageId: string;\r\n\tshape: string;\r\n\tisDynamic: boolean | string;\r\n\turl: string;\r\n\twidth?: number;\r\n\theight?: number;\r\n\talt?: string;\r\n}\r\n\r\ninterface CategoryItem {\r\n\t_id?: string;\r\n\tcode: string;\r\n\tname: any;\r\n\timage?: CategoryImage;\r\n\tparent?: string | null;\r\n\tpages?: PageDataItem[];\r\n\tchildren?: CategoryItem[];\r\n\tfullPath?: string;\r\n\tisActive?: boolean;\r\n\tisDeleted?: boolean;\r\n}\r\n\r\ninterface GroupCategoryStatic {\r\n\t_id: string;\r\n\tcode: string;\r\n\tname: string;\r\n}\r\n\r\ninterface GroupCategoryDynamic {\r\n\tcode: string;\r\n\tname: { all: string };\r\n\tchannel: string;\r\n\tlist: CategoryItem[];\r\n\tisActive?: boolean;\r\n}\r\n\r\ninterface GroupCategoryData {\r\n\tstatic: GroupCategoryStatic;\r\n\tdynamic: GroupCategoryDynamic;\r\n\tshowItems: CategoryItem[];\r\n}\r\n\r\ninterface HeaderTextStyle {\r\n\tfontSize: number;\r\n\tfontColor: string;\r\n\tisBold: boolean;\r\n\tisItalic: boolean;\r\n\tisUnderline: boolean;\r\n}\r\n\r\ninterface DeviceBooleanProps {\r\n\tweb: boolean;\r\n\tmobileweb: boolean;\r\n\tmobileapp: boolean;\r\n\ttablet: boolean;\r\n}\r\n\r\ninterface DeviceLayoutProps {\r\n\tweb: string;\r\n\tmobileweb: string;\r\n\tmobileapp: string;\r\n\ttablet: string;\r\n}\r\n\r\nexport interface GroupCategoryComponentProps {\r\n\tnameData: any;\r\n\ttype: string;\r\n\tgroupcategory: GroupCategoryData;\r\n\tshowItems?: CategoryItem[];\r\n\tselectedCategories?: CategoryItem[];\r\n\titems?: CategoryItem[];\r\n\tactiveStatus: boolean;\r\n\theaderImage: string;\r\n\theaderTextStyle: HeaderTextStyle;\r\n\tlayout: DeviceLayoutProps;\r\n\tshowHeader: DeviceBooleanProps;\r\n\tshowCategoryName: DeviceBooleanProps;\r\n\tisHorizontalScroll: DeviceBooleanProps;\r\n\theaderBackground: string;\r\n\tcarouselBackground: string;\r\n\tchannelid: string;\r\n\tselectedChannel: string;\r\n}\r\n\r\ninterface GroupCategoryComponentMainProps {\r\n\tprops: GroupCategoryComponentProps;\r\n\tdeviceMode?: string;\r\n}\r\n\r\nconst GroupCategoryComponent: React.FC<GroupCategoryComponentMainProps> = ({ props, deviceMode = 'web' }) => {\r\n\tconst getCurrentBooleanProp = (prop?: DeviceBooleanProps) => {\r\n\t\tif (!prop) return false;\r\n\t\tswitch (deviceMode) {\r\n\t\t\tcase 'mobileweb': return !!prop.mobileweb;\r\n\t\t\tcase 'mobileapp': return !!prop.mobileapp;\r\n\t\t\tcase 'tablet': return !!prop.tablet;\r\n\t\t\tcase 'web':\r\n\t\t\tdefault: return !!prop.web;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getCurrentLayout = () => {\r\n\t\tif (!props.layout) return 'NONE';\r\n\t\tswitch (deviceMode) {\r\n\t\t\tcase 'mobileweb': return props.layout.mobileweb ;\r\n\t\t\tcase 'mobileapp': return props.layout.mobileapp ;\r\n\t\t\tcase 'tablet': return props.layout.tablet ;\r\n\t\t\tcase 'web':\r\n\t\t\tdefault: return props.layout.web ;\r\n\t\t}\r\n\t};\r\n\r\n\tconst showHeader = getCurrentBooleanProp(props.showHeader);\r\n\tconst showCategoryName = getCurrentBooleanProp(props.showCategoryName);\r\n\tconst isHorizontalScroll = getCurrentBooleanProp(props.isHorizontalScroll);\r\n\tconst currentLayout = getCurrentLayout();\r\n\r\n\tconst getCategories = (): CategoryItem[] => {\r\n\t\tif (props.groupcategory?.showItems) {\r\n\t\t\tif (props.groupcategory?.showItems?.length) return props.groupcategory?.showItems;\r\n\t\t}\r\n\t\treturn [];\r\n\t};\r\n\r\n\tconst categories = getCategories();\r\n\r\n\t// Carousel navigation buttons (layout NONE)\r\n\tconst scrollLeft = () => {\r\n\t\tconst carousel = document.querySelector('.groupCategoryCarousel');\r\n\t\tif (carousel) {\r\n\t\t\t(carousel as HTMLElement).scrollBy({ left: -200, behavior: 'smooth' });\r\n\t\t}\r\n\t};\r\n\r\n\tconst scrollRight = () => {\r\n\t\tconst carousel = document.querySelector('.groupCategoryCarousel');\r\n\t\tif (carousel) {\r\n\t\t\t(carousel as HTMLElement).scrollBy({ left: 200, behavior: 'smooth' });\r\n\t\t}\r\n\t};\r\n\r\n\tconst getImageUrl = (url: string) => {\r\n\t\tif (!url) return '';\r\n\t\tif (url.startsWith('http://') || url.startsWith('https://')) return url;\r\n\t\treturn `${Linodeurl}${url}`;\r\n\t};\r\n\r\n\tconst buildCategoryHref = (item: CategoryItem): string | null => {\r\n if (item.pages && item.pages.length > 0) {\r\n const firstPage = item.pages[0];\r\n\t\t\tconsole.log(firstPage.page_id);\r\n // Return only if page is active\r\n if (firstPage.page_id) {\r\n return `/page/${encodeURIComponent(firstPage.page_id)}?type=category`;\r\n }\r\n }\r\n \r\n // No valid active page — don't return href\r\n return null;\r\n };\r\n\r\n\tconst Card = ({ item, large = false }: { item: CategoryItem; large?: boolean }) => {\r\n const href = buildCategoryHref(item);\r\n const Wrapper: React.FC<{ children: React.ReactNode }> = ({ children }) =>\r\n href ? (\r\n <a href={href} style={{ textDecoration: 'none', color: 'inherit' }}>\r\n {children}\r\n </a>\r\n ) : (\r\n <>{children}</>\r\n );\r\n return (\r\n <Wrapper>\r\n <div\r\n className=\"categoryCard\"\r\n style={{\r\n height:'100%',\r\n\r\n borderRadius: '8px',\r\n overflow: 'hidden',\r\n border: '1px solid #eee',\r\n backgroundColor: '#fff',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: large ? '16px' : '12px',\r\n boxShadow: '0 2px 4px rgba(0,0,0,0.1)',\r\n transition: 'transform 0.2s ease',\r\n cursor: href ? 'pointer' : 'default',\r\n }}\r\n onMouseOver={(e) => {\r\n (e.currentTarget as HTMLDivElement).style.transform = 'translateY(-2px)';\r\n (e.currentTarget as HTMLDivElement).style.boxShadow = '0 4px 8px rgba(0,0,0,0.15)';\r\n }}\r\n onMouseOut={(e) => {\r\n (e.currentTarget as HTMLDivElement).style.transform = 'translateY(0)';\r\n (e.currentTarget as HTMLDivElement).style.boxShadow = '0 2px 4px rgba(0,0,0,0.1)';\r\n }}\r\n >\r\n {item.image && (\r\n <div\r\n style={{\r\n height: large ? '160px' : '120px',\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n marginBottom: large ? '12px' : '8px',\r\n }}\r\n >\r\n <img\r\n src={getImageUrl(item.image.url)}\r\n alt={item.image.alt || item.name?.all || ''}\r\n style={{ width: '100%', height: '100%', objectFit: 'contain' }}\r\n />\r\n </div>\r\n )}\r\n\r\n {showCategoryName && (\r\n <div\r\n style={{\r\n textAlign: 'center',\r\n fontSize: large ? '16px' : '14px',\r\n fontWeight: large ? 600 : 500,\r\n color: '#333',\r\n lineHeight: '1.4',\r\n height: large ? 'auto' : '40px',\r\n overflow: 'hidden',\r\n display: large ? 'block' : '-webkit-box',\r\n WebkitLineClamp: large ? undefined : 2,\r\n WebkitBoxOrient: 'vertical',\r\n }}\r\n >\r\n {item.name}\r\n </div>\r\n )}\r\n </div>\r\n </Wrapper>\r\n );\r\n };\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tstyle={{\r\n\t\t\t\tborder: '1px solid #e1e1e1',\r\n\t\t\t\twidth: '100%',\r\n\t\t\t\tmaxWidth: '100%',\r\n\t\t\t\tborderRadius: '0px',\r\n\t\t\t\tminHeight: '100px',\r\n\t\t\t\tposition: 'relative',\r\n\t\t\t\toverflow: 'hidden',\r\n\t\t\t\tmarginBottom: '20px',\r\n\t\t\t\tmarginTop: '0px',\r\n\t\t\t\theight:'100%'\r\n\t\t\t}}\r\n\t\t\tclassName='GroupCategoryComponent'\r\n\t\t>\r\n\t\t\t{showHeader && (\r\n\t\t\t\t<div\r\n\t\t\t\t\tclassName=\"groupCategoryHeader\"\r\n\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\tbackgroundColor: props.headerBackground,\r\n\t\t\t\t\t\tpadding: '12px 16px',\r\n\t\t\t\t\t\tborderRadius: '0px',\r\n\t\t\t\t\t\tmarginBottom: '4px',\r\n\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\tjustifyContent: 'space-between',\r\n\t\t\t\t\t\tflexWrap: 'wrap',\r\n\t\t\t\t\t\tgap: '12px',\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t<p style={{\r\n\t\t\t\t\t\tcolor: props.headerTextStyle.fontColor,\r\n\t\t\t\t\t\tfontSize: `${props.headerTextStyle.fontSize}px`,\r\n\t\t\t\t\t\tfontWeight: props.headerTextStyle.isBold ? 'bold' : 'normal',\r\n\t\t\t\t\t\tfontStyle: props.headerTextStyle.isItalic ? 'italic' : 'normal',\r\n\t\t\t\t\t\ttextDecoration: props.headerTextStyle.isUnderline ? 'underline' : 'none',\r\n\t\t\t\t\t\tmargin: 0\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\t\t{props.nameData || 'Categories'}\r\n\t\t\t\t\t</p>\r\n\r\n\t\t\t\t\t{currentLayout === 'NONE' && categories.length > 0 && (\r\n\t\t\t\t\t\t<div style={{ display: 'flex', gap: '8px' }}>\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\tonClick={scrollLeft}\r\n\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\twidth: '32px',\r\n\t\t\t\t\t\t\t\t\theight: '32px',\r\n\t\t\t\t\t\t\t\t\tborderRadius: '50%',\r\n\t\t\t\t\t\t\t\t\tborder: '1px solid #ddd',\r\n\t\t\t\t\t\t\t\t\tbackgroundColor: '#fff',\r\n\t\t\t\t\t\t\t\t\tcursor: 'pointer',\r\n\t\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\r\n\t\t\t\t\t\t\t\t\tfontSize: '16px',\r\n\t\t\t\t\t\t\t\t\tfontWeight: 'bold'\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tonMouseOver={(e) => { e.currentTarget.style.backgroundColor = '#f8f9fa'; }}\r\n\t\t\t\t\t\t\t\tonMouseOut={(e) => { e.currentTarget.style.backgroundColor = '#fff'; }}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t‹\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\tonClick={scrollRight}\r\n\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\twidth: '32px',\r\n\t\t\t\t\t\t\t\t\theight: '32px',\r\n\t\t\t\t\t\t\t\t\tborderRadius: '50%',\r\n\t\t\t\t\t\t\t\t\tborder: '1px solid #ddd',\r\n\t\t\t\t\t\t\t\t\tbackgroundColor: '#fff',\r\n\t\t\t\t\t\t\t\t\tcursor: 'pointer',\r\n\t\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\r\n\t\t\t\t\t\t\t\t\tfontSize: '16px',\r\n\t\t\t\t\t\t\t\t\tfontWeight: 'bold'\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tonMouseOver={(e) => { e.currentTarget.style.backgroundColor = '#f8f9fa'; }}\r\n\t\t\t\t\t\t\t\tonMouseOut={(e) => { e.currentTarget.style.backgroundColor = '#fff'; }}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t›\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</div>\r\n\t\t\t)}\r\n\r\n\t\t\t<div\r\n\t\t\t\tstyle={{\r\n\t\t\t\t\tdisplay: currentLayout === 'NONE' ? 'flex' : 'block',\r\n\t\t\t\t\toverflowX: currentLayout === 'NONE' ? (isHorizontalScroll ? 'auto' : 'hidden') : 'visible',\r\n\t\t\t\t\tgap: currentLayout === 'NONE' ? '12px' : '0',\r\n\t\t\t\t\tpadding: '12px',\r\n\t\t\t\t\tscrollBehavior: 'smooth',\r\n\t\t\t\t\tbackgroundColor: props.carouselBackground || '#fff',\r\n\t\t\t\t\tscrollbarWidth: 'thin',\r\n\t\t\t\t\tborderRadius: '8px',\r\n\t\t\t\t\tposition: 'relative',\r\n\t\t\t\t\tscrollbarColor: '#c1c1c1 transparent'\r\n\t\t\t\t\t,\t\t\t\theight:'100%'\r\n\r\n\t\t\t\t}}\r\n\t\t\t\tclassName=\"groupCategoryCarousel\"\r\n\t\t\t>\r\n\t\t\t\t{categories.length > 0 ? (\r\n\t\t\t\t\tcurrentLayout === 'NONE' ? (\r\n\t\t\t\t\t\tcategories.map((category) => (\r\n\t\t\t\t\t\t\t<div key={category.code} style={{ minWidth: '150px' ,height:'30%'}}>\r\n\t\t\t\t\t\t\t\t<Card item={category} />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t))\r\n\t\t\t\t\t) : currentLayout === 'SMALL' ? (\r\n\t\t\t\t\t\t<div style={{ display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)', gap: '16px', padding: '8px' }}>\r\n\t\t\t\t\t\t\t{categories.map((category) => (\r\n\t\t\t\t\t\t\t\t<Card key={category.code} item={category} />\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t) : currentLayout === 'MEDIUM' ? (\r\n\t\t\t\t\t\t<div style={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: '16px', padding: '8px' }}>\r\n\t\t\t\t\t\t\t{categories.map((category) => (\r\n\t\t\t\t\t\t\t\t<Card key={category.code} item={category} />\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t) : currentLayout === 'MEDIUM_THREE' ? (\r\n\t\t\t\t\t\t<div style={{ display: 'flex', flexDirection: 'column', gap: '16px', padding: '8px' }}>\r\n\t\t\t\t\t\t\t{categories.length > 0 && (\r\n\t\t\t\t\t\t\t\t<Card item={categories[0]} large />\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{categories.length > 1 && (\r\n\t\t\t\t\t\t\t\t<div style={{ display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)', gap: '16px' }}>\r\n\t\t\t\t\t\t\t\t\t{categories.slice(1).map((category) => (\r\n\t\t\t\t\t\t\t\t\t\t<Card key={category.code} item={category} />\r\n\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t) : null\r\n\t\t\t\t) : (\r\n\t\t\t\t\t<div style={{ textAlign: 'center', color: '#666', padding: '40px', width: '100%', border: '2px dashed #ddd', borderRadius: '8px', backgroundColor: '#f9f9f9' }}>\r\n\t\t\t\t\t\t<p>No categories available.</p>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nexport default GroupCategoryComponent;","import React, { useState } from 'react';\r\nimport { Linodeurl } from '../../const';\r\ninterface ImageData {\r\n isDynamic: boolean;\r\n shape: string;\r\n url: string;\r\n alt: string;\r\n shapeImageId?: string;\r\n width?: number;\r\n height?: number;\r\n}\r\n\r\ninterface ProductData {\r\n pd_type: string;\r\n pd_id?: {\r\n _id: string;\r\n code: string;\r\n name: {\r\n all: string;\r\n displayName?: string;\r\n };\r\n image?: ImageData;\r\n isActive: boolean;\r\n };\r\n product_data?: {\r\n _id: string;\r\n code: string;\r\n name: string;\r\n };\r\n}\r\n\r\n\r\n\r\ninterface LinkData {\r\n url: string | null;\r\n target: string | null;\r\n}\r\n\r\ninterface PageData {\r\n page_type: string | null;\r\n pg_type?: string | null;\r\n\r\n page_id?: any;\r\n page_data?:any;\r\n}\r\n\r\ninterface ImageItem {\r\n id: number;\r\n attr: ImageData;\r\n title: string;\r\n subTitle: string;\r\n linktype: string;\r\n product?: ProductData;\r\n tag?: any;\r\n link?: LinkData;\r\n page?: PageData;\r\n}\r\n\r\ninterface GroupImageStatic {\r\n _id: string;\r\n name: string;\r\n code: string;\r\n}\r\n\r\ninterface GroupImageDynamic {\r\n code: string;\r\n name: { all: string };\r\n list: ImageItem[];\r\n isActive?: boolean;\r\n}\r\n\r\ninterface GroupImageData {\r\n static: GroupImageStatic;\r\n dynamic: GroupImageDynamic;\r\n groupimagedata: ImageItem[];\r\n}\r\n\r\ninterface HeaderTextStyle {\r\n fontSize: number;\r\n fontColor: string;\r\n isBold: boolean;\r\n isItalic: boolean;\r\n isUnderline: boolean;\r\n}\r\n\r\ninterface DeviceBooleanProps {\r\n web: boolean;\r\n mobileweb: boolean;\r\n mobileapp: boolean;\r\n tablet: boolean;\r\n}\r\n\r\ninterface DeviceLayoutProps {\r\n web: string;\r\n mobileweb: string;\r\n mobileapp: string;\r\n tablet: string;\r\n}\r\n\r\nexport interface GroupImageListProps {\r\n nameData: any;\r\n data?: Array<{ id: string; type: string }>;\r\n types?: any[];\r\n type: string;\r\n groupimage: GroupImageData;\r\n headerText: any;\r\n activeStatus: boolean;\r\n headerImage: string;\r\n headerTextStyle: HeaderTextStyle;\r\n layout: DeviceLayoutProps;\r\n showHeader: DeviceBooleanProps;\r\n isHorizontalScroll: DeviceBooleanProps;\r\n headerBackground: string;\r\n carouselBackground: string;\r\n cardcolor: string;\r\n showSubtitle?: boolean;\r\n showTitle?: boolean;\r\n titleStyle?: {\r\n fontSize: number;\r\n fontColor: string;\r\n isBold: boolean;\r\n isItalic: boolean;\r\n isUnderline: boolean;\r\n };\r\n subtitleStyle?: {\r\n fontSize: number;\r\n fontColor: string;\r\n isBold: boolean;\r\n isItalic: boolean;\r\n isUnderline: boolean;\r\n };\r\n selectedChannel?: string;\r\n}\r\n\r\ninterface GroupImageListMainProps {\r\n props: GroupImageListProps;\r\n deviceMode?: string;\r\n boxHeight?: string;\r\n}\r\n\r\n// Image Component Integration\r\ninterface ImageComponentProps {\r\n imageData: ImageData;\r\n linkData: {\r\n linktype: string;\r\n product?: ProductData;\r\n tag?: any;\r\n link?: LinkData;\r\n page?: PageData;\r\n };\r\n borderRadius?: number;\r\n height?: string;\r\n width?: string;\r\n}\r\n\r\nconst ImageComponentInternal: React.FC<ImageComponentProps> = ({\r\n imageData,\r\n linkData,\r\n borderRadius = 8,\r\n height = '100%',\r\n width = '100%'\r\n}) => {\r\n const getImageUrl = (url: string) => {\r\n if (!url) return '';\r\n if (url.startsWith('http://') || url.startsWith('https://')) return url;\r\n return `${Linodeurl}${url}`;\r\n };\r\n\r\n const buildLink = () => {\r\n console.warn(linkData)\r\n switch (linkData.linktype) {\r\n \r\n case 'NONE':\r\n return null;\r\n case 'EXTERNAL_LINK':\r\n case 'EXTERNAL':\r\n return linkData.link?.url || null;\r\n case 'PRODUCT':\r\n if (linkData.product?.pd_type === 'VARIANT') {\r\n return `/variant/${linkData.product.pd_id?.code || linkData.product.product_data?.code}`;\r\n } else {\r\n const code = linkData.product?.pd_id?.code || linkData.product?.product_data?.code;\r\n return `/model/${code}`;\r\n }\r\n case 'TAG':\r\n return `/tag/${linkData.tag?.tag_id?.code || linkData?.tag?.tag_data?.code}`;\r\n case 'PAGE':\r\n return `/page/${linkData.page?.page_id?._id || linkData.page?.page_data?._id }?type=${linkData.page?.page_type || linkData.page?.pg_type}`;\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n // const handleImageClick = () => {\r\n // const link = buildLink();\r\n // if (link === null) return;\r\n \r\n // if (link.startsWith('http')) {\r\n // window.open(link, linkData.link?.target || '_blank');\r\n // } else {\r\n // window.location.href = link;\r\n // }\r\n // };\r\n\r\n const imageStyle: React.CSSProperties = {\r\n width: width,\r\n height: height,\r\n objectFit: 'contain',\r\n borderRadius: `${borderRadius}px`,\r\n cursor: linkData.linktype !== 'NONE' ? 'pointer' : 'default',\r\n transition: 'transform 0.2s ease'\r\n };\r\n\r\n return (\r\n <a \r\n href={buildLink() ?? undefined}\r\n target={\r\n linkData?.linktype === 'EXTERNAL'\r\n ? (linkData?.link?.target ?? '_blank') \r\n : '_self'}\r\n>\r\n <div\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n borderRadius: `${borderRadius}px`,\r\n overflow: 'hidden'\r\n }}\r\n className='media-box'\r\n >\r\n <img\r\n className='media-content'\r\n src={getImageUrl(imageData.url)}\r\n alt={imageData.alt || ''}\r\n style={imageStyle}\r\n // onClick={linkData.linktype !== 'NONE' ? handleImageClick : undefined}\r\n onMouseOver={(e) => {\r\n if (linkData.linktype !== 'NONE') {\r\n (e.currentTarget as HTMLImageElement).style.transform = 'scale(1.02)';\r\n }\r\n }}\r\n onMouseOut={(e) => {\r\n (e.currentTarget as HTMLImageElement).style.transform = 'scale(1)';\r\n }}\r\n />\r\n </div>\r\n </a>\r\n );\r\n};\r\n\r\n// Main GroupImageList Component\r\nconst GroupImageList: React.FC<GroupImageListMainProps> = ({ \r\n props, \r\n deviceMode = 'web', \r\n boxHeight \r\n}) => {\r\n const getCurrentBooleanProp = (prop?: DeviceBooleanProps) => {\r\n if (!prop) return false;\r\n switch (deviceMode) {\r\n case 'mobileweb': return !!prop.mobileweb;\r\n case 'mobileapp': return !!prop.mobileapp;\r\n case 'tablet': return !!prop.tablet;\r\n case 'web':\r\n default: return !!prop.web;\r\n }\r\n };\r\n\r\n const getCurrentLayout = () => {\r\n if (!props.layout) return 'NONE';\r\n switch (deviceMode) {\r\n case 'mobileweb': return props.layout.mobileweb || 'NONE';\r\n case 'mobileapp': return props.layout.mobileapp || 'NONE';\r\n case 'tablet': return props.layout.tablet || 'NONE';\r\n case 'web':\r\n default: return props.layout.web || 'NONE';\r\n }\r\n };\r\n\r\n const showHeader = getCurrentBooleanProp(props.showHeader);\r\n const isHorizontalScroll = getCurrentBooleanProp(props.isHorizontalScroll);\r\n const currentLayout = getCurrentLayout();\r\n\r\n const getImages = (): ImageItem[] => {\r\n if (props.type === 'dynamic') {\r\n if (props.groupimage?.dynamic?.list?.length) return props.groupimage.dynamic.list;\r\n }\r\n if (props.groupimage?.groupimagedata?.length) return props.groupimage.groupimagedata;\r\n return [];\r\n };\r\n\r\n const images = getImages();\r\n\r\n // Carousel navigation buttons (layout NONE)\r\n const scrollLeft = () => {\r\n const scrollableContainer = document.querySelector('.scrollable-container');\r\n if (scrollableContainer) {\r\n (scrollableContainer as HTMLElement).scrollBy({ left: -200, behavior: 'smooth' });\r\n }\r\n };\r\n\r\n const scrollRight = () => {\r\n const scrollableContainer = document.querySelector('.scrollable-container');\r\n if (scrollableContainer) {\r\n (scrollableContainer as HTMLElement).scrollBy({ left: 200, behavior: 'smooth' });\r\n }\r\n };\r\n\r\n const ImageCard = ({ item, large = false }: { item: ImageItem; large?: boolean }) => {\r\n const [isHovered, setIsHovered] = useState(false);\r\n \r\n return (\r\n <div\r\n className=\"imageCard\"\r\n style={{\r\n height: 'auto',\r\n borderRadius: '8px',\r\n overflow: 'hidden',\r\n border: '1px solid #eee',\r\n backgroundColor: props.cardcolor || '#fff',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n padding: large ? '16px' : '12px',\r\n boxShadow: isHovered ? '0 4px 8px rgba(0,0,0,0.15)' : '0 2px 4px rgba(0,0,0,0.1)',\r\n transition: 'all 0.2s ease',\r\n cursor: item.linktype !== 'NONE' ? 'pointer' : 'default',\r\n transform: isHovered ? 'translateY(-2px)' : 'translateY(0px)',\r\n flex: 1\r\n }}\r\n onMouseOver={() => setIsHovered(true)}\r\n onMouseOut={() => setIsHovered(false)}\r\n >\r\n <div style={{ width: '100%', marginBottom: large ? '12px' : '8px' }}>\r\n <ImageComponentInternal\r\n imageData={item.attr}\r\n linkData={{\r\n linktype: item.linktype,\r\n product: item.product,\r\n tag: item.tag,\r\n link: item.link,\r\n page: item.page\r\n }}\r\n borderRadius={6}\r\n height={`${parseInt(boxHeight || '250') - 10}px`}\r\n />\r\n </div>\r\n {(props?.showTitle !== false) && item.title && (\r\n <div style={{ \r\n textAlign: 'center', \r\n fontSize: props.titleStyle ? `${props.titleStyle.fontSize}px` : (large ? '16px' : '14px'), \r\n fontWeight: props.titleStyle?.isBold ? 'bold' : (large ? 600 : 500), \r\n color: props.titleStyle?.fontColor || '#333', \r\n fontStyle: props.titleStyle?.isItalic ? 'italic' : 'normal',\r\n textDecoration: props.titleStyle?.isUnderline ? 'underline' : 'none',\r\n lineHeight: '1.4', \r\n marginBottom: '4px'\r\n }}>\r\n {item.title}\r\n </div>\r\n )}\r\n {(props?.showSubtitle !== false) && item.subTitle && (\r\n <div style={{ \r\n textAlign: 'center', \r\n fontSize: props.subtitleStyle ? `${props.subtitleStyle.fontSize}px` : (large ? '14px' : '12px'), \r\n fontWeight: props.subtitleStyle?.isBold ? 'bold' : 400, \r\n color: props.subtitleStyle?.fontColor || '#666', \r\n fontStyle: props.subtitleStyle?.isItalic ? 'italic' : 'normal',\r\n textDecoration: props.subtitleStyle?.isUnderline ? 'underline' : 'none',\r\n lineHeight: '1.3'\r\n }}>\r\n {item.subTitle}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n };\r\n\r\n return (\r\n <>\r\n <style>\r\n {`\r\n .scrollable-container::-webkit-scrollbar {\r\n display: none;\r\n }\r\n `}\r\n </style>\r\n <div\r\n style={{\r\n border: '1px solid #e1e1e1',\r\n width: '100%',\r\n maxWidth: '100%',\r\n borderRadius: '0px',\r\n height: boxHeight || 'auto',\r\n minHeight: boxHeight ? boxHeight : '100px',\r\n position: 'relative',\r\n overflow: 'hidden',\r\n marginTop: '0px',\r\n display: 'flex',\r\n flexDirection: 'column'\r\n }}\r\n className='GroupImageListComponent'\r\n >\r\n {showHeader && (\r\n <div\r\n className=\"groupImageHeader\"\r\n style={{\r\n backgroundColor: props.headerBackground,\r\n padding: '12px 16px',\r\n borderRadius: '0px',\r\n marginBottom: '4px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n flexWrap: 'wrap',\r\n gap: '12px',\r\n }}\r\n >\r\n <p style={{\r\n color: props.headerTextStyle.fontColor,\r\n fontSize: `${props.headerTextStyle.fontSize}px`,\r\n fontWeight: props.headerTextStyle.isBold ? 'bold' : 'normal',\r\n fontStyle: props.headerTextStyle.isItalic ? 'italic' : 'normal',\r\n textDecoration: props.headerTextStyle.isUnderline ? 'underline' : 'none',\r\n margin: 0\r\n }}>\r\n {props.headerText || props.nameData || 'Image Gallery'}\r\n </p>\r\n {currentLayout === 'NONE' && images.length > 2 && (\r\n <div style={{ display: 'flex', gap: '8px' }}>\r\n <button\r\n onClick={scrollLeft}\r\n style={{\r\n width: '32px',\r\n height: '32px',\r\n borderRadius: '50%',\r\n border: '1px solid #ddd',\r\n backgroundColor: '#fff',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n boxShadow: '0 2px 4px rgba(0,0,0,0.1)'\r\n }}\r\n onMouseOver={(e) => { e.currentTarget.style.backgroundColor = '#f8f9fa'; }}\r\n onMouseOut={(e) => { e.currentTarget.style.backgroundColor = '#fff'; }}\r\n >\r\n ‹\r\n </button>\r\n <button\r\n onClick={scrollRight}\r\n style={{\r\n width: '32px',\r\n height: '32px',\r\n borderRadius: '50%',\r\n border: '1px solid #ddd',\r\n backgroundColor: '#fff',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n boxShadow: '0 2px 4px rgba(0,0,0,0.1)'\r\n }}\r\n onMouseOver={(e) => { e.currentTarget.style.backgroundColor = '#f8f9fa'; }}\r\n onMouseOut={(e) => { e.currentTarget.style.backgroundColor = '#fff'; }}\r\n >\r\n ›\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n\r\n\r\n <div\r\n style={{\r\n display: currentLayout === 'NONE' ? 'flex' : 'block',\r\n overflowX: currentLayout === 'NONE' ? 'hidden' : 'visible',\r\n gap: currentLayout === 'NONE' ? '12px' : '0',\r\n padding: '12px',\r\n scrollBehavior: 'smooth',\r\n backgroundColor: props.carouselBackground || '#fff',\r\n borderRadius: '8px',\r\n position: 'relative',\r\n flex: 1,\r\n overflow: 'hidden'\r\n }}\r\n className=\"groupImageCarousel\"\r\n >\r\n {/* Navigation buttons - positioned like carousel */}\r\n {!showHeader &&currentLayout === 'NONE' && images.length > 2 && (\r\n <>\r\n <button\r\n onClick={scrollLeft}\r\n style={{\r\n position: 'absolute',\r\n left: '10px',\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n background: 'rgba(0,0,0,0.5)',\r\n color: 'white',\r\n border: 'none',\r\n borderRadius: '50%',\r\n width: '40px',\r\n height: '40px',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '18px',\r\n zIndex: 10,\r\n transition: 'all 0.2s ease'\r\n }}\r\n onMouseOver={(e) => { \r\n e.currentTarget.style.background = 'rgba(0,0,0,0.7)';\r\n e.currentTarget.style.transform = 'translateY(-50%) scale(1.1)';\r\n }}\r\n onMouseOut={(e) => { \r\n e.currentTarget.style.background = 'rgba(0,0,0,0.5)';\r\n e.currentTarget.style.transform = 'translateY(-50%) scale(1)';\r\n }}\r\n >\r\n ‹\r\n </button>\r\n <button\r\n onClick={scrollRight}\r\n style={{\r\n position: 'absolute',\r\n right: '10px',\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n background: 'rgba(0,0,0,0.5)',\r\n color: 'white',\r\n border: 'none',\r\n borderRadius: '50%',\r\n width: '40px',\r\n height: '40px',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '18px',\r\n zIndex: 10,\r\n transition: 'all 0.2s ease'\r\n }}\r\n onMouseOver={(e) => { \r\n e.currentTarget.style.background = 'rgba(0,0,0,0.7)';\r\n e.currentTarget.style.transform = 'translateY(-50%) scale(1.1)';\r\n }}\r\n onMouseOut={(e) => { \r\n e.currentTarget.style.background = 'rgba(0,0,0,0.5)';\r\n e.currentTarget.style.transform = 'translateY(-50%) scale(1)';\r\n }}\r\n >\r\n ›\r\n </button>\r\n </>\r\n )}\r\n {images.length > 0 ? (\r\n currentLayout === 'NONE' ? (\r\n <div \r\n className=\"scrollable-container\"\r\n style={{ \r\n display: 'flex', \r\n gap: '20px', \r\n overflowX: 'auto',\r\n scrollbarWidth: 'none', // Firefox\r\n msOverflowStyle: 'none' // IE and Edge\r\n }}>\r\n {images.map((image) => (\r\n <div\r\n key={image.id}\r\n style={{\r\n minWidth: '250px',\r\n height: boxHeight,\r\n flexShrink: 0,\r\n }}\r\n >\r\n <ImageCard item={image} />\r\n </div>\r\n ))}\r\n </div>\r\n\r\n ) : currentLayout === 'SMALL' ? (\r\n <div style={{ \r\n display: 'grid', \r\n gridTemplateColumns: 'repeat(2, 1fr)', \r\n gap: '16px', \r\n padding: '8px',\r\n height: '100%'\r\n }}>\r\n {images.map((image) => (\r\n <div key={image.id} style={{ \r\n height: '100%',\r\n display: 'flex',\r\n flexDirection: 'column'\r\n }}>\r\n <ImageCard item={image} />\r\n </div>\r\n ))}\r\n </div>\r\n ) : currentLayout === 'MEDIUM' ? (\r\n <div style={{ \r\n display: 'grid', \r\n gridTemplateColumns: 'repeat(3, 1fr)', \r\n gap: '16px', \r\n padding: '8px',\r\n height: 'auto',\r\n overflowX: 'auto',\r\n\r\n }}>\r\n {images.map((image) => (\r\n <div key={image.id} style={{ \r\n height: '100%',\r\n display: 'flex',\r\n flexDirection: 'column'\r\n\r\n }}>\r\n <ImageCard item={image} />\r\n </div>\r\n ))}\r\n </div>\r\n ) : currentLayout === 'MEDIUM_THREE' ? (\r\n <div style={{ \r\n display: 'flex', \r\n flexDirection: 'column', \r\n gap: '16px', \r\n padding: '8px',\r\n height: '100%'\r\n }}>\r\n {images.length > 0 && (\r\n <div style={{ flex: '2', minHeight: '200px' }}>\r\n <ImageCard item={images[0]} large />\r\n </div>\r\n )}\r\n {images.length > 1 && (\r\n <div style={{ \r\n display: 'grid', \r\n gridTemplateColumns: 'repeat(2, 1fr)', \r\n gap: '16px',\r\n flex: '1'\r\n }}>\r\n {images.slice(1).map((image) => (\r\n <div key={image.id} style={{ \r\n height: '100%',\r\n display: 'flex',\r\n flexDirection: 'column'\r\n }}>\r\n <ImageCard item={image} />\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n ) : null\r\n ) : (\r\n <div style={{ textAlign: 'center', color: '#666', padding: '40px', width: '100%', border: '2px dashed #ddd', borderRadius: '8px', backgroundColor: '#f9f9f9' }}>\r\n <p>No images available.</p>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default GroupImageList;","import React, { useState, useCallback } from 'react'\r\nimport './tab.css';\r\nimport { Linodeurl } from '../../const';\r\ninterface TabImage {\r\n\tisDynamic: boolean;\r\n\talt: string;\r\n\turl: string;\r\n\twidth: number | null;\r\n\theight: number | null;\r\n}\r\n\r\ninterface TabVideo {\r\n\talt: string;\r\n\turl: string;\r\n}\r\n\r\ninterface TabContentImage {\r\n\timage: TabImage;\r\n\tlink_type: string;\r\n\tproduct: any;\r\n\ttag: any;\r\n\tpage: any;\r\n\texternal_link: any;\r\n}\r\n\r\ninterface TabContentVideo {\r\n\tvideo: TabVideo;\r\n\tlink_type: string;\r\n\tproduct: any;\r\n\ttag: any;\r\n\tpage: any;\r\n\texternal_link: any;\r\n}\r\n\r\ninterface Product {\r\n\t_id: string;\r\n\tcode: string;\r\n\tname: string | { all: string };\r\n\timage: any;\r\n\tisActive: boolean;\r\n\tprice?: any;\r\n}\r\n\r\ninterface TabContentGroup {\r\n\ttype: string;\r\n\tgroupImageId: string | null;\r\n\tgroupProductId: string | null;\r\n\tgroupVideoId: string | null;\r\n\tdynamicImages?: any[];\r\n\tdynamicVideos?: any[];\r\n\tdynamicProducts?: any[];\r\n\tshowItems?: Product[];\r\n}\r\n\r\ninterface TabMode {\r\n\tweb: { layout: string };\r\n\tmobileweb: { layout: string };\r\n\tmobileapp: { layout: string };\r\n\ttablet: { layout: string };\r\n}\r\n\r\ninterface TabItem {\r\n\ttabHeaderType: string;\r\n\ttabHeaderText: string;\r\n\ttabHeaderImage: TabImage;\r\n\ttabContentType: string;\r\n\ttabContentImage?: TabContentImage;\r\n\ttabContentVideo?: TabContentVideo;\r\n\ttabContentGroupImage: TabContentGroup;\r\n\ttabContentGroupVideo: TabContentGroup;\r\n\ttabContentGroupProduct: TabContentGroup;\r\n\tmode: TabMode;\r\n}\r\n\r\ninterface FontStyle {\r\n\tisBold: boolean;\r\n\tisItalic: boolean;\r\n\tisUnderLine: boolean;\r\n}\r\n\r\ninterface TitleStyle {\r\n\ttitleText: { all: string;[key: string]: string };\r\n\tfontSize: number;\r\n\tfontStyle: FontStyle;\r\n\tfontColor: string;\r\n\talignment: string;\r\n}\r\n\r\ninterface HeaderStyle {\r\n\tfontSize: number;\r\n\tfontStyle: FontStyle;\r\n\tdefaultColorBg: string;\r\n\tdefaultColorText: string;\r\n\thoverColorBg: string;\r\n\thoverColorText: string;\r\n\tactiveColorBg: string;\r\n\tactiveColorText: string;\r\n}\r\n\r\ninterface TabsData {\r\n\tall: TabItem[];\r\n}\r\n\r\nexport interface TabComponentProps {\r\n\tname: string;\r\n\tcode: string;\r\n\torientation: 'horizontal' | 'vertical';\r\n\theight: number;\r\n\tshowTitle: boolean;\r\n\ttitle: TitleStyle;\r\n\theader: HeaderStyle;\r\n\ttabs: TabsData[];\r\n}\r\n\r\ninterface TabComponentMainProps {\r\n\tprops: TabComponentProps;\r\n\tdeviceMode?: string;\r\n}\r\n\r\nconst TabComponent: React.FC<TabComponentMainProps> = ({ props, deviceMode = 'web' }) => {\r\n\tconst [activeTab, setActiveTab] = useState(0);\r\n\tconst [carouselIndex, setCarouselIndex] = useState(0);\r\n\r\n\tconst buildLinkForSlide = (slide: any) => {\r\n switch (slide.link_type) {\r\n case 'NONE':\r\n return null;\r\n case 'EXTERNALLINK':\r\n return `${slide.external_link?.url || ''}`;\r\n case 'PRODUCT': {\r\n const product: any = slide.product || {};\r\n const pdType = product?.pd_type || product?.product_type;\r\n const code = product?.code || '';\r\n if (!code) return null;\r\n\r\n return pdType === 'VARIANT'\r\n\t\t? `/variant/${code}`\r\n : `model/${code}`;\r\n }\r\n case 'TAG': {\r\n const tag: any = slide.tag || {};\r\n if (!tag.code) return null;\r\n\t\treturn `/tag/${tag?.code}`;\r\n\r\n }\r\n case 'PAGE': {\r\n const page: any = slide.page || {};\r\n const pageId = page._id\r\n const pgType=page.page_type\r\n return `/page/${pageId}?type=${pgType}`;\r\n }\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n\tconst getImageUrl = (url: string) => {\r\n\t\tif (!url) return '';\r\n\t\tif (url.startsWith('http://') || url.startsWith('https://')) return url;\r\n\t\treturn `${Linodeurl}${url}`;\r\n\t};\r\n\r\n\t// Inline Product Card Component\r\n\tconst ProductCard: React.FC<{ product: any; layout?: string }> = ({ product, layout = '1x1' }) => {\r\n\t\tconst formatPrice = (price: any) => {\r\n\t\t\tif (typeof price === 'object' && price.$numberDecimal) {\r\n\t\t\t\treturn parseFloat(price.$numberDecimal).toLocaleString('en-IN', {\r\n\t\t\t\t\tstyle: 'currency',\r\n\t\t\t\t\tcurrency: 'INR',\r\n\t\t\t\t\tminimumFractionDigits: 0,\r\n\t\t\t\t\tmaximumFractionDigits: 0\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\treturn price;\r\n\t\t};\r\n\r\n\t\tconst calculateOffer = (mrp: any, sp: any) => {\r\n\t\t\tconst mrpValue = parseFloat(mrp.$numberDecimal || mrp);\r\n\t\t\tconst spValue = parseFloat(sp.$numberDecimal || sp);\r\n\t\t\tif (mrpValue > spValue) {\r\n\t\t\t\tconst discount = ((mrpValue - spValue) / mrpValue) * 100;\r\n\t\t\t\treturn Math.round(discount);\r\n\t\t\t}\r\n\t\t\treturn 0;\r\n\t\t};\r\n\r\n\t\tconst renderStars = (rating: number) => {\r\n\t\t\tconst stars = [];\r\n\t\t\tfor (let i = 1; i <= 5; i++) {\r\n\t\t\t\tstars.push(\r\n\t\t\t\t\t<span key={i} className={i <= rating ? 'star' : 'star empty'}>\r\n\t\t\t\t\t\t★\r\n\t\t\t\t\t</span>\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\treturn stars;\r\n\t\t};\r\n\r\n\t\tconst formatRating = (rating: number) => {\r\n\t\t\treturn rating ? `(${rating.toFixed(1)} *)` : '(0.0 *)';\r\n\t\t};\r\n\r\n\t\tconst getVariantText = (variant: any) => {\r\n\t\t\treturn variant.valueId?.name?.all || variant.valueId?.name || '';\r\n\t\t};\r\n\r\n\t\tconst mrp = product.price?.MRP;\r\n\t\tconst sp = product.price?.SP;\r\n\t\tconst offer = calculateOffer(mrp, sp);\r\n\r\n\t\tconst cardMode = layout === '1x1' ? 'carousel-mode' : layout === '2x1' ? 'layout-2x1' : 'grid-mode';\t\r\n\t\tconst productSlug = product._id;\r\n\t\tconst productLink = `/${productSlug}`;\r\n\t\t\r\n\t\tconst cardContent = (\r\n\t\t\t<>\r\n\t\t\t\t{/* Product Image */}\r\n\t\t\t\t<div className=\"product-image-container\">\r\n\t\t\t\t\t<img\r\n\t\t\t\t\t\tsrc={getImageUrl(product.image?.all?.url || product.model?.image?.url)}\r\n\t\t\t\t\t\talt={product.name?.all || product.name?.displayName}\r\n\t\t\t\t\t\tclassName=\"product-image\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t{/* Product Details */}\r\n\t\t\t\t<div className=\"product-details\">\r\n\t\t\t\t\t<div className=\"product-header\">\r\n\t\t\t\t\t\t<div className=\"product-brand\">{product.brand?.name?.all || product.brand?.name}</div>\r\n\t\t\t\t\t\t<div className=\"product-name\">{product.name?.all || product.name}</div>\r\n\t\t\t\t\t\t<div className=\"product-code\">Code: {product.code}</div>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t{/* Rating - Show first for grid mode */}\r\n\t\t\t\t\t{layout !== '1x1' && layout !== '2x2' && (\r\n\t\t\t\t\t\t<div className=\"product-rating\">\r\n\t\t\t\t\t\t\t<div className=\"stars\">\r\n\t\t\t\t\t\t\t\t{renderStars(product.starrating || 0)}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<span className=\"rating-text\">\r\n\t\t\t\t\t\t\t\t{formatRating(product.starrating || 0)}\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t{/* Variants - Only show for carousel mode */}\r\n\t\t\t\t\t{layout === '1x1' && product.variant && product.variant.length > 0 && (\r\n\t\t\t\t\t\t<div className=\"product-variants\">\r\n\t\t\t\t\t\t\t{product.variant.map((variant: any, index: number) => (\r\n\t\t\t\t\t\t\t\t<span key={index} className=\"variant-tag\">\r\n\t\t\t\t\t\t\t\t\t{getVariantText(variant)}\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t)}\r\n{/* {layout === '1x1' && product.variant && product.variant.length > 0 && (\r\n\t\t\t\t\t\t<div className=\"product-variants\">\r\n\t\t\t\t\t\t\t{product.variant.map((variant: any, index: number) => (\r\n\t\t\t\t\t\t\t\t<span key={index} className=\"variant-tag\">\r\n\t\t\t\t\t\t\t\t\t{getVariantText(variant)}\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t)} */}\r\n\t\t\t\t\t{/* Pricing */}\r\n\t\t\t\t\t<div className=\"product-pricing\">\r\n\t\t\t\t\t\t<div className=\"price-row\">\r\n\t\t\t\t\t\t\t<span className=\"current-price\">{formatPrice(sp)}</span>\r\n\t\t\t\t\t\t\t{mrp && sp && parseFloat(mrp.$numberDecimal || mrp) > parseFloat(sp.$numberDecimal || sp) && (\r\n\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t<span className=\"original-price\">{formatPrice(mrp)}</span>\r\n\t\t\t\t\t\t\t\t\t{offer > 0 && <span className=\"offer-badge\">{offer}% OFF</span>}\r\n\t\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t{/* Rating - Show for carousel mode */}\r\n\t\t\t\t\t{layout === '1x1' && (\r\n\t\t\t\t\t\t<div className=\"product-rating\">\r\n\t\t\t\t\t\t\t<div className=\"stars\">\r\n\t\t\t\t\t\t\t\t{renderStars(product.starrating || 0)}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<span className=\"rating-text\">\r\n\t\t\t\t\t\t\t\t({product.startRatingCount || 0} reviews)\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t</div>\r\n\t\t\t</>\r\n\t\t);\r\n\t\t\r\n\t\treturn (\r\n\t\t\t<div className={`product-card ${cardMode}`}>\r\n\t\t\t\t{layout === '1x1' ? (\r\n\t\t\t\t\t<a href={productLink} target=\"_blank\" style={{ textDecoration: 'none', color: 'inherit', display: 'contents' }}>\r\n\t\t\t\t\t{cardContent}\r\n\t\t\t\t</a>\r\n\t\t\t\t) : (\r\n\t\t\t\t\t<a href={productLink} target=\"_blank\" style={{ textDecoration: 'none', color: 'inherit', display: 'contents' }}>\r\n\t\t\t\t\t\t{cardContent}\r\n\t\t\t\t\t</a>\r\n\t\t\t\t)}\r\n\t\t\t</div>\r\n\t\t);\r\n\t};\r\n\r\n\t// Carousel navigation functions\r\n\tconst nextCarouselItem = useCallback(() => {\r\n\t\tsetCarouselIndex((prev) => (prev + 1));\r\n\t}, []);\r\n\r\n\tconst prevCarouselItem = useCallback(() => {\r\n\t\tsetCarouselIndex((prev) => Math.max(0, prev - 1));\r\n\t}, []);\r\n\r\n\tconst goToCarouselItem = (index: number) => {\r\n\t\tsetCarouselIndex(index);\r\n\t};\r\n\r\n\t// Reset carousel when switching tabs\r\n\tconst handleTabChange = (index: number) => {\r\n\t\tsetActiveTab(index);\r\n\t\tsetCarouselIndex(0);\r\n\t};\r\n\r\n\tconst getCurrentLayout = (tab: TabItem): string => {\r\n\t\tswitch (deviceMode) {\r\n\t\t\tcase 'mobileweb': return tab.mode.mobileweb.layout;\r\n\t\t\tcase 'mobileapp': return tab.mode.mobileapp.layout;\r\n\t\t\tcase 'tablet': return tab.mode.tablet.layout;\r\n\t\t\tcase 'web':\r\n\t\t\tdefault: return tab.mode.web.layout;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getTabHeaderStyle = (index: number) => {\r\n\t\tconst isActive = activeTab === index;\r\n\r\n\t\treturn {\r\n\t\t\tbackgroundColor: 'transparent',\r\n\t\t\tcolor: isActive ? '#000000' : '#6b7280', // black for active, grey for inactive\r\n\t\t\tfontSize: `${props.header.fontSize}px`,\r\n\t\t\tfontWeight: props.header.fontStyle.isBold ? 'bold' : '500',\r\n\t\t\tfontStyle: props.header.fontStyle.isItalic ? 'italic' : 'normal',\r\n\t\t\ttextDecoration: props.header.fontStyle.isUnderLine ? 'underline' : 'none',\r\n\t\t\tpadding: '8px 12px',\r\n\t\t\tborder: 'none',\r\n\t\t\tcursor: 'pointer',\r\n\t\t\ttransition: 'all 0.3s ease',\r\n\t\t\tborderRadius: '0',\r\n\t\t\tbackground: 'none',\r\n\t\t\twhiteSpace: 'nowrap' as const,\r\n\t\t};\r\n\t};\r\n\r\n\r\n\tconst getTitleStyle = () => {\r\n\t\treturn {\r\n\t\t\tfontSize: `${props?.title?.fontSize}px`,\r\n\t\t\tfontWeight: props?.title?.fontStyle?.isBold ? 'bold' : '600',\r\n\t\t\tfontStyle: props?.title?.fontStyle?.isItalic ? 'italic' : 'normal',\r\n\t\t\ttextDecoration: props?.title?.fontStyle?.isUnderLine ? 'underline' : 'none',\r\n\t\t\tcolor: props?.title?.fontColor,\r\n\t\t\ttextAlign: props?.title?.alignment as 'left' | 'center' | 'right',\r\n\t\t\tmargin: '0',\r\n\t\t\tlineHeight: '1.2'\r\n\t\t};\r\n\t};\r\n\r\n\tconst renderTabContent = (tab: TabItem) => {\r\n\t\tconst layout = getCurrentLayout(tab);\r\n\t\tconsole.warn(tab)\r\n\t\tconst getGridColumns = () => {\r\n\t\t\tswitch (layout) {\r\n\t\t\t\tcase '1x1': return '1fr';\r\n\t\t\t\tcase '1x2': return 'repeat(2, 1fr)';\r\n\t\t\t\tcase '2x1': return '1fr';\r\n\t\t\t\tcase '2x2': return 'repeat(2, 1fr)';\r\n\t\t\t\tdefault: return '1fr';\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst getGridRows = () => {\r\n\t\t\tswitch (layout) {\r\n\t\t\t\tcase '1x1': return '1fr';\r\n\t\t\t\tcase '1x2': return '1fr';\r\n\t\t\t\tcase '2x1': return 'repeat(2, 1fr)';\r\n\t\t\t\tcase '2x2': return 'repeat(2, 1fr)';\r\n\t\t\t\tdefault: return '1fr';\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst contentStyle = {\r\n\t\t\tdisplay: 'grid',\r\n\t\t\tgridTemplateColumns: getGridColumns(),\r\n\t\t\tgridTemplateRows: getGridRows(),\r\n\t\t\tgap: '3px',\r\n\t\t\theight: `${props.height}px`, // force tab content height\r\n\t\t\toverflow: 'hidden'\r\n\t\t };\r\n\t\t \r\n\r\n\t\tswitch (tab.tabContentType) {\r\n\t\t\tcase 'IMAGE':\r\n\t\t\t\tif (tab.tabContentImage) {\r\n\t\t\t\t console.warn(tab.tabContentImage, buildLinkForSlide(tab.tabContentImage));\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t<a\r\n\t\t\t\t\t href={buildLinkForSlide(tab.tabContentImage) || undefined}\r\n\t\t\t\t\t target={\r\n\t\t\t\t\t\ttab.tabContentImage.link_type === 'external_link'\r\n\t\t\t\t\t\t ? tab.tabContentImage.external_link?.target\r\n\t\t\t\t\t\t : '_blank'\r\n\t\t\t\t\t }\r\n\t\t\t\t\t>\r\n\t\t\t\t\t <div style={contentStyle}>\r\n\t\t\t\t\t\t<div className=\"media-box\">\r\n\t\t\t\t\t\t\t\t<img\r\n\t\t\t\t\t\t\t\t\tsrc={getImageUrl(tab.tabContentImage.image.url)}\r\n\t\t\t\t\t\t\t\t\talt={tab.tabContentImage.image.alt}\r\n\t\t\t\t\t\t\t className=\"media-content\"\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</a>\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'VIDEO':\r\n\t\t\t\tif (tab.tabContentVideo) {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t<div style={contentStyle}>\r\n\t\t\t\t\t\t <div className=\"media-box\">\r\n\t\t\t\t\t\t\t\t<video\r\n\t\t\t\t\t\t\t\t\tsrc={getImageUrl(tab.tabContentVideo.video.url)}\r\n\t\t\t\t\t\t\t\t\tcontrols\r\n\t\t\t\t\t\t\t className=\"media-content\"\r\n\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'GROUPIMAGE':\r\n\t\t\t\t\t\tif (tab.tabContentGroupImage) {\r\n\t\t\t\t\t\t // Handle both DYNAMIC and STATIC types\r\n\t\t\t\t\t\t const images = tab.tabContentGroupImage.type === 'DYNAMIC' \r\n\t\t\t\t\t\t\t? tab.tabContentGroupImage.dynamicImages \r\n\t\t\t\t\t\t\t: tab.tabContentGroupImage.showItems;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t if (!images || images.length === 0) {\r\n\t\t\t\t\t\t\treturn <div>No images available</div>;\r\n\t\t\t\t\t\t }\r\n\t\t\t\t\t \r\n\t\t\t\t\t\t // 1x1 layout: carousel display\r\n\t\t\t\t\t\t if (layout === '1x1') {\r\n\t\t\t\t\t\t\tconst currentImage = images[carouselIndex] || images[0];\r\n\t\t\t\t\t\t\tconst linkUrl = currentImage ? buildLinkForSlide(currentImage) : null;\r\n\t\t\t\t\t \r\n\t\t\t\t\t\t\tconst imageElement = currentImage ? (\r\n\t\t\t\t\t\t\t <div className=\"media-box\">\r\n\t\t\t\t\t\t\t\t<img\r\n\t\t\t\t\t\t\t\t src={getImageUrl(\r\n\t\t\t\t\t\t\t\t\ttab.tabContentGroupImage.type === 'DYNAMIC' \r\n\t\t\t\t\t\t\t\t\t ? currentImage.image.url \r\n\t\t\t\t\t\t\t\t\t : currentImage.attr?.url\r\n\t\t\t\t\t\t\t\t )}\r\n\t\t\t\t\t\t\t\t alt={\r\n\t\t\t\t\t\t\t\t\ttab.tabContentGroupImage.type === 'DYNAMIC' \r\n\t\t\t\t\t\t\t\t\t ? currentImage.image.alt \r\n\t\t\t\t\t\t\t\t\t : currentImage.attr?.alt\r\n\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t className=\"media-content\"\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t </div>\r\n\t\t\t\t\t\t\t) : null;\r\n\t\t\t\t\t \r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t position: 'relative',\r\n\t\t\t\t\t\t\t\t width: '100%',\r\n\t\t\t\t\t\t\t\t height: 'auto',\r\n\t\t\t\t\t\t\t\t overflow: 'hidden',\r\n\t\t\t\t\t\t\t\t display: 'flex',\r\n\t\t\t\t\t\t\t\t alignItems: 'center',\r\n\t\t\t\t\t\t\t\t justifyContent: 'center',\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t >\r\n\t\t\t\t\t\t\t\t{linkUrl ? (\r\n\t\t\t\t\t\t\t\t <a\r\n\t\t\t\t\t\t\t\t\thref={linkUrl}\r\n\t\t\t\t\t\t\t\t\ttarget={\r\n\t\t\t\t\t\t\t\t\t currentImage?.link_type === 'EXTERNALLINK'\r\n\t\t\t\t\t\t\t\t\t\t? currentImage.external_link?.target || '_blank'\r\n\t\t\t\t\t\t\t\t\t\t: '_self'\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tstyle={{ width: '100%', height: '100%' }}\r\n\t\t\t\t\t\t\t\t >\r\n\t\t\t\t\t\t\t\t\t{imageElement}\r\n\t\t\t\t\t\t\t\t </a>\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t imageElement\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t{/* Carousel Navigation */}\r\n\t\t\t\t\t\t\t\t{images.length > 1 && (\r\n\t\t\t\t\t\t\t\t <>\r\n\t\t\t\t\t\t\t\t\t{/* Previous Button */}\r\n\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t onClick={prevCarouselItem}\r\n\t\t\t\t\t\t\t\t\t disabled={carouselIndex === 0}\r\n\t\t\t\t\t\t\t\t\t style={{\r\n\t\t\t\t\t\t\t\t\t\tposition: 'absolute',\r\n\t\t\t\t\t\t\t\t\t\tleft: '10px',\r\n\t\t\t\t\t\t\t\t\t\ttop: '50%',\r\n\t\t\t\t\t\t\t\t\t\ttransform: 'translateY(-50%)',\r\n\t\t\t\t\t\t\t\t\t\tbackground: 'rgba(0,0,0,0.5)',\r\n\t\t\t\t\t\t\t\t\t\tcolor: 'white',\r\n\t\t\t\t\t\t\t\t\t\tborder: 'none',\r\n\t\t\t\t\t\t\t\t\t\tborderRadius: '50%',\r\n\t\t\t\t\t\t\t\t\t\twidth: '40px',\r\n\t\t\t\t\t\t\t\t\t\theight: '40px',\r\n\t\t\t\t\t\t\t\t\t\tcursor: carouselIndex === 0 ? 'not-allowed' : 'pointer',\r\n\t\t\t\t\t\t\t\t\t\topacity: carouselIndex === 0 ? 0.5 : 1,\r\n\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\r\n\t\t\t\t\t\t\t\t\t\tfontSize: '18px',\r\n\t\t\t\t\t\t\t\t\t\tzIndex: 10,\r\n\t\t\t\t\t\t\t\t\t }}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t ‹\r\n\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t{/* Next Button */}\r\n\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t onClick={nextCarouselItem}\r\n\t\t\t\t\t\t\t\t\t disabled={carouselIndex >= images.length - 1}\r\n\t\t\t\t\t\t\t\t\t style={{\r\n\t\t\t\t\t\t\t\t\t\tposition: 'absolute',\r\n\t\t\t\t\t\t\t\t\t\tright: '10px',\r\n\t\t\t\t\t\t\t\t\t\ttop: '50%',\r\n\t\t\t\t\t\t\t\t\t\ttransform: 'translateY(-50%)',\r\n\t\t\t\t\t\t\t\t\t\tbackground: 'rgba(0,0,0,0.5)',\r\n\t\t\t\t\t\t\t\t\t\tcolor: 'white',\r\n\t\t\t\t\t\t\t\t\t\tborder: 'none',\r\n\t\t\t\t\t\t\t\t\t\tborderRadius: '50%',\r\n\t\t\t\t\t\t\t\t\t\twidth: '40px',\r\n\t\t\t\t\t\t\t\t\t\theight: '40px',\r\n\t\t\t\t\t\t\t\t\t\tcursor: carouselIndex >= images.length - 1 ? 'not-allowed' : 'pointer',\r\n\t\t\t\t\t\t\t\t\t\topacity: carouselIndex >= images.length - 1 ? 0.5 : 1,\r\n\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\r\n\t\t\t\t\t\t\t\t\t\tfontSize: '18px',\r\n\t\t\t\t\t\t\t\t\t\tzIndex: 10,\r\n\t\t\t\t\t\t\t\t\t }}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t ›\r\n\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t{/* Dots Indicator */}\r\n\t\t\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\t\t style={{\r\n\t\t\t\t\t\t\t\t\t\tposition: 'absolute',\r\n\t\t\t\t\t\t\t\t\t\tbottom: '10px',\r\n\t\t\t\t\t\t\t\t\t\tleft: '50%',\r\n\t\t\t\t\t\t\t\t\t\ttransform: 'translateX(-50%)',\r\n\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\t\tgap: '8px',\r\n\t\t\t\t\t\t\t\t\t\tzIndex: 10,\r\n\t\t\t\t\t\t\t\t\t }}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t {images.map((_, index) => (\r\n\t\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\t key={index}\r\n\t\t\t\t\t\t\t\t\t\t onClick={() => goToCarouselItem(index)}\r\n\t\t\t\t\t\t\t\t\t\t style={{\r\n\t\t\t\t\t\t\t\t\t\t\twidth: index === carouselIndex ? '12px' : '8px',\r\n\t\t\t\t\t\t\t\t\t\t\theight: index === carouselIndex ? '12px' : '8px',\r\n\t\t\t\t\t\t\t\t\t\t\tborderRadius: '50%',\r\n\t\t\t\t\t\t\t\t\t\t\tborder: 'none',\r\n\t\t\t\t\t\t\t\t\t\t\tbackground: index === carouselIndex ? 'white' : 'rgba(255,255,255,0.5)',\r\n\t\t\t\t\t\t\t\t\t\t\tcursor: 'pointer',\r\n\t\t\t\t\t\t\t\t\t\t\ttransition: 'all 0.3s ease',\r\n\t\t\t\t\t\t\t\t\t\t }}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t ))}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t </>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t </div>\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t }\r\n\t\t\t\t\t \r\n\t\t\t\t\t\t // Other layouts: grid display with limited images\r\n\t\t\t\t\t\t const getMaxImages = () => {\r\n\t\t\t\t\t\t\tswitch (layout) {\r\n\t\t\t\t\t\t\t case '1x2': return 2;\r\n\t\t\t\t\t\t\t case '2x1': return 2;\r\n\t\t\t\t\t\t\t case '2x2': return 4;\r\n\t\t\t\t\t\t\t default: return images.length;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t };\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t const maxImages = getMaxImages();\r\n\t\t\t\t\t\t const displayImages = images.slice(0, maxImages);\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t // Create dynamic content style for GROUPIMAGE\r\n\t\t\t\t\t\t const groupImageContentStyle = {\r\n\t\t\t\t\t\t\tdisplay: 'grid',\r\n\t\t\t\t\t\t\tgridTemplateColumns: getGridColumns(),\r\n\t\t\t\t\t\t\tgridTemplateRows: getGridRows(),\r\n\t\t\t\t\t\t\tgap: '3px',\r\n\t\t\t\t\t\t\theight: '100%', // Use auto height for group images\r\n\t\t\t\t\t\t\toverflow: 'hidden'\r\n\t\t\t\t\t\t };\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t return (\r\n\t\t\t\t\t\t\t<div style={groupImageContentStyle} className='media-box'>\r\n\t\t\t\t\t\t\t {displayImages.map((image, index) => {\r\n\t\t\t\t\t\t\t\tconst linkUrl = buildLinkForSlide(image);\r\n\t\t\t\t\t\t\t\tconst imageElement = (\r\n\t\t\t\t\t\t\t\t <div key={index} className=\"media-box\">\r\n\t\t\t\t\t\t\t\t\t<img\r\n\t\t\t\t\t\t\t\t\t src={getImageUrl(\r\n\t\t\t\t\t\t\t\t\t\ttab.tabContentGroupImage.type === 'DYNAMIC' \r\n\t\t\t\t\t\t\t\t\t\t ? image.image.url \r\n\t\t\t\t\t\t\t\t\t\t : image.attr?.url\r\n\t\t\t\t\t\t\t\t\t )}\r\n\t\t\t\t\t\t\t\t\t alt={\r\n\t\t\t\t\t\t\t\t\t\ttab.tabContentGroupImage.type === 'DYNAMIC' \r\n\t\t\t\t\t\t\t\t\t\t ? image.image.alt \r\n\t\t\t\t\t\t\t\t\t\t : image.attr?.alt\r\n\t\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t\t className=\"media-content\"\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t </div>\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\treturn linkUrl ? (\r\n\t\t\t\t\t\t\t\t <a\r\n\t\t\t\t\t\t\t\t\tkey={index}\r\n\t\t\t\t\t\t\t\t\thref={linkUrl}\r\n\t\t\t\t\t\t\t\t\ttarget={\r\n\t\t\t\t\t\t\t\t\t image.link_type === 'EXTERNALLINK'\r\n\t\t\t\t\t\t\t\t\t\t? image.external_link?.target || '_blank'\r\n\t\t\t\t\t\t\t\t\t\t: '_self'\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tclassName='media-box'\r\n\t\t\t\t\t\t\t\t >\r\n\t\t\t\t\t\t\t\t\t{imageElement}\r\n\t\t\t\t\t\t\t\t </a>\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t <div key={index} style={{ width: '100%', height: '100%' }}>\r\n\t\t\t\t\t\t\t\t\t{imageElement}\r\n\t\t\t\t\t\t\t\t </div>\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t })}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t );\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'GROUPVIDEO':\r\n\t\t\t\t\t\t\tif (tab.tabContentGroupVideo) {\r\n\t\t\t\t\t\t\t // Handle both DYNAMIC and STATIC types\r\n\t\t\t\t\t\t\t const videos = tab.tabContentGroupVideo.type === 'DYNAMIC' \r\n\t\t\t\t\t\t\t\t? tab.tabContentGroupVideo.dynamicVideos \r\n\t\t\t\t\t\t\t\t: tab.tabContentGroupVideo.showItems;\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t if (!videos || videos.length === 0) {\r\n\t\t\t\t\t\t\t\treturn <div>No videos available</div>;\r\n\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t // 1x1 layout: carousel display\r\n\t\t\t\t\t\t\t if (layout === '1x1') {\r\n\t\t\t\t\t\t\t\tconst currentVideo = videos[carouselIndex] || videos[0];\r\n\t\t\t\t\t\t\t\tconst linkUrl = currentVideo ? buildLinkForSlide(currentVideo) : null;\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\tconst videoElement = currentVideo ? (\r\n\t\t\t\t\t\t\t\t <div className=\"media-box\">\r\n\t\t\t\t\t\t\t\t\t<video\r\n\t\t\t\t\t\t\t\t\t src={getImageUrl(\r\n\t\t\t\t\t\t\t\t\t\ttab.tabContentGroupVideo.type === 'DYNAMIC' \r\n\t\t\t\t\t\t\t\t\t\t ? currentVideo.video?.url \r\n\t\t\t\t\t\t\t\t\t\t : currentVideo.attr?.url\r\n\t\t\t\t\t\t\t\t\t )}\r\n\t\t\t\t\t\t\t\t\t title={\r\n\t\t\t\t\t\t\t\t\t\ttab.tabContentGroupVideo.type === 'DYNAMIC' \r\n\t\t\t\t\t\t\t\t\t\t ? currentVideo.video?.alt || currentVideo.name\r\n\t\t\t\t\t\t\t\t\t\t : currentVideo.attr?.alt \t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t\t className=\"media-content\"\r\n\t\t\t\t\t\t\t\t\t controls\r\n\t\t\t\t\t\t\t\t\t style={{ width: '100%', height: 'auto', objectFit: 'cover' }}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t </div>\r\n\t\t\t\t\t\t\t\t) : null;\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t <div\r\n\t\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\t position: 'relative',\r\n\t\t\t\t\t\t\t\t\t width: '100%',\r\n\t\t\t\t\t\t\t\t\t height: 'auto',\r\n\t\t\t\t\t\t\t\t\t overflow: 'hidden',\r\n\t\t\t\t\t\t\t\t\t display: 'flex',\r\n\t\t\t\t\t\t\t\t\t alignItems: 'stretch',\r\n\t\t\t\t\t\t\t\t\t justifyContent: 'center',\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t >\r\n\t\t\t\t\t\t\t\t\t{currentVideo && (\r\n\t\t\t\t\t\t\t\t\t <div style={{ width: '100%', height: '100%', display: 'flex' }}>\r\n\t\t\t\t\t\t\t\t\t\t{linkUrl ? (\r\n\t\t\t\t\t\t\t\t\t\t <a\r\n\t\t\t\t\t\t\t\t\t\t\thref={linkUrl}\r\n\t\t\t\t\t\t\t\t\t\t\ttarget={\r\n\t\t\t\t\t\t\t\t\t\t\t currentVideo.link_type === 'EXTERNALLINK'\r\n\t\t\t\t\t\t\t\t\t\t\t\t? currentVideo.external_link?.target || '_blank'\r\n\t\t\t\t\t\t\t\t\t\t\t\t: '_self'\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tstyle={{ textDecoration: 'none', color: 'inherit', display: 'contents' }}\r\n\t\t\t\t\t\t\t\t\t\t >\r\n\t\t\t\t\t\t\t\t\t\t\t{videoElement}\r\n\t\t\t\t\t\t\t\t\t\t </a>\r\n\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t videoElement\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t </div>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t{/* Carousel Navigation */}\r\n\t\t\t\t\t\t\t\t\t{videos.length > 1 && (\r\n\t\t\t\t\t\t\t\t\t <>\r\n\t\t\t\t\t\t\t\t\t\t{/* Prev Button */}\r\n\t\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\t onClick={prevCarouselItem}\r\n\t\t\t\t\t\t\t\t\t\t disabled={carouselIndex === 0}\r\n\t\t\t\t\t\t\t\t\t\t style={{\r\n\t\t\t\t\t\t\t\t\t\t\tposition: 'absolute',\r\n\t\t\t\t\t\t\t\t\t\t\tleft: '10px',\r\n\t\t\t\t\t\t\t\t\t\t\ttop: '50%',\r\n\t\t\t\t\t\t\t\t\t\t\ttransform: 'translateY(-50%)',\r\n\t\t\t\t\t\t\t\t\t\t\tbackground: 'rgba(0,0,0,0.5)',\r\n\t\t\t\t\t\t\t\t\t\t\tcolor: 'white',\r\n\t\t\t\t\t\t\t\t\t\t\tborder: 'none',\r\n\t\t\t\t\t\t\t\t\t\t\tborderRadius: '50%',\r\n\t\t\t\t\t\t\t\t\t\t\twidth: '40px',\r\n\t\t\t\t\t\t\t\t\t\t\theight: '40px',\r\n\t\t\t\t\t\t\t\t\t\t\tcursor: carouselIndex === 0 ? 'not-allowed' : 'pointer',\r\n\t\t\t\t\t\t\t\t\t\t\topacity: carouselIndex === 0 ? 0.5 : 1,\r\n\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\r\n\t\t\t\t\t\t\t\t\t\t\tfontSize: '18px',\r\n\t\t\t\t\t\t\t\t\t\t\tzIndex: 10,\r\n\t\t\t\t\t\t\t\t\t\t }}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t ‹\r\n\t\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t{/* Next Button */}\r\n\t\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\t onClick={nextCarouselItem}\r\n\t\t\t\t\t\t\t\t\t\t disabled={carouselIndex >= videos.length - 1}\r\n\t\t\t\t\t\t\t\t\t\t style={{\r\n\t\t\t\t\t\t\t\t\t\t\tposition: 'absolute',\r\n\t\t\t\t\t\t\t\t\t\t\tright: '10px',\r\n\t\t\t\t\t\t\t\t\t\t\ttop: '50%',\r\n\t\t\t\t\t\t\t\t\t\t\ttransform: 'translateY(-50%)',\r\n\t\t\t\t\t\t\t\t\t\t\tbackground: 'rgba(0,0,0,0.5)',\r\n\t\t\t\t\t\t\t\t\t\t\tcolor: 'white',\r\n\t\t\t\t\t\t\t\t\t\t\tborder: 'none',\r\n\t\t\t\t\t\t\t\t\t\t\tborderRadius: '50%',\r\n\t\t\t\t\t\t\t\t\t\t\twidth: '40px',\r\n\t\t\t\t\t\t\t\t\t\t\theight: '40px',\r\n\t\t\t\t\t\t\t\t\t\t\tcursor: carouselIndex >= videos.length - 1 ? 'not-allowed' : 'pointer',\r\n\t\t\t\t\t\t\t\t\t\t\topacity: carouselIndex >= videos.length - 1 ? 0.5 : 1,\r\n\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\r\n\t\t\t\t\t\t\t\t\t\t\tfontSize: '18px',\r\n\t\t\t\t\t\t\t\t\t\t\tzIndex: 10,\r\n\t\t\t\t\t\t\t\t\t\t }}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t ›\r\n\t\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t{/* Dots Indicator */}\r\n\t\t\t\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\t\t\t style={{\r\n\t\t\t\t\t\t\t\t\t\t\tposition: 'absolute',\r\n\t\t\t\t\t\t\t\t\t\t\tbottom: '10px',\r\n\t\t\t\t\t\t\t\t\t\t\tleft: '50%',\r\n\t\t\t\t\t\t\t\t\t\t\ttransform: 'translateX(-50%)',\r\n\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\t\t\tgap: '8px',\r\n\t\t\t\t\t\t\t\t\t\t\tzIndex: 10,\r\n\t\t\t\t\t\t\t\t\t\t }}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t {videos.map((_, index) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\t\t key={index}\r\n\t\t\t\t\t\t\t\t\t\t\t onClick={() => goToCarouselItem(index)}\r\n\t\t\t\t\t\t\t\t\t\t\t style={{\r\n\t\t\t\t\t\t\t\t\t\t\t\twidth: index === carouselIndex ? '12px' : '8px',\r\n\t\t\t\t\t\t\t\t\t\t\t\theight: index === carouselIndex ? '12px' : '8px',\r\n\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: '50%',\r\n\t\t\t\t\t\t\t\t\t\t\t\tborder: 'none',\r\n\t\t\t\t\t\t\t\t\t\t\t\tbackground: index === carouselIndex ? 'white' : 'rgba(255,255,255,0.5)',\r\n\t\t\t\t\t\t\t\t\t\t\t\tcursor: 'pointer',\r\n\t\t\t\t\t\t\t\t\t\t\t\ttransition: 'all 0.3s ease',\r\n\t\t\t\t\t\t\t\t\t\t\t }}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t ))}\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t </>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t </div>\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t }\r\n\t\t\t\t\t \r\n\t\t\t\t\t\t // Other layouts: grid display with limited videos\r\n\t\t\t\t\t\t const getMaxVideos = () => {\r\n\t\t\t\t\t\t\tswitch (layout) {\r\n\t\t\t\t\t\t\t case '1x2': return 2;\r\n\t\t\t\t\t\t\t case '2x1': return 2;\r\n\t\t\t\t\t\t\t case '2x2': return 4;\r\n\t\t\t\t\t\t\t default: return videos.length;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t };\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t const maxVideos = getMaxVideos();\r\n\t\t\t\t\t\t const displayVideos = videos.slice(0, maxVideos);\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t // Create dynamic content style for GROUPVIDEO\r\n\t\t\t\t\t\t const groupVideoContentStyle = {\r\n\t\t\t\t\t\t\tdisplay: 'grid',\r\n\t\t\t\t\t\t\tgridTemplateColumns: getGridColumns(),\r\n\t\t\t\t\t\t\tgridTemplateRows: getGridRows(),\r\n\t\t\t\t\t\t\tgap: '3px',\r\n\t\t\t\t\t\t\theight: 'auto', // Use auto height for group videos\r\n\t\t\t\t\t\t\toverflow: 'hidden'\r\n\t\t\t\t\t\t };\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t return (\r\n\t\t\t\t\t\t\t<div style={groupVideoContentStyle} className='media-box'>\r\n\t\t\t\t\t\t\t {displayVideos.map((video, index) => {\r\n\t\t\t\t\t\t\t\tconst linkUrl = buildLinkForSlide(video);\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tconst videoElement = (\r\n\t\t\t\t\t\t\t\t <div className=\"media-box\">\r\n\t\t\t\t\t\t\t\t\t<video\r\n\t\t\t\t\t\t\t\t\t src={getImageUrl(\r\n\t\t\t\t\t\t\t\t\t\ttab.tabContentGroupVideo.type === 'DYNAMIC' \r\n\t\t\t\t\t\t\t\t\t\t ? video.video?.url \r\n\t\t\t\t\t\t\t\t\t\t : video.attr?.url\r\n\t\t\t\t\t\t\t\t\t )}\r\n\t\t\t\t\t\t\t\t\t title={\r\n\t\t\t\t\t\t\t\t\t\ttab.tabContentGroupVideo.type === 'DYNAMIC' \r\n\t\t\t\t\t\t\t\t\t\t ? video.video?.alt || video.name\r\n\t\t\t\t\t\t\t\t\t\t : video.attr?.alt \r\n\t\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t\t className=\"media-content\"\r\n\t\t\t\t\t\t\t\t\t controls\r\n\t\t\t\t\t\t\t\t\t style={{ width: '100%', height: 'auto', objectFit: 'cover' }}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t </div>\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\treturn linkUrl ? (\r\n\t\t\t\t\t\t\t\t <a\r\n\t\t\t\t\t\t\t\t\tkey={index}\r\n\t\t\t\t\t\t\t\t\thref={linkUrl}\r\n\t\t\t\t\t\t\t\t\ttarget={\r\n\t\t\t\t\t\t\t\t\t video.link_type === 'EXTERNALLINK'\r\n\t\t\t\t\t\t\t\t\t\t? video.external_link?.target || '_blank'\r\n\t\t\t\t\t\t\t\t\t\t: '_self'\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tclassName='media-box'\r\n\t\t\t\t\t\t\t\t >\r\n\t\t\t\t\t\t\t\t\t{videoElement}\r\n\t\t\t\t\t\t\t\t </a>\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t <div key={index} style={{ width: '100%', height: '100%' }}>\r\n\t\t\t\t\t\t\t\t\t{videoElement}\r\n\t\t\t\t\t\t\t\t </div>\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t })}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t );\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t \r\n\t\t\t\t\t\tcase 'GROUPPRODUCT':\r\n\t\t\t\t\t\t\tif (tab.tabContentGroupProduct && tab.tabContentGroupProduct.showItems) {\r\n\t\t\t\t\t\t\t const products = tab.tabContentGroupProduct.showItems;\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t // 1x1 layout: Carousel view\r\n\t\t\t\t\t\t\t if (layout === '1x1') {\r\n\t\t\t\t\t\t\t\tconst currentProduct = products[carouselIndex] || products[0];\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t <div\r\n\t\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\t position: 'relative',\r\n\t\t\t\t\t\t\t\t\t width: '100%',\r\n\t\t\t\t\t\t\t\t\t height: `${props.height}px`, // Full height of tab content\r\n\t\t\t\t\t\t\t\t\t overflow: 'hidden',\r\n\t\t\t\t\t\t\t\t\t display: 'flex',\r\n\t\t\t\t\t\t\t\t\t alignItems: 'stretch',\r\n\t\t\t\t\t\t\t\t\t justifyContent: 'center',\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t >\r\n\t\t\t\t\t\t\t\t\t{currentProduct && (\r\n\t\t\t\t\t\t\t\t\t <div style={{ width: '100%', height: '100%', display: 'flex' }}>\r\n\t\t\t\t\t\t\t\t\t\t<ProductCard product={currentProduct} layout={layout} />\r\n\t\t\t\t\t\t\t\t\t </div>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t{/* Carousel Navigation */}\r\n\t\t\t\t\t\t\t\t\t{products.length > 1 && (\r\n\t\t\t\t\t\t\t\t\t <>\r\n\t\t\t\t\t\t\t\t\t\t{/* Prev Button */}\r\n\t\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\t onClick={prevCarouselItem}\r\n\t\t\t\t\t\t\t\t\t\t disabled={carouselIndex === 0}\r\n\t\t\t\t\t\t\t\t\t\t style={{\r\n\t\t\t\t\t\t\t\t\t\t\tposition: 'absolute',\r\n\t\t\t\t\t\t\t\t\t\t\tleft: '10px',\r\n\t\t\t\t\t\t\t\t\t\t\ttop: '50%',\r\n\t\t\t\t\t\t\t\t\t\t\ttransform: 'translateY(-50%)',\r\n\t\t\t\t\t\t\t\t\t\t\tbackground: 'rgba(0,0,0,0.5)',\r\n\t\t\t\t\t\t\t\t\t\t\tcolor: 'white',\r\n\t\t\t\t\t\t\t\t\t\t\tborder: 'none',\r\n\t\t\t\t\t\t\t\t\t\t\tborderRadius: '50%',\r\n\t\t\t\t\t\t\t\t\t\t\twidth: '40px',\r\n\t\t\t\t\t\t\t\t\t\t\theight: '40px',\r\n\t\t\t\t\t\t\t\t\t\t\tcursor: carouselIndex === 0 ? 'not-allowed' : 'pointer',\r\n\t\t\t\t\t\t\t\t\t\t\topacity: carouselIndex === 0 ? 0.5 : 1,\r\n\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\r\n\t\t\t\t\t\t\t\t\t\t\tfontSize: '18px',\r\n\t\t\t\t\t\t\t\t\t\t\tzIndex: 10,\r\n\t\t\t\t\t\t\t\t\t\t }}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t ‹\r\n\t\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t{/* Next Button */}\r\n\t\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\t onClick={nextCarouselItem}\r\n\t\t\t\t\t\t\t\t\t\t disabled={carouselIndex >= products.length - 1}\r\n\t\t\t\t\t\t\t\t\t\t style={{\r\n\t\t\t\t\t\t\t\t\t\t\tposition: 'absolute',\r\n\t\t\t\t\t\t\t\t\t\t\tright: '10px',\r\n\t\t\t\t\t\t\t\t\t\t\ttop: '50%',\r\n\t\t\t\t\t\t\t\t\t\t\ttransform: 'translateY(-50%)',\r\n\t\t\t\t\t\t\t\t\t\t\tbackground: 'rgba(0,0,0,0.5)',\r\n\t\t\t\t\t\t\t\t\t\t\tcolor: 'white',\r\n\t\t\t\t\t\t\t\t\t\t\tborder: 'none',\r\n\t\t\t\t\t\t\t\t\t\t\tborderRadius: '50%',\r\n\t\t\t\t\t\t\t\t\t\t\twidth: '40px',\r\n\t\t\t\t\t\t\t\t\t\t\theight: '40px',\r\n\t\t\t\t\t\t\t\t\t\t\tcursor:\r\n\t\t\t\t\t\t\t\t\t\t\t carouselIndex >= products.length - 1\r\n\t\t\t\t\t\t\t\t\t\t\t\t? 'not-allowed'\r\n\t\t\t\t\t\t\t\t\t\t\t\t: 'pointer',\r\n\t\t\t\t\t\t\t\t\t\t\topacity: carouselIndex >= products.length - 1 ? 0.5 : 1,\r\n\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\r\n\t\t\t\t\t\t\t\t\t\t\tfontSize: '18px',\r\n\t\t\t\t\t\t\t\t\t\t\tzIndex: 10,\r\n\t\t\t\t\t\t\t\t\t\t }}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t ›\r\n\t\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t{/* Dots */}\r\n\t\t\t\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\t\t\t style={{\r\n\t\t\t\t\t\t\t\t\t\t\tposition: 'absolute',\r\n\t\t\t\t\t\t\t\t\t\t\tbottom: '10px',\r\n\t\t\t\t\t\t\t\t\t\t\tleft: '50%',\r\n\t\t\t\t\t\t\t\t\t\t\ttransform: 'translateX(-50%)',\r\n\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\t\t\tgap: '8px',\r\n\t\t\t\t\t\t\t\t\t\t\tzIndex: 10,\r\n\t\t\t\t\t\t\t\t\t\t }}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t {products.map((_, index) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\t\t key={index}\r\n\t\t\t\t\t\t\t\t\t\t\t onClick={() => goToCarouselItem(index)}\r\n\t\t\t\t\t\t\t\t\t\t\t style={{\r\n\t\t\t\t\t\t\t\t\t\t\t\twidth: index === carouselIndex ? '12px' : '8px',\r\n\t\t\t\t\t\t\t\t\t\t\t\theight: index === carouselIndex ? '12px' : '8px',\r\n\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: '50%',\r\n\t\t\t\t\t\t\t\t\t\t\t\tborder: 'none',\r\n\t\t\t\t\t\t\t\t\t\t\t\tbackground:\r\n\t\t\t\t\t\t\t\t\t\t\t\t index === carouselIndex\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 'white'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: 'rgba(255,255,255,0.5)',\r\n\t\t\t\t\t\t\t\t\t\t\t\tcursor: 'pointer',\r\n\t\t\t\t\t\t\t\t\t\t\t\ttransition: 'all 0.3s ease',\r\n\t\t\t\t\t\t\t\t\t\t\t }}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t ))}\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t </>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t </div>\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t // Other layouts: Grid view with limited products\r\n\t\t\t\t\t\t\t const getMaxProducts = () => {\r\n\t\t\t\t\t\t\t\tswitch (layout) {\r\n\t\t\t\t\t\t\t\t case '1x2': return 2;\r\n\t\t\t\t\t\t\t\t case '2x1': return 2;\r\n\t\t\t\t\t\t\t\t case '2x2': return 4;\r\n\t\t\t\t\t\t\t\t default: return products.length;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t };\r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t const maxProducts = getMaxProducts();\r\n\t\t\t\t\t\t\t const displayProducts = products.slice(0, maxProducts);\r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t // Create dynamic content style for GROUPPRODUCT\r\n\t\t\t\t\t\t\t const groupProductContentStyle = {\r\n\t\t\t\t\t\t\t\tdisplay: 'grid',\r\n\t\t\t\t\t\t\t\tgridTemplateColumns: getGridColumns(),\r\n\t\t\t\t\t\t\t\tgridTemplateRows: getGridRows(),\r\n\t\t\t\t\t\t\t\tgap: '12px',\r\n\t\t\t\t\t\t\t\theight: 'auto', // Use auto height for group products\r\n\t\t\t\t\t\t\t\toverflow: 'hidden',\r\n\t\t\t\t\t\t\t\tpadding: '12px',\r\n\t\t\t\t\t\t\t\talignItems: 'stretch',\r\n\t\t\t\t\t\t\t };\r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t return (\r\n\t\t\t\t\t\t\t\t<div style={groupProductContentStyle}>\r\n\t\t\t\t\t\t\t\t {displayProducts.map((product, index) => (\r\n\t\t\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\t\t key={index}\r\n\t\t\t\t\t\t\t\t\t style={{\r\n\t\t\t\t\t\t\t\t\t\twidth: '100%',\r\n\t\t\t\t\t\t\t\t\t\theight: '100%',\r\n\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\t\talignItems: 'stretch',\r\n\t\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\r\n\t\t\t\t\t\t\t\t\t\tminHeight: '200px',\r\n\t\t\t\t\t\t\t\t\t }}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t <ProductCard product={product} layout={layout} />\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<div style={{\r\n\t\t\t\t\t\t...contentStyle,\r\n\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\tjustifyContent: 'center',\r\n\t\t\t\t\t\tbackgroundColor: '#f8f9fa',\r\n\t\t\t\t\t\tborderRadius: '8px'\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\t\t<p style={{ color: '#6c757d', textAlign: 'center' }}>No content available</p>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t};\r\n\r\n\tconst tabs = props.tabs[0]?.all || [];\r\n\r\n\treturn (\r\n\t\t<div style={{\r\n\t\t\twidth: '100%',\r\n\t\t\tminHeight: `${props.height}px`,\r\n\t\t\tbackgroundColor: '#ffffff',\r\n\t\t\toverflow: 'hidden',\r\n\t\t\tboxShadow: '0 4px 20px rgba(0,0,0,0.08)',\r\n\t\t\tborder: '1px solid #e5e7eb'\r\n\t\t}}>\r\n\t\t\t{/* Header Section */}\r\n\t\t\t<div style={{\r\n\t\t\t\tdisplay: 'flex',\r\n\t\t\t\talignItems: 'center',\r\n\t\t\t\tjustifyContent: 'space-between',\r\n\t\t\t\tpadding: '20px 32px',\r\n\t\t\t\tbackgroundColor: '#ffffff',\r\n\t\t\t\tborderBottom: '1px solid #e5e7eb'\r\n\t\t\t}}>\r\n\t\t\t\t{/* Title */}\r\n\t\t\t\t{props.showTitle && (\r\n\t\t\t\t\t<h1 style={getTitleStyle()}>\r\n\t\t\t\t\t\t{props?.title?.titleText?.all}\r\n\t\t\t\t\t</h1>\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{/* Tab Headers */}\r\n\t\t\t\t<div style={{\r\n\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t}}>\r\n\t\t\t\t\t{tabs.map((tab, index) => (\r\n\t\t\t\t\t\t<React.Fragment key={index}>\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\tstyle={getTabHeaderStyle(index)}\r\n\t\t\t\t\t\t\t\tonClick={() => handleTabChange(index)}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{tab.tabHeaderType === 'text' ? (\r\n\t\t\t\t\t\t\t\t\ttab.tabHeaderText\r\n\t\t\t\t\t\t\t\t) : tab.tabHeaderImage.url ? (\r\n\t\t\t\t\t\t\t\t\t<img\r\n\t\t\t\t\t\t\t\t\t\tsrc={getImageUrl(tab.tabHeaderImage.url)}\r\n\t\t\t\t\t\t\t\t\t\talt={tab.tabHeaderImage.alt}\r\n\t\t\t\t\t\t\t\t\t\tstyle={{ height: '20px', width: 'auto' }}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\ttab.tabHeaderText\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</button>\r\n\r\n\t\t\t\t\t\t\t{/* Add separator | except after last tab */}\r\n\t\t\t\t\t\t\t{index < tabs.length - 1 && (\r\n\t\t\t\t\t\t\t\t<span style={{ color: '#9ca3af', margin: '0 4px' }}>|</span>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</React.Fragment>\r\n\t\t\t\t\t))}\r\n\t\t\t\t</div>\r\n\r\n\t\t\t</div>\r\n\r\n\t\t\t{/* Tab Content */}\r\n\t\t\t<div style={{\r\n\t\t\t\tposition: 'relative',\r\n\t\t\t\theight: 'auto'\r\n\t\t\t}}>\r\n\t\t\t\t{tabs.length > 0 && tabs[activeTab] && (\r\n\t\t\t\t\t<div style={{\r\n\t\t\t\t\t\twidth: '100%',\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\t\t{renderTabContent(tabs[activeTab])}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nexport default TabComponent;","import React from 'react';\r\n\r\ninterface ErrorBoundaryProps {\r\n children: React.ReactNode;\r\n}\r\n\r\ninterface ErrorBoundaryState {\r\n hasError: boolean;\r\n}\r\n\r\nclass ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {\r\n constructor(props: ErrorBoundaryProps) {\r\n super(props);\r\n this.state = { hasError: false };\r\n }\r\n\r\n static getDerivedStateFromError(error: Error) {\r\n return { hasError: true };\r\n }\r\n\r\n componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\r\n console.error(\"ErrorBoundary caught an error:\", error, errorInfo);\r\n // Optionally send error to a logging service\r\n }\r\n\r\n render() {\r\n if (this.state.hasError) {\r\n return <div style={{ padding: '2rem', color: 'red' }}>Failed to render this section. Please try again later.</div>;\r\n }\r\n\r\n return this.props.children;\r\n }\r\n}\r\n\r\nexport default ErrorBoundary;\r\n","import React, { useEffect, useState } from 'react'\r\nimport RowComponent from './PageComponents/RowComponent';\r\nimport BoxComponent from './PageComponents/BoxComponent';\r\nimport TextComponent from './PageComponents/Visual-Components/TextComponent';\r\nimport LinkComponent from './PageComponents/Visual-Components/LinkComponent';\r\nimport ImageComponent from './PageComponents/Visual-Components/ImageComponent';\r\nimport GroupProductComponent, { GroupProductComponentProps } from './PageComponents/Visual-Components/GroupProductComponent';\r\nimport VideoComponent, { VideoComponentProps } from './PageComponents/Visual-Components/VideoComponent';\r\nimport GroupBrandComponent, { GroupBrandComponentProps } from './PageComponents/Visual-Components/GroupBrandComponent';\r\nimport LottieComponent, { LottieComponentProps } from './PageComponents/Visual-Components/LottieComponent';\r\nimport { ImageComponentProps, LinkProps, TextProps } from './common.interface';\r\nimport CarouselComponent, { CarouselProps } from './PageComponents/Visual-Components/CarouselComponent';\r\nimport NavigationComponent, { NavigationProps } from './PageComponents/Visual-Components/NavigationComponent';\r\nimport './index.css'\r\nimport GroupVideoList, { GroupVideoListProps } from './PageComponents/Visual-Components/GroupVideoList';\r\nimport GroupCategoryComponent, { GroupCategoryComponentProps } from './PageComponents/Visual-Components/GroupCategoryComponent';\r\nimport GroupImageList, { GroupImageListProps } from './PageComponents/Visual-Components/GroupImageList';\r\nimport TabComponent, { TabComponentProps } from './PageComponents/Visual-Components/TabComponent';\r\nimport ErrorBoundary from './ErrorBoundary';\r\nconst Page = ({data}:any) => {\r\n const [deviceMode, setDeviceMode] = useState<string>('web');\r\n const [screenSize, setScreenSize] = useState({\r\n width: 0,\r\n height: 0\r\n });\r\n\r\n // Function to determine device mode based on screen width\r\n const getDeviceMode = (width: number) => {\r\n if (width <= 480) return 'mobileapp';\r\n if (width <= 768) return 'mobileweb';\r\n if (width <= 1024) return 'tablet';\r\n return 'web';\r\n };\r\n\r\n // Effect to handle window resize\r\n useEffect(() => {\r\n const handleResize = () => {\r\n const width = window.innerWidth;\r\n const height = window.innerHeight;\r\n setScreenSize({ width, height });\r\n setDeviceMode(getDeviceMode(width));\r\n };\r\n\r\n // Call once on mount\r\n handleResize();\r\n\r\n window.addEventListener('resize', handleResize);\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n }, []);\r\n return (\r\n <>\r\n <div className=''>\r\n <div className=''>\r\n \r\n <ErrorBoundary>\r\n {data.map((row: { props: any; columns: any[]; }, rowIndex: React.Key | null | undefined) => (\r\n <RowComponent key={rowIndex} props={row.props} deviceMode={deviceMode}>\r\n {row.columns.map((box, boxIndex) => (\r\n <BoxComponent \r\n key={boxIndex} \r\n props={box.props} \r\n deviceMode={deviceMode}\r\n autoAdjustForImages={true}\r\n >\r\n {box.components.map((component: { name: string | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null | undefined; props: TextProps | LinkProps | ImageComponentProps | GroupProductComponentProps | VideoComponentProps | GroupBrandComponentProps | LottieComponentProps | CarouselProps | NavigationProps | GroupVideoListProps | GroupCategoryComponentProps | GroupImageListProps | TabComponentProps; }, compIndex: React.Key | null | undefined) => {\r\n const getCurrentBoxHeight = () => {\r\n const validModes = ['web', 'mobileweb', 'mobileapp', 'tablet'] as const;\r\n const safeDeviceMode = validModes.includes(deviceMode as any) \r\n ? deviceMode as keyof typeof box.props.mode \r\n : 'web';\r\n if(component.name==='ImageComponent') return 'auto' // add this line\r\n return box.props.mode[safeDeviceMode]?.height || 'auto';\r\n };\r\n\r\n try {\r\n switch (component.name) {\r\n case 'TextComponent':\r\n return <TextComponent key={compIndex} props={component.props as TextProps} />;\r\n case 'LinkComponent':\r\n return <LinkComponent key={compIndex} props={component.props as LinkProps} />;\r\n case 'ImageComponent':\r\n return <ImageComponent key={compIndex} props={component.props as ImageComponentProps} deviceMode={deviceMode} boxHeight={getCurrentBoxHeight()} />;\r\n case 'GroupProductComponent':\r\n return <GroupProductComponent key={compIndex} props={component.props as GroupProductComponentProps} deviceMode={deviceMode} />;\r\n case 'VideoComponent':\r\n return <VideoComponent key={compIndex} props={component.props as VideoComponentProps} deviceMode={deviceMode} boxHeight={getCurrentBoxHeight()} />;\r\n case 'GroupBrandComponent':\r\n return <GroupBrandComponent key={compIndex} props={component.props as GroupBrandComponentProps} deviceMode={deviceMode} />;\r\n case 'LottieComponent':\r\n return <LottieComponent key={compIndex} props={component.props as LottieComponentProps} />;\r\n case 'CarouselComponent':\r\n return <CarouselComponent key={compIndex} props={component.props as CarouselProps} deviceMode={deviceMode} />;\r\n case 'NavigationComponent':\r\n return <NavigationComponent key={compIndex} props={component.props as NavigationProps} boxHeight={getCurrentBoxHeight()} />;\r\n case 'GroupVideoComponent':\r\n return <GroupVideoList key={compIndex} props={component.props as GroupVideoListProps} boxHeight={getCurrentBoxHeight()} />;\r\n case 'GroupCategoryComponent':\r\n return <GroupCategoryComponent key={compIndex} props={component.props as GroupCategoryComponentProps} deviceMode={deviceMode} />;\r\n case 'GroupImageComponent':\r\n return <GroupImageList key={compIndex} props={component.props as GroupImageListProps} deviceMode={deviceMode} />;\r\n case 'TabComponent':\r\n return <TabComponent key={compIndex} props={component.props as TabComponentProps} deviceMode={deviceMode} />;\r\n default:\r\n return null;\r\n }\r\n } catch (err) {\r\n console.error(`Error rendering component: ${component.name}`, err);\r\n return <div key={compIndex} style={{ color: 'red' }}>Failed to load component: {component.name}</div>;\r\n }\r\n })}\r\n </BoxComponent>\r\n ))}\r\n </RowComponent>\r\n ))}\r\n</ErrorBoundary>\r\n </div>\r\n </div>\r\n </>\r\n )\r\n}\r\n\r\nexport default Page "],"names":["REACT_ELEMENT_TYPE","Symbol","for","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","ref","$$typeof","props","reactJsxRuntime_production","Fragment","jsx","jsxs","process","env","NODE_ENV","getComponentNameFromType","REACT_CLIENT_REFERENCE","displayName","name","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","tag","console","error","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","_context","REACT_FORWARD_REF_TYPE","innerType","render","REACT_MEMO_TYPE","REACT_LAZY_TYPE","_payload","_init","x","testStringCoercion","value","checkKeyStringCoercion","JSCompiler_inline_result","e","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","toStringTag","constructor","call","getTaskName","UnknownOwner","Error","elementRefGetterWithDeprecationWarning","componentName","this","didWarnAboutElementRef","jsxDEVImpl","isStaticChildren","source","self","debugStack","debugTask","dispatcher","children","isArrayImpl","length","validateChildKeys","Object","freeze","hasOwnProperty","keys","filter","k","join","didWarnAboutKeySpread","getter","getOwnPropertyDescriptor","get","isReactWarning","hasValidKey","warnAboutAccessingKey","specialPropKeyWarningShown","defineProperty","configurable","defineKeyPropWarningGetter","owner","_owner","enumerable","_store","writable","ReactElement","ReactSharedInternals","A","getOwner","node","validated","React","require$$0","__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","prototype","Array","isArray","createTask","unknownOwnerDebugStack","react_stack_bottom_frame","callStackForError","bind","unknownOwnerDebugTask","reactJsxRuntime_development","trackActualOwner","recentlyCreatedOwnerStacks","jsxRuntimeModule","exports","require$$1","RowComponent","_a","safeDeviceMode","_b","deviceMode","currentMode","includes","mode","web","isVisible","_jsx","style","minHeight","backgroundColor","bgColor","backgroundImage","bgImage","concat","backgroundSize","bgsize","backgroundPosition","backgroundRepeat","width","height","marginTop","top","marginBottom","bottom","marginLeft","left","marginRight","right","borderRadius","radius","boxSizing","overflow","isScroll","position","display","flexView","flexDirection","undefined","flexWrap","nowrap","justifyContent","around","between","evenly","start","end","center","initial","justify","alignItems","align","extendStatics","d","b","setPrototypeOf","__proto__","p","__extends","TypeError","String","__","create","__assign","assign","t","s","i","n","arguments","apply","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","__generator","body","f","y","_","label","sent","trys","ops","g","Iterator","verb","iterator","v","op","pop","push","SuppressedError","BoxComponent","_c","autoAdjustForImages","isSelected","setShowLayoutDialog","getCurrentMode","colspan","getColspan","isEmpty","childrenArray","Children","toArray","rowLayout","margin","padding","colLayout","flex","hasImageComponent","some","child","isValidElement","getBoxHeight","maxWidth","minWidth","stretch","baseline","getAlignItems","getJustifyContent","layout","color","_jsxs","map","idx","textAlign","renderLayout","TextComponent","text","tagName","headingTag","textStyle","fontSize","fontWeight","fontStyle","isBold","_d","isItalic","textDecoration","_e","isUnderLine","textDecorationLine","_f","isStrikeThrough","fontColor","fontFamily","wordWrap","overflowWrap","whiteSpace","wordBreak","url","linkData","linktype","link","pdType","product","pd_type","code","pd_id","product_data","_g","_h","_j","page","_id","_k","pg_type","buildLink","textElement","createElement","href","target","LinkComponent","linkStyle","styleInject","css","insertAt","document","head","getElementsByTagName","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","VITE_HASHKEY","VITE_REGION","VITE_ENDPOINT","VITE_ACCESS_KEY_ID","VITE_SECRET_ACCESS_KEY","Linodeurl","ImageComponent","boxHeight","mobileweb","mobileapp","tablet","containerHeight","element","tagCode","pageId","pgType","_l","slug","bannerLink","imageUrl","images","all","altText","alt","imageElement","src","className","cursor","ProductListViewOne","useState","setTarget","warn","useEffect","window","matchMedia","matches","test","navigator","userAgent","data","sellingPrice","Number","price","SP","$numberDecimal","mrpPrice","MRP","discount","Math","round","variantOptions","variant","valueId","Boolean","image","toLocaleString","xmlns","viewBox","fill","starrating","startRatingCount","ProductListViewTwo","rel","_Fragment","GroupProductComponent","getCurrentBooleanProp","prop","showHeader","showProductName","isHorizontalScroll","currentLayout","getCurrentLayout","currentstyle","getCurrentStyle","products","groupproduct","showItems","getProducts","border","headerBackground","gap","headerImage","objectFit","headerTextStyle","isUnderline","headerText","static","onClick","carousel","querySelector","scrollBy","behavior","onMouseOver","currentTarget","onMouseOut","overflowX","scrollBehavior","cardColor","scrollbarWidth","scrollbarColor","slice","boxShadow","transition","transform","lineHeight","WebkitLineClamp","WebkitBoxOrient","gridTemplateColumns","extractYouTubeId","parsed","URL","hostname","pathname","replace","startsWith","searchParams","split","extractVimeoId","parts","extractDailymotionId","VideoComponent","video","videos","commonStyle","id","title","allow","allowFullScreen","autoPlay","autoplay","muted","playsInline","controls","loop","poster","thumbnail","renderPlayer","GroupBrandComponent","showBrandName","brands","groupbrand","getBrands","buildBrandHref","item","log","pages","firstPage","page_id","encodeURIComponent","Card","large","brand","factory","svgNS","locationHref","_useWebWorker","initialDefaultFrame","setWebWorker","flag","getWebWorker","setLocationHref","getLocationHref","createTag","extendPrototype","sources","destination","sourcePrototype","len","attr","getDescriptor","object","createProxyFunction","ProxyFunction","audioControllerFactory","AudioController","audioFactory","audios","_volume","_isMuted","addAudio","audio","pause","resume","setRate","rateValue","createAudio","assetPath","Howl","isPlaying","play","seek","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","createTypedArray","createRegularArray","arr","Uint8ClampedArray","Float32Array","Int16Array","createSizedArray","_typeof$6","o","subframeEnabled","expressionsPlugin","expressionsInterfaces","idPrefix$1","isSafari","bmPow","pow","bmSqrt","sqrt","bmFloor","floor","bmMax","max","bmMin","min","BMMath","propertyNames","random","abs","val","absArr","defaultCurveSegments","degToRads","PI","roundCorner","styleDiv","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","currentTime","totalTime","frameMultiplier","direction","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","createElementID","_count","HSVtoRGB","h","r","q","RGBtoHSV","addSaturationToRGB","offset","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","hex","colorMap","toString","setSubframeEnabled","getSubframeEnabled","setExpressionsPlugin","getExpressionsPlugin","setExpressionInterfaces","getExpressionInterfaces","setDefaultCurveSegments","getDefaultCurveSegments","setIdPrefix","createNS","createElementNS","_typeof$5","dataManager","workerFn","workerInstance","_counterId","processes","workerProxy","onmessage","postMessage","path","_workerSelf","setupWorker","fn","Worker","Blob","blob","createObjectURL","createWorker","completeLayers","layers","comps","layerData","j","jLen","kLen","completed","hasMask","maskProps","masksProperties","pt","convertPathsToAbsoluteValues","ty","findCompLayers","refId","completeShapes","shapes","completeText","comp","findComp","__used","JSON","parse","stringify","ks","it","checkVersion","minimum","animVersionString","animVersion","minimumVersion","checkText","updateTextLayer","textLayer","documentData","iterateLayers","animationData","assets","checkChars","chars","charData","ip","st","sr","a","sk","sa","checkPathProperties","pathData","checkColors","iterateShapes","c","checkShapes","completeClosingShapes","closed","cl","moduleOb","__complete","completeChars","dataFunctionManager","assetLoader","formatResponse","xhr","contentTypeHeader","getResponseHeader","responseType","indexOf","response","responseText","load","fullPath","callback","errorCallback","XMLHttpRequest","err","onreadystatechange","readyState","status","open","send","completeData","payload","animation","event","onComplete","onError","createProcess","loadAnimation","processId","location","origin","loadData","completeAnimation","anim","ImagePreloader","proxyImage","canvas","ctx","getContext","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","getAssetsPath","assetData","assetsPath","originalPath","imagePath","u","testImageLoaded","img","intervalId","setInterval","getBBox","_imageLoaded","clearInterval","createFootageData","ob","footageData","_footageLoaded","ImagePreloaderFactory","loadAssets","cb","_createImageData","setAssetsPath","setPath","loadedImages","loadedFootages","destroy","getAsset","createImgData","crossOrigin","addEventListener","createImageData","setAttributeNS","_elementHelper","append","setCacheType","elementHelper","BaseEvent","triggerEvent","eventName","args","_cbs","callbacks","removeEventListener","splice","markerParser","parsePayloadLines","line","lines","keysCount","trim","_markers","markers","_marker","markerData","time","tm","duration","dr","cm","ProjectInterface","registerComposition","compositions","_thisProjectFunction","nm","prepareFrame","xt","currentFrame","compInterface","renderers","registerRenderer","getRenderer","getRegisteredRenderer","_typeof$4","AnimationItem","isLoaded","currentRawFrame","frameRate","frameMult","playSpeed","playDirection","playCount","isPaused","renderer","animationID","timeCompleted","segmentPos","isSubframeEnabled","segments","_idle","_completedLoop","projectInterface","imagePreloader","audioController","configAnimation","onSetupError","onSegmentComplete","drawnFrameEvent","setParams","params","wrapper","container","animType","RendererClass","rendererSettings","globalData","defs","setProjectInterface","parseInt","autoloadSegments","initialSegment","setupAnimation","lastIndexOf","substr","fileName","trigger","setData","wrapperAttributes","attributes","getNamedItem","prerender","includeLayers","newLayers","fonts","fontManager","addChars","addFonts","initExpressions","loadNextSegment","segment","shift","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","animData","fr","searchExtraCompositions","updaFrameModifier","waitForFontsLoaded","triggerConfigError","setTimeout","rendererType","initItems","gotoFrame","resize","_width","_height","updateContainerSize","setSubframe","renderFrame","resetFrame","triggerRenderFrameError","togglePause","stop","setCurrentRawFrameValue","getMarkerData","markerName","marker","goToAndStop","isFrame","numValue","isNaN","frameModifier","goToAndPlay","playSegments","advanceTime","nextValue","_isComplete","checkSegments","adjustSegment","setSpeed","setDirection","setSegment","init","pendingFrame","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onSegmentStart","onDestroy","setLoop","isLooping","getPath","getAssetData","hide","show","getDuration","updateDocumentData","index","getElementByPath","animationManager","registeredAnimations","initTime","playingAnimationsNum","_stopped","_isFrozen","removeElement","ev","animItem","subtractPlayingCount","registerAnimation","elem","addPlayingCount","activate","nowTime","elapsedTime","requestAnimationFrame","first","searchAnimations","standalone","animElements","getElementsByClassName","lenAnims","setAttribute","innerText","div","unfreeze","getRegisteredAnimations","animations","BezierFactory","str","beziers","bezEasing","BezierEasing","kSplineTableSize","kSampleStepSize","float32ArraySupported","aA1","aA2","B","C","calcBezier","aT","getSlope","points","_p","_mSampleValues","_precomputed","mX1","mY1","mX2","mY2","_precompute","_getTForX","_calcSampleValues","aX","mSampleValues","intervalStart","currentSample","lastSample","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","pooling","double","poolFactory","initialLength","_create","_release","_length","_maxLength","pool","newElement","release","bezierLengthPool","addedLength","percents","lengths","segmentsLengthPool","totalLength","bezFunction","math","pointOnLine2D","x1","y1","x2","y2","x3","y3","det1","getBezierLength","pt1","pt2","pt3","pt4","ptCoord","perc","ptDistance","curveSegments","point","lastPoint","lengthData","BezierData","segmentLength","PointData","partial","partialLength","storedData","buildBezierData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","dir","bezierSegmentPoints","getSegmentsLength","shapeData","segmentsLength","pathV","pathO","pathI","getNewSegment","startPerc","endPerc","t0","t1","u0","u1","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","getPointInSegment","percent","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist2","dist3","bez","initFrame","mathAbs","interpolateValue","frameNum","caching","newValue","offsetTime","propType","pv","keyData","nextKeyData","keyframeMetadata","fnc","iterationIndex","lastIndex","keyframes","keyframesMetadata","endValue","nextKeyTime","keyTime","to","ti","ind","__fnct","getBezierEasing","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","sh","quaternionToEuler","slerp","createQuaternion","omega","cosom","sinom","scale0","scale1","out","ax","ay","az","aw","bx","by","bz","bw","acos","sin","quat","qx","qy","qz","qw","heading","atan2","attitude","asin","bank","values","c1","cos","c2","c3","s1","s2","s3","getValueAtCurrentTime","renderedFrame","endTime","_caching","renderResult","setVValue","multipliedValue","mult","_mdf","processEffectsSequence","frameId","effectsSequence","lock","_isFirstFrame","finalValue","kf","addEffect","effectFunction","addDynamicProperty","ValueProperty","vel","getValue","MultiDimensionalProperty","KeyframedValueProperty","KeyframedMultidimensionalProperty","arrLen","PropertyFactory","getProp","sid","slotManager","DynamicPropertyContainer","dynamicProperties","_isAnimated","iterateDynamicProperties","initDynamicPropertyContainer","pointPool","ShapePath","setPathData","setLength","doubleArrayLength","setXYAt","pos","setTripleAt","vX","vY","oX","oY","iX","iY","reverse","newPath","vertices","outPoints","inPoints","cnt","shapePool","shapePath","clone","shape","cloned","ShapeCollection","addShape","releaseShapes","shapeCollectionPool","newShapeCollection","shapeCollection","ShapePropertyFactory","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","interpolateShapeCurrentTime","resetShape","paths","localShapeCollection","shape1","shape2","shapesEqual","ShapeProperty","reset","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","p0","p1","s0","_cw","_v","StarShapeProperty","StarShapePropertyFactory","sy","ir","is","convertToPath","convertStarToPath","convertPolygonToPath","or","os","rad","roundness","perimSegment","numPts","angle","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v0","v1","Matrix","_cos","_sin","_tan","tan","_rnd","rotate","mCos","mSin","_t","rotateX","rotateY","rotateZ","shear","sx","skew","skewFromAxis","scale","sz","setTransform","l","m","translate","tx","tz","a2","b2","d2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","o2","p2","_identityCalculated","a1","b1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","multiply","matrix","matrixProps","isIdentity","_identity","equals","matr","cloneFromProps","applyToPoint","z","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","p4","p5","p12","p13","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","_typeof$3","lottie","setLocation","setSubframeRendering","setPrefix","prefix","setQuality","inBrowser","installPlugin","plugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","variable","vars","queryString","pair","decodeURIComponent","useWebWorker","setIDPrefix","__getFactory","version","scripts","myScript","bodymovin","ShapeModifiers","modifiers","registerModifier","getModifier","ShapeModifier","TrimModifier","PuckerAndBloatModifier","initModifierProperties","addShapeToModifier","setAsAnimated","processKeys","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","processShapes","shapePaths","_s","totalShapeLength","edges","newShapesData","addShapes","lastShape","addPaths","newPaths","addSegment","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","amount","processPath","centerPoint","pathLength","clonedPath","TransformPropertyFactory","defaultVector","TransformProperty","pre","appliedTransformations","px","py","pz","rx","ry","rz","_isDirty","applyToMatrix","mat","forceRender","precalculateMatrix","autoOriented","v2","getValueAtTime","autoOrient","_addDynamicProperty","getTransformProperty","RepeaterModifier","RoundCornersModifier","floatEqual","floatZero","lerp","lerpPoint","quadRoots","singleRoot","delta","polynomialCoefficients","p3","singlePoint","PolynomialBezier","linearize","pointEqual","coeffx","coeffy","extrema","intersectData","t2","box","boundingBox","cx","cy","splitData","boxIntersect","intersectsImpl","depth","tolerance","intersections","maxRecursion","d1s","d2s","crossProduct","lineIntersection","start1","end1","start2","end2","v3","v4","polarOffset","pointDistance","hypot","ZigZagModifier","setPoint","outputBezier","amplitude","outAmplitude","inAmplitude","angO","angI","getPerpendicularVector","vector","rot","getProjectingAngle","cur","prevIndex","nextIndex","pVector","zigZagCorner","frequency","pointType","prevPoint","nextPoint","prevDist","nextDist","zigZagSegment","dist","normalAngle","linearOffset","offsetSegment","p1a","p1b","p2b","p2a","joinLines","seg1","seg2","lineJoin","miterLimit","angleOut","tangentAngle","angleIn","intersection","getIntersection","intersect","pruneSegmentIntersection","outa","outb","pruneIntersections","offsetSegmentSplit","mid","inflectionPoints","OffsetPathModifier","getFontProperties","fontData","styles","fStyle","fWeight","toLowerCase","weight","tr","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","applyTransforms","inv","scaleX","scaleY","elemsData","_currentCopies","_elements","_groups","unshift","resetElements","elements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","items","itemsTransform","cont","hasReloaded","copies","ceil","group","ix","reloadShapes","elems","transformData","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","mProps","rd","currentV","currentI","currentO","closerV","distance","newPosPerc","derivative","denom","tcusp","square","root","p10","p11","p20","p21","bounds","other","shapeSegmentInverted","pointsType","count","ml","lj","inputBezier","multiSegments","lastSeg","multiSegment","FontManager","emptyChar","w","size","combinedCharacters","BLACK_FLAG_CODE_POINT","surrogateModifiers","setUpNode","font","family","parentNode","fontVariant","letterSpacing","offsetWidth","familyArray","enabledFamilies","trimFontOptions","parent","createHelper","def","helper","engine","fontProps","tHelper","fFamily","textContent","fClass","tCanvasHelper","OffscreenCanvas","measureText","getComputedTextLength","getCodePoint","string","codePoint","charCodeAt","second","isRegionalCode","Font","typekitLoaded","_warned","Date","now","setIsLoadedBinded","setIsLoaded","checkLoadedFontsBinded","checkLoadedFonts","isModifier","firstCharCode","secondCharCode","sum","isZeroWidthJoiner","charCode","isFlagEmoji","isCombinedCharacter","_char3","isRegionalFlag","isVariationSelector","fontPrototype","found","ch","list","forEach","cache","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","loaded","monoCase","sansCase","fPath","fOrigin","querySelectorAll","sc","getCharData","_char","getFontByName","fName","_char2","fontName","doubleSize","singleSize","loadedCount","removeChild","SlotManager","slotFactory","RenderableElement","slots","initRenderable","isInRange","hidden","isTransparent","renderableComponents","addRenderableComponent","component","removeRenderableComponent","prepareRenderableFrame","num","checkLayerLimits","checkTransparency","finalTransform","mProp","renderConfig","hideOnTransparent","renderRenderable","sourceRectAtTime","getLayerSize","textData","getBlendMode","blendModeEnums","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","EffectsManager","effects","ef","effectElements","effectItem","GroupEffect","BaseElement","FrameElement","FootageElement","imageLoader","initBaseData","AudioElement","_isPlaying","_canPlay","_currentTime","_volumeMultiplier","_previousVolume","_placeholder","lv","au","BaseRenderer","eff","checkMasks","LayerExpressionInterface","EffectsExpressionInterface","ShapeExpressionInterface","TextExpressionInterface","CompExpressionInterface","layerInterface","maskManager","registerMaskInterface","effectsInterface","createEffectsInterface","registerEffectsInterface","shapeInterface","shapesData","itemsData","content","textInterface","setBlendMode","blendModeValue","bm","baseElement","layerElement","layerId","effectsManager","getType","prepareProperties","_isParent","getBaseElement","FootageInterface","getFootageData","timeRemapped","totalVolume","volumeValue","checkLayers","buildItem","checkPendingElements","createItem","layer","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","createFootage","buildAllItems","pInterface","progressiveLoad","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","pendingElements","getElementById","pathValue","setupGlobalData","fontsContainer","animationItem","compSize","effectTypes","TRANSFORM_EFFECT","TransformElement","MaskElement","maskElement","viewData","solidPath","rect","expansor","feMorph","properties","currentMasks","maskType","maskRef","getShapeProp","lastPath","filterID","expan","lastOperator","filterId","lastRadius","mask","createLayerSolidPath","invRect","drawPath","maskedElement","initTransform","_matMdf","_localMatMdf","_opMdf","localMat","localOpacity","ao","renderTransform","finalMat","localTransforms","renderLocalTransform","lmat","localOp","opacity","searchEffectTransforms","renderableEffectsManager","transformEffects","getEffects","globalToLocal","transforms","ptNew","mHelper","getMaskProperty","isFirstFrame","getMaskelement","pathNodes","pathString","pathShapeValue","filtersFactory","filId","skipCoordinates","fil","feColorMatrix","featureSupport","svgLumaHidden","offscreenCanvas","registeredEffects$1","idPrefix","SVGEffects","filterManager","createFilter","filters","Effect","effect","countsAsEffect","registerEffect$1","SVGBaseElement","HierarchyElement","RenderableDOMElement","IImageElement","initElement","sourceRect","ProcessedElement","IShapeElement","initRendererElement","createContainerElements","matteElement","transformedElement","_sizeChanged","layerElementParent","td","matteMasks","gg","tt","ln","hd","cp","clipId","cpGroup","renderElement","destroyBaseElement","createRenderableComponents","getMatte","matteType","useElement","masker","createAlphaToLuminanceFilter","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","setMatte","initHierarchy","checkParenting","createContent","renderInnerContent","innerElem","pr","imagePreserveAspectRatio","addShapeToModifiers","shapeModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","searchProcessedElement","processedElements","addProcessedElement","lineCapEnum","lineJoinEnum","SVGShapeData","transformers","level","caches","lStr","lvl","SVGStyleData","pElem","msElem","DashProperty","dataProps","dashStr","dashArray","dashoffset","SVGStrokeStyleData","styleOb","SVGFillStyleData","SVGNoStyleData","GradientProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","gr","SVGTransformData","comparePoints","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","gf","cst","opacityId","maskId","opFill","lc","of","ms","ost","buildShapeString","_o","_i","shapeString","SVGElementsRenderer","_identityMatrix","_matrixHelper","renderContentTransform","styleData","itemData","renderNoop","renderPath","pathStringTransformed","redraw","iterations","lLen","renderFill","styleElem","renderGradientStroke","renderGradient","renderStroke","hasOpacity","attr1","attr2","cValues","oValues","ang","createRenderFunction","SVGShapeElement","stylesList","animatedContents","LetterProps","sw","fc","TextProperty","_frameId","keysIndex","canResize","minimumFontSize","currentData","ascent","boxWidth","defaultBoxWidth","justifyOffset","lh","lineWidths","ls","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","setElementStyles","currentTransform","modifier","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","update","updated","obj","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","charactersArray","shouldCombine","shouldCombineNext","currentChars","charAt","newLineFlag","letters","anchorGrouping","currentSize","currentPos","currentLine","lineWidth","maxLineWidth","trackingOffset","currentHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","an","add","anIndexes","animatorJustifyOffset","extra","animatorData","letterData","based","animators","indexes","fh","fs","fb","rn","totalChars","newInd","currentInd","newData","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorProp","TextSelectorPropFactory","_currentTextLength","finalS","finalE","xe","ne","sm","getMult","textProperty","easer","tot","smoothness","threshold","newCharsFlag","divisor","getTextSelectorProp","TextAnimatorDataProperty","animatorProps","defaultData","textAnimatorAnimatables","TextAnimatorProperty","renderType","_hasMaskedPath","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","alignment","renderedLetters","lettersChangedFlag","ITextElement","searchProperties","getMeasures","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","tanAngle","matrixHelper","renderedLettersCount","tLength","pi","letterValue","yOff","firstLine","offf","xPathPos","yPathPos","elemOpacity","letterSw","letterSc","letterFc","letterO","initPathPos","initSegmentInd","initPointInd","letterM","letterP","defaultPropsArray","animatorFirstCharOffset","justifyOffsetMult","isNewLine","animatorOffset","atan","textAnimator","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","lineNumber","buildColor","colorData","emptyProp","validateText","buildNewText","emptyShapeData","SVGTextLottieElement","textSpans","ISolidElement","NullElement","SVGRendererBase","ICompElement","SVGCompElement","supports3d","SVGRenderer","svgElement","ariaLabel","titleElement","titleId","description","descElement","descId","preserveAspectRatio","contentVisibility","viewBoxOnly","viewBoxSize","focusable","filterSize","runExpressions","destroyed","ShapeTransformManager","sequences","sequenceList","transform_key_count","singleShape","textContainer","buildTextContents","textArray","textContents","currentTextContent","fromCharCode","buildShapeData","shapeItem","tSpan","usesGlyphs","cachedSpansLength","span","childSpan","glyph","glyphElement","_debug","tElement","textBox","bbox","renderedLetter","textSpan","findIndexByInd","appendElementInPos","elementIndex","tp","matteMask","nextElement","setElements","getElements","destroyElements","addTransformSequence","sequence","processSequence","processSequences","getNewKey","lumaLoader","lumaBuffer","lumaBufferCtx","svg","loadLuma","_svg","createCanvas","loadLumaCanvas","getLumaCanvas","registeredEffects","CVEffects","registerEffect","CVMaskElement","hasMasks","CVBaseElement","canvasContext","beginPath","moveTo","lineTo","bezierCurveTo","save","clip","operationsMap","CVShapeData","transformsManager","styledShapes","styledShape","trNodes","CVShapeElement","CVTextElement","stroke","currentRender","sWidth","fValue","CVImageElement","CVSolidElement","CanvasRendererBase","CanvasContext","strokeStyle","lineCap","CVContextData","stack","cArrPos","cTr","nativeContext","transformMat","currentOpacity","currentFillStyle","appliedFillStyle","currentStrokeStyle","appliedStrokeStyle","currentLineWidth","appliedLineWidth","currentLineCap","appliedLineCap","currentLineJoin","appliedLineJoin","appliedMiterLimit","currentMiterLimit","CVCompElement","CanvasRenderer","clearCanvas","context","dpr","devicePixelRatio","currentGlobalAlpha","contextData","ctxTransform","ctxOpacity","ctxFillStyle","ctxStrokeStyle","ctxLineWidth","ctxLineCap","ctxLineJoin","ctxMiterLimit","ctxFill","ctxFillRect","ctxStroke","HBaseElement","HSolidElement","HShapeElement","shapesContainer","currentBBox","HTextElement","textPaths","isMasked","HCameraElement","pe","_prevMat","HImageElement","HybridRendererBase","threeDElements","camera","HCompElement","HybridRenderer","createElements","buffers","bufferCanvas","bufferCanvas2","_isProxy","transformCanvas","blendMode","globalCompositeOperation","hideElement","showElement","clearRect","prepareLayer","bufferCtx","drawImage","getTransform","exitLayer","buffer","forceRealStack","restore","transformHelper","dashResetter","preTransforms","co","wi","da","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","nodes","currentStyle","coOp","grd","setLineDash","lineDashOffset","closePath","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","createLinearGradient","createRadialGradient","addColorStop","hasFill","hasStroke","commands","pathArr","commandsCounter","lastFill","lastStroke","lastStrokeW","widthCrop","heightCrop","imgW","imgH","imgRel","canvasRel","par","globalAlpha","rule","actionFlag","containerStyle","mozTransformOrigin","setContext","isDashed","elementWidth","elementHeight","elementRel","animationRel","offsetHeight","fillType","duplicate","newLength","forceRestore","currentContext","prevStack","saveOnNativeFlag","currentStack","newStack","setOpacity","trProps","checkBlendMode","tg","transformedElementStyle","matrixValue","webkitTransform","addEffects","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","vPoint","oPoint","nextIPoint","nextVPoint","checkBounds","getBoundsOfCurve","shapeBoundingBox","xMax","yMax","tempBoundingBox","b2ac","calculateF","calculateBoundingBox","expandStrokeBoundingBox","widthProperty","kfw","currentBoxContains","changed","shapeStyle","shapeTransform","compW","compH","innerElemStyle","textColor","strokeWidth","tParent","tCont","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","svgTransform","setup","perspectiveStyle","perspectiveElem","perspective","webkitPerspective","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","Image","imageElem","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","getThreeDContainerByPos","startPos","endPos","createThreeDContainer","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","cWidth","cHeight","floatingContainer","_createBaseContainerElements","_thisLayerFunction","pixelAspect","frameDuration","displayStartTime","numLayers","_typeof$2","seedRandom","global","rngname","startdenom","significance","ARC4","keylen","me","S","copy","flatten","typ","mixkey","seed","smear","stringseed","tostring","options","shortseed","entropy","Uint8Array","crypto","msCrypto","getRandomValues","browser","plugins","screen","autoseed","arc4","prng","int32","quick","pass","is_math_call","state","initialize$2","propTypes","SHAPE","_typeof$1","ExpressionManager","fetch","frames","_lottieGlobal","$bm_isInstanceOfArray","isNumerable","tOfV","$bm_neg","tOfA","lenA","retArr","easeInBez","easeOutBez","easeInOutBez","tOfB","lenB","sub","mul","mod","$bm_sum","$bm_sub","$bm_mul","$bm_div","$bm_mod","clamp","mm","radiansToDegrees","radians_to_degrees","degreesToRadians","degrees_to_radians","helperLengthArray","arr1","arr2","normalize","vec","rgbToHsl","hue2rgb","hslToRgb","linear","tMin","tMax","value1","value2","_tMin","rnd","createPath","inTangents","outTangents","inVertexPoint","outVertexPoint","arrPlaceholder","initiateExpression","property","noOp","_value","needsVelocity","_needsRandom","elemType","$bm_transform","thisProperty","_name","valueAtTime","inPoint","outPoint","loopIn","loop_in","loopOut","loop_out","smooth","toWorld","fromWorld","fromComp","toComp","fromCompToSurface","rotation","anchorPoint","thisLayer","thisComp","velocityAtTime","scoped_bm_rt","expression_function","eval","numKeys","active","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","loopInDuration","loopOutDuration","getVelocityAtTime","velocity","textIndex","textTotal","selectorValue","lookAt","elem1","elem2","fVec","pitch","easeOut","val1","val2","applyEase","easeIn","ease","iKey","lenKey","nearestKey","obKey","framesToTime","fps","timeToFrames","seedrandom","randSeed","substring","posterizeTime","framesPerSecond","hasParent","executeExpression","frameExpressionId","__preventDeadCodeRemoval","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","expression","MaskManagerInterface","MaskInterface","_mask","_data","_masksInterfaces","ExpressionPropertyInterface","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","valueProp","speedAtTime","getSpeedAtTime","propertyGroup","defaultGetter","UnidimensionalPropertyInterface","arrValue","MultidimensionalPropertyInterface","TransformExpressionInterface","_thisFunction","xRotation","yRotation","xPosition","yPosition","zPosition","_px","_py","_pz","_transformFactory","getMatrix","toWorldMat","toWorldVec","applyPoint","fromWorldVec","invertPoint","sampleImage","transformInterface","anchorPointDescriptor","defineProperties","anchor_point","startTime","propertyGroupFactory","interfaceFunction","parentPropertyGroup","PropertyInterface","propertyName","createGroupInterface","groupInterface","mn","_propertyGroup","createValueInterface","numProperties","np","enabled","en","expressionProperty","setGroupProperty","effectsData","ShapePathInterface","view","propertyIndex","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","defaultInterfaceFactory","interfaces","transformInterfaceFactory","cix","contentsInterfaceFactory","startPoint","endPoint","_dashPropertyGroup","dashOb","addPropertyToDashOb","dash","skewAxis","outerRadius","outerRoundness","innerRoundness","innerRadius","_interfaceFunction","_sourceText","sourceText","stringValue","fillColor","_typeof","dataInterfaceFactory","outlineInterface","currentPropertyName","currentProperty","propertyNameIndex","outlineInterfaceFactory","dataInterface","footage","getInterface","expressionHelpers","searchExpressions","speed","_cachingAtTime","getStaticValueAtTime","addPropertyDecorator","durationFlag","cycleDuration","firstKeyFrame","ret","lastKeyFrame","initV","endV","current","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","anchor","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformStaticValueAtTime","propertyGetProp","ShapePropertyConstructorFunction","getConstructorFunction","KeyframedShapePropertyConstructorFunction","getKeyframedConstructorFunction","ShapeExpressions","isClosed","pointOnPath","_segmentsLength","accumulatedLength","initIndex","endIndex","vectorOnPath","vectorType","xLength","yLength","magnitude","tangentOnPath","normalOnPath","shapeValue","lastTime","propertyGetShapeProp","trims","initialize$1","addDecorator","getExpressionValue","calculateExpression","isKeyframed","hasExpressions","initialize","SVGComposableEffect","createMergeNode","resultId","ins","feMergeNode","feMerge","linearFilterValue","SVGTintFilter","linearFilter","matrixFilter","SVGFillFilter","SVGStrokeEffect","initialized","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","globalFilterSize","feGaussianBlur","feOffset","feFlood","feComposite","colorBlack","colorWhite","groupPath","elemChildren","childNodes","removeAttribute","pathMasker","dasharrayValue","getTotalLength","lineLength","units","color1","color2","color3","tableR","tableG","tableB","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","colorValue","table","outputDelta","inputDelta","col","_svgMatteSymbols","SVGMatte3Effect","filterElem","SVGGaussianBlurEffect","TransformEffect","SVGTransformEffect","CVTransformEffect","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","symbol","sigma","dimensions","sigmaX","sigmaY","edgeMode","forceFrame","isUniformScale","scaleHeight","scaleWidth","module","_arrayLikeToArray","_arrayWithHoles","_defineProperty","_toPropertyKey","_iterableToArrayLimit","return","_nonIterableRest","ownKeys","getOwnPropertySymbols","_objectSpread2","getOwnPropertyDescriptors","_objectWithoutProperties","_objectWithoutPropertiesLoose","propertyIsEnumerable","_slicedToArray","_unsupportedIterableToArray","_toPrimitive","toPrimitive","from","_excluded$1","useLottie","onConfigReady","onDataReady","onDataFailed","onLoadedImages","onDOMLoaded","lottieRef","rest","_useState2","animationLoaded","setAnimationLoaded","animationInstanceRef","useRef","animationContainer","onUnmount","forcedConfigs","listeners","handler","listener","deregisterList","deregister","View","useSubFrames","inFrames","animationContainerRef","getContainerVisibility","_container$getBoundin","getBoundingClientRect","innerHeight","getContainerCursorPosition","cursorX","cursorY","_container$getBoundin2","useInitInteractivity","_ref","wrapperRef","actions","handleCursor","mouseMoveHandler","mouseOutHandler","assignedSegment","scrollHandler","currentPercent","action","find","_ref2","visibility","frameToGo","_x","_y","_ref3","xPercent","yPercent","clientX","clientY","useLottieInteractivity","_ref4","lottieObj","_excluded","Lottie","interactivity","lottieProps","_useLottie","LottieComponent","_m","lottieurl","isClickable","setAnimationData","setError","isMounted","controller","AbortController","signal","res","ok","json","catch","message","abort","CarouselComponent","currentSlide","setCurrentSlide","setIsPlaying","isHovered","setIsHovered","slides","totalSlides","nextSlide","useCallback","prev","prevSlide","interval","autoplayInterval","slidesToShow","resolveAssetUrl","buildLinkForSlide","slide","link_type","external_link","product_type","page_type","onMouseEnter","pauseOnHover","onMouseLeave","vertical","clickable","entries","query","handleSlideClick","sl_type","sl_id","sliderArrowVisible","zIndex","background","pagingDotVisible","goToSlide","NavigationComponent","navData","openId","setOpenId","buildHref","Item","isRoot","hasChildren","isTop","primary","secondary","baseStyles","borderBottom","isSeparator","separator","hover","setHover","nl_id","colorHover","arrow","paddingTop","paddingLeft","videoData","GroupVideoList","groupvideo","dynamic","groupvideodata","getVideos","scrollLeft","scrollableContainer","scrollRight","VideoCard","cardcolor","playerType","showTitle","titleStyle","showSubtitle","subTitle","subtitleStyle","carouselBackground","GroupCategoryComponent","showCategoryName","categories","groupcategory","getCategories","buildCategoryHref","nameData","category","ImageComponentInternal","imageData","imageStyle","tag_id","tag_data","_r","_q","page_data","GroupImageList","groupimage","groupimagedata","getImages","ImageCard","msOverflowStyle","flexShrink","TabComponent","activeTab","setActiveTab","carouselIndex","setCarouselIndex","getImageUrl","ProductCard","rating","formatPrice","parseFloat","currency","minimumFractionDigits","maximumFractionDigits","renderStars","stars","getVariantText","mrp","sp","offer","mrpValue","spValue","calculateOffer","cardMode","productSlug","productLink","cardContent","model","toFixed","nextCarouselItem","prevCarouselItem","goToCarouselItem","getTabHeaderStyle","header","tabs","getTitleStyle","titleText","tab","handleTabChange","tabHeaderType","tabHeaderImage","getGridColumns","getGridRows","contentStyle","gridTemplateRows","tabContentType","tabContentImage","tabContentVideo","tabContentGroupImage","images_1","dynamicImages","currentImage","linkUrl","disabled","maxImages","getMaxImages","displayImages","groupImageContentStyle","tabContentGroupVideo","videos_1","dynamicVideos","currentVideo","videoElement","maxVideos","getMaxVideos","displayVideos","groupVideoContentStyle","tabContentGroupProduct","products_1","currentProduct","maxProducts","getMaxProducts","displayProducts","groupProductContentStyle","renderTabContent","ErrorBoundary","_super","_this","hasError","getDerivedStateFromError","componentDidCatch","errorInfo","Component","Page","setDeviceMode","setScreenSize","handleResize","innerWidth","getDeviceMode","row","rowIndex","columns","boxIndex","components","compIndex","getCurrentBoxHeight"],"mappings":"kaAWA,IAAIA,EAAqBC,OAAOC,IAAI,8BAClCC,EAAsBF,OAAOC,IAAI,kBACnC,SAASE,EAAQC,EAAMC,EAAQC,GAC7B,IAAIC,EAAM,KAGV,QAFA,IAAWD,IAAaC,EAAM,GAAKD,QACnC,IAAWD,EAAOE,MAAQA,EAAM,GAAKF,EAAOE,KACxC,QAASF,EAEX,IAAK,IAAIG,KADTF,EAAW,CAAA,EACUD,EACnB,QAAUG,IAAaF,EAASE,GAAYH,EAAOG,SAChDF,EAAWD,EAElB,OADAA,EAASC,EAASG,IACX,CACLC,SAAUX,EACVK,KAAMA,EACNG,IAAKA,EACLE,SAAK,IAAWJ,EAASA,EAAS,KAClCM,MAAOL,EAEX,QACAM,2BAAAC,SAAmBX,EACnBU,2BAAAE,IAAcX,EACdS,2BAAAG,KAAeZ;;;;;;;;;0ICtBf,eAAiBa,QAAQC,IAAIC,UAC3B,WACE,SAASC,EAAyBf,GAChC,GAAI,MAAQA,EAAM,OAAO,KACzB,GAAI,mBAAsBA,EACxB,OAAOA,EAAKM,WAAaU,EACrB,KACAhB,EAAKiB,aAAejB,EAAKkB,MAAQ,KACvC,GAAI,iBAAoBlB,EAAM,OAAOA,EACrC,OAAQA,GACN,KAAKF,EACH,MAAO,WACT,KAAKqB,EACH,MAAO,WACT,KAAKC,EACH,MAAO,aACT,KAAKC,EACH,MAAO,WACT,KAAKC,EACH,MAAO,eACT,KAAKC,EACH,MAAO,WAEX,GAAI,iBAAoBvB,EACtB,OACG,iBAAoBA,EAAKwB,KACxBC,QAAQC,MACN,qHAEJ1B,EAAKM,UAEL,KAAKqB,EACH,MAAO,SACT,KAAKC,EACH,OAAQ5B,EAAKiB,aAAe,WAAa,YAC3C,KAAKY,EACH,OAAQ7B,EAAK8B,SAASb,aAAe,WAAa,YACpD,KAAKc,EACH,IAAIC,EAAYhC,EAAKiC,OAKrB,OAJAjC,EAAOA,EAAKiB,eAGTjB,EAAO,MADNA,EAAOgC,EAAUf,aAAee,EAAUd,MAAQ,IAC9B,cAAgBlB,EAAO,IAAM,cAC9CA,EACT,KAAKkC,EACH,OAEE,QADCF,EAAYhC,EAAKiB,aAAe,MAE7Be,EACAjB,EAAyBf,EAAKA,OAAS,OAE/C,KAAKmC,EACHH,EAAYhC,EAAKoC,SACjBpC,EAAOA,EAAKqC,MACZ,IACE,OAAOtB,EAAyBf,EAAKgC,GACnD,CAAc,MAAOM,GAAG,EAElB,OAAO,IACb,CACI,SAASC,EAAmBC,GAC1B,MAAO,GAAKA,CAClB,CACI,SAASC,EAAuBD,GAC9B,IACED,EAAmBC,GACnB,IAAIE,GAA2B,CACvC,CAAQ,MAAOC,GACPD,GAA2B,CACnC,CACM,GAAIA,EAA0B,CAE5B,IAAIE,GADJF,EAA2BjB,SAC0BC,MACjDmB,EACD,mBAAsBjD,QACrBA,OAAOkD,aACPN,EAAM5C,OAAOkD,cACfN,EAAMO,YAAY7B,MAClB,SAMF,OALA0B,EAAsBI,KACpBN,EACA,2GACAG,GAEKN,EAAmBC,EAClC,CACA,CACI,SAASS,EAAYjD,GACnB,GAAIA,IAASF,EAAqB,MAAO,KACzC,GACE,iBAAoBE,GACpB,OAASA,GACTA,EAAKM,WAAa6B,EAElB,MAAO,QACT,IACE,IAAIjB,EAAOH,EAAyBf,GACpC,OAAOkB,EAAO,IAAMA,EAAO,IAAM,OACzC,CAAQ,MAAOoB,GACP,MAAO,OACf,CACA,CAKI,SAASY,IACP,OAAOC,MAAM,wBACnB,CAuBI,SAASC,IACP,IAAIC,EAAgBtC,EAAyBuC,KAAKtD,MAOlD,OANAuD,EAAuBF,KACnBE,EAAuBF,IAAiB,EAC1C5B,QAAQC,MACN,qJAGG,KADP2B,EAAgBC,KAAK/C,MAAMF,KACOgD,EAAgB,IACxD,CAqDI,SAASG,EACPxD,EACAC,EACAC,EACAuD,EACAC,EACAC,EACAC,EACAC,GAEA,IApGIC,EAoGAC,EAAW9D,EAAO8D,SACtB,QAAI,IAAWA,EACb,GAAIN,EACF,GAAIO,EAAYD,GAAW,CACzB,IACEN,EAAmB,EACnBA,EAAmBM,EAASE,OAC5BR,IAEAS,EAAkBH,EAASN,IAC7BU,OAAOC,QAAUD,OAAOC,OAAOL,EAC3C,MACYtC,QAAQC,MACN,6JAEDwC,EAAkBH,GACzB,GAAIM,EAAerB,KAAK/C,EAAQ,OAAQ,CACtC8D,EAAWhD,EAAyBf,GACpC,IAAIsE,EAAOH,OAAOG,KAAKrE,GAAQsE,OAAO,SAAUC,GAC9C,MAAO,QAAUA,CAC3B,GACQf,EACE,EAAIa,EAAKL,OACL,kBAAoBK,EAAKG,KAAK,WAAa,SAC3C,iBACNC,EAAsBX,EAAWN,KAC7Ba,EACA,EAAIA,EAAKL,OAAS,IAAMK,EAAKG,KAAK,WAAa,SAAW,KAC5DhD,QAAQC,MACN,kOACA+B,EACAM,EACAO,EACAP,GAEDW,EAAsBX,EAAWN,IAAoB,EAChE,CAMM,GALAM,EAAW,UACX,IAAW7D,IACRuC,EAAuBvC,GAAY6D,EAAW,GAAK7D,GArIxD,SAAqBD,GACnB,GAAIoE,EAAerB,KAAK/C,EAAQ,OAAQ,CACtC,IAAI0E,EAASR,OAAOS,yBAAyB3E,EAAQ,OAAO4E,IAC5D,GAAIF,GAAUA,EAAOG,eAAgB,OAAO,CACpD,CACM,YAAO,IAAW7E,EAAOE,GAC/B,CAgIM4E,CAAY9E,KACTwC,EAAuBxC,EAAOE,KAAO4D,EAAW,GAAK9D,EAAOE,KAC3D,QAASF,EAEX,IAAK,IAAIG,KADTF,EAAW,CAAA,EACUD,EACnB,QAAUG,IAAaF,EAASE,GAAYH,EAAOG,SAChDF,EAAWD,EAQlB,OAPA8D,GAtIF,SAAoCxD,EAAOU,GACzC,SAAS+D,IACPC,IACIA,GAA6B,EAC/BxD,QAAQC,MACN,0OACAT,GAEZ,CACM+D,EAAsBF,gBAAiB,EACvCX,OAAOe,eAAe3E,EAAO,MAAO,CAClCsE,IAAKG,EACLG,cAAc,GAEtB,CAyHQC,CACElF,EACA,mBAAsBF,EAClBA,EAAKiB,aAAejB,EAAKkB,MAAQ,UACjClB,GAlHV,SACEA,EACAG,EACAwD,EACAD,EACA2B,EACA9E,EACAqD,EACAC,GA0CA,OAxCAF,EAAOpD,EAAMF,IACbL,EAAO,CACLM,SAAUX,EACVK,KAAMA,EACNG,IAAKA,EACLI,MAAOA,EACP+E,OAAQD,GAEV,aAAU,IAAW1B,EAAOA,EAAO,MAC/BQ,OAAOe,eAAelF,EAAM,MAAO,CACjCuF,YAAY,EACZV,IAAKzB,IAEPe,OAAOe,eAAelF,EAAM,MAAO,CAAEuF,YAAY,EAAI/C,MAAO,OAChExC,EAAKwF,OAAS,CAAA,EACdrB,OAAOe,eAAelF,EAAKwF,OAAQ,YAAa,CAC9CL,cAAc,EACdI,YAAY,EACZE,UAAU,EACVjD,MAAO,IAET2B,OAAOe,eAAelF,EAAM,aAAc,CACxCmF,cAAc,EACdI,YAAY,EACZE,UAAU,EACVjD,MAAO,OAET2B,OAAOe,eAAelF,EAAM,cAAe,CACzCmF,cAAc,EACdI,YAAY,EACZE,UAAU,EACVjD,MAAOoB,IAETO,OAAOe,eAAelF,EAAM,aAAc,CACxCmF,cAAc,EACdI,YAAY,EACZE,UAAU,EACVjD,MAAOqB,IAETM,OAAOC,SAAWD,OAAOC,OAAOpE,EAAKO,OAAQ4D,OAAOC,OAAOpE,IACpDA,CACb,CAiEa0F,CACL1F,EACA+D,EACAJ,EACAD,EA7JK,QADHI,EAAa6B,EAAqBC,GACT,KAAO9B,EAAW+B,WA+J7C3F,EACA0D,EACAC,EAER,CACI,SAASK,EAAkB4B,GACzB,iBAAoBA,GAClB,OAASA,GACTA,EAAKxF,WAAaX,GAClBmG,EAAKN,SACJM,EAAKN,OAAOO,UAAY,EACjC,CACI,IA8BId,EA9BAe,EAAQC,MACVtG,EAAqBC,OAAOC,IAAI,8BAChC8B,EAAoB/B,OAAOC,IAAI,gBAC/BC,EAAsBF,OAAOC,IAAI,kBACjCuB,EAAyBxB,OAAOC,IAAI,qBACpCsB,EAAsBvB,OAAOC,IAAI,kBAE/BgC,EAAsBjC,OAAOC,IAAI,kBACnC+B,EAAqBhC,OAAOC,IAAI,iBAChCkC,EAAyBnC,OAAOC,IAAI,qBACpCwB,EAAsBzB,OAAOC,IAAI,kBACjCyB,EAA2B1B,OAAOC,IAAI,uBACtCqC,EAAkBtC,OAAOC,IAAI,cAC7BsC,EAAkBvC,OAAOC,IAAI,cAC7B0B,EAAsB3B,OAAOC,IAAI,kBACjCmB,EAAyBpB,OAAOC,IAAI,0BACpC8F,EACEK,EAAME,gEACR7B,EAAiBF,OAAOgC,UAAU9B,eAClCL,EAAcoC,MAAMC,QACpBC,EAAa7E,QAAQ6E,WACjB7E,QAAQ6E,WACR,WACE,OAAO,IACnB,EAOQ/C,EAAyB,CAAA,EACzBgD,GAPJP,EAAQ,CACNQ,yBAA0B,SAAUC,GAClC,OAAOA,GACf,IAIuCD,yBAAyBE,KAC1DV,EACA9C,EAF2B8C,GAIzBW,EAAwBL,EAAWrD,EAAYC,IAC/CwB,EAAwB,CAAA,EAC5BkC,4BAAAnG,SAAmBX,EACnB8G,4BAAAlG,IAAc,SAAUV,EAAMC,EAAQC,EAAUwD,EAAQC,GACtD,IAAIkD,EACF,IAAMlB,EAAqBmB,6BAC7B,OAAOtD,EACLxD,EACAC,EACAC,GACA,EACAwD,EACAC,EACAkD,EACI1D,MAAM,yBACNoD,EACJM,EAAmBP,EAAWrD,EAAYjD,IAAS2G,EAE3D,EACIC,4BAAAjG,KAAe,SAAUX,EAAMC,EAAQC,EAAUwD,EAAQC,GACvD,IAAIkD,EACF,IAAMlB,EAAqBmB,6BAC7B,OAAOtD,EACLxD,EACAC,EACAC,GACA,EACAwD,EACAC,EACAkD,EACI1D,MAAM,yBACNoD,EACJM,EAAmBP,EAAWrD,EAAYjD,IAAS2G,EAE3D,CACG,CAzVD,oHCV2B,eAAzB/F,QAAQC,IAAIC,SACdiG,WAAAC,QAAiBf,oCAEjBc,WAAAC,QAAiBC,mGCmCbC,aAA4C,SAACC,OAQzCC,EAPR7G,EAAK4G,EAAA5G,MACLwD,EAAQoD,EAAApD,SACRsD,eAAAC,OAAU,IAAAD,EAAG,MAAKA,EAaZE,GAREH,EADa,CAAC,MAAO,YAAa,YAAa,UACnBI,SAASF,GACvCA,EACA,MAEG/G,EAAMkH,KAAKL,IAAmB7G,EAAMkH,KAAKC,KAOlD,IAAKH,EAAYI,UACf,OAAO,KAoBT,OACEC,kBAAAA,IAAA,MAAA,CACEC,MAAO,CACLC,UAAWvH,EAAMuH,UACjBC,gBAAiBxH,EAAMyH,QACvBC,gBAAiB1H,EAAM2H,QAAU,OAAAC,OAAO5H,EAAM2H,QAAO,KAAM,OAC3DE,eAAgB7H,EAAM8H,OACtBC,mBAAoB,SACpBC,iBAAkB,YAClBC,MAAOjB,EAAYiB,OAAS,OAC5BC,OAAQlB,EAAYkB,OACpBC,UAAWnB,EAAYoB,IACvBC,aAAcrB,EAAYsB,OAC1BC,WAAYvB,EAAYwB,KACxBC,YAAazB,EAAY0B,MACzBC,aAAc3B,EAAY4B,OAC1BC,UAAW,aACXC,SAAU9B,EAAY+B,SAAW,OAAS,UAC1CC,SAAU,WAEVC,QAASjC,EAAYkC,SAAW,OAAS,QACzCC,cAAenC,EAAYkC,SAAW,WAAiBE,EACvDC,SAAUrC,EAAYkC,SAAYlJ,EAAMsJ,OAAS,SAAoB,YAAmBF,EACxFG,eAAgBvC,EAAYkC,SAtCwC,CACxEM,OAAQ,eACRC,QAAS,gBACTC,OAAQ,eACRC,MAAO,aACPC,IAAK,WACLC,OAAQ,SACR,aAAc,aACd,WAAY,WACZC,QAAS,WAGO9J,EAAM+J,UAAY/J,EAAM+J,SAAW,kBA0BcX,EAC7DY,WAAYhK,EAAMiK,OACnBzG,SAEAA,GAGP,EC9FI0G,cAAgB,SAASC,EAAGC,GAI5B,OAHAF,cAAgBtG,OAAOyG,gBAClB,CAAEC,UAAW,cAAgBzE,OAAS,SAAUsE,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOxG,OAAOgC,UAAU9B,eAAerB,KAAK2H,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,cAAcC,EAAGC,EAC5B,EAEO,SAASI,UAAUL,EAAGC,GACzB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIK,UAAU,uBAAyBC,OAAON,GAAK,iCAE7D,SAASO,IAAO5H,KAAKP,YAAc2H,CAAG,CADtCD,cAAcC,EAAGC,GAEjBD,EAAEvE,UAAkB,OAANwE,EAAaxG,OAAOgH,OAAOR,IAAMO,EAAG/E,UAAYwE,EAAExE,UAAW,IAAI+E,EACnF,CAEO,IAAIE,SAAW,WAQlB,OAPAA,SAAWjH,OAAOkH,QAAU,SAAkBC,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUzH,OAAQuH,EAAIC,EAAGD,IAE5C,IAAK,IAAIV,KADTS,EAAIG,UAAUF,GACOrH,OAAOgC,UAAU9B,eAAerB,KAAKuI,EAAGT,KAAIQ,EAAER,GAAKS,EAAET,IAE9E,OAAOQ,CACX,EACOF,SAASO,MAAMrI,KAAMoI,UAChC,EA0EO,SAASE,UAAUC,EAASC,EAAYC,EAAGC,GAE9C,OAAO,IAAKD,IAAMA,EAAIE,UAAU,SAAUC,EAASC,GAC/C,SAASC,EAAU5J,GAAS,IAAM6J,EAAKL,EAAUM,KAAK9J,GAAS,CAAE,MAAOG,GAAKwJ,EAAOxJ,EAAI,CAAE,CAC1F,SAAS4J,EAAS/J,GAAS,IAAM6J,EAAKL,EAAiB,MAAExJ,GAAS,CAAE,MAAOG,GAAKwJ,EAAOxJ,EAAI,CAAE,CAC7F,SAAS0J,EAAKG,GAJlB,IAAehK,EAIagK,EAAOC,KAAOP,EAAQM,EAAOhK,QAJ1CA,EAIyDgK,EAAOhK,MAJhDA,aAAiBuJ,EAAIvJ,EAAQ,IAAIuJ,EAAE,SAAUG,GAAWA,EAAQ1J,EAAQ,IAIjBkK,KAAKN,EAAWG,EAAW,CAC7GF,GAAML,EAAYA,EAAUL,MAAME,EAASC,GAAc,KAAKQ,OAClE,EACJ,CAEO,SAASK,YAAYd,EAASe,GACjC,IAAsGC,EAAGC,EAAGxB,EAAxGyB,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAP3B,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAG4B,KAAM,GAAIC,IAAK,IAAeC,EAAIjJ,OAAOgH,QAA4B,mBAAbkC,SAA0BA,SAAWlJ,QAAQgC,WACtL,OAAOiH,EAAEd,KAAOgB,EAAK,GAAIF,EAAS,MAAIE,EAAK,GAAIF,EAAU,OAAIE,EAAK,GAAsB,mBAAX1N,SAA0BwN,EAAExN,OAAO2N,UAAY,WAAa,OAAOjK,IAAM,GAAI8J,EAC1J,SAASE,EAAK7B,GAAK,OAAO,SAAU+B,GAAK,OACzC,SAAcC,GACV,GAAIZ,EAAG,MAAM,IAAI7B,UAAU,mCAC3B,KAAOoC,IAAMA,EAAI,EAAGK,EAAG,KAAOV,EAAI,IAAKA,OACnC,GAAIF,EAAI,EAAGC,IAAMxB,EAAY,EAARmC,EAAG,GAASX,EAAU,OAAIW,EAAG,GAAKX,EAAS,SAAOxB,EAAIwB,EAAU,SAAMxB,EAAEtI,KAAK8J,GAAI,GAAKA,EAAER,SAAWhB,EAAIA,EAAEtI,KAAK8J,EAAGW,EAAG,KAAKhB,KAAM,OAAOnB,EAE3J,OADIwB,EAAI,EAAGxB,IAAGmC,EAAK,CAAS,EAARA,EAAG,GAAQnC,EAAE9I,QACzBiL,EAAG,IACP,KAAK,EAAG,KAAK,EAAGnC,EAAImC,EAAI,MACxB,KAAK,EAAc,OAAXV,EAAEC,QAAgB,CAAExK,MAAOiL,EAAG,GAAIhB,MAAM,GAChD,KAAK,EAAGM,EAAEC,QAASF,EAAIW,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKV,EAAEI,IAAIO,MAAOX,EAAEG,KAAKQ,MAAO,SACxC,QACI,KAAMpC,EAAIyB,EAAEG,MAAM5B,EAAIA,EAAErH,OAAS,GAAKqH,EAAEA,EAAErH,OAAS,KAAkB,IAAVwJ,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEV,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVU,EAAG,MAAcnC,GAAMmC,EAAG,GAAKnC,EAAE,IAAMmC,EAAG,GAAKnC,EAAE,IAAM,CAAEyB,EAAEC,MAAQS,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYV,EAAEC,MAAQ1B,EAAE,GAAI,CAAEyB,EAAEC,MAAQ1B,EAAE,GAAIA,EAAImC,EAAI,KAAO,CACpE,GAAInC,GAAKyB,EAAEC,MAAQ1B,EAAE,GAAI,CAAEyB,EAAEC,MAAQ1B,EAAE,GAAIyB,EAAEI,IAAIQ,KAAKF,GAAK,KAAO,CAC9DnC,EAAE,IAAIyB,EAAEI,IAAIO,MAChBX,EAAEG,KAAKQ,MAAO,SAEtBD,EAAKb,EAAK5J,KAAK6I,EAASkB,EAC5B,CAAE,MAAOpK,GAAK8K,EAAK,CAAC,EAAG9K,GAAImK,EAAI,CAAG,CAAC,QAAWD,EAAIvB,EAAI,CAAG,CACzD,GAAY,EAARmC,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEjL,MAAOiL,EAAG,GAAKA,EAAG,QAAK,EAAQhB,MAAM,EAC9E,CAtBgDJ,CAAK,CAACZ,EAAG+B,GAAK,CAAG,CAuBrE,CAkLkD,mBAApBI,iBAAiCA,gBC9R/D,IAAMC,aAA4C,SAAC1G,OACjD5G,EAAK4G,EAAA5G,MACLwD,EAAQoD,EAAApD,SACRsD,EAAAF,EAAAG,WAAAA,OAAU,IAAAD,EAAG,MAAKA,EAClByG,EAAA3G,EAAA4G,oBAAAA,OAAmB,IAAAD,GAAOA,EAC1B3G,EAAA6G,WACmB7G,EAAA8G,oBAGnB,IAAMC,EAAiB,WACrB,IACM9G,EADa,CAAC,MAAO,YAAa,YAAa,UACnBI,SAASF,GACvCA,EACA,MAEJ,OAAO/G,EAAMkH,KAAKL,IAAmB7G,EAAMkH,KAAKC,GAClD,EAOMH,EAAc2G,IACdC,EANa,iBACX5G,EAAc2G,IACpB,OAA2B,QAApB/G,EAAAI,aAAW,EAAXA,EAAa4G,eAAO,IAAAhH,EAAAA,EAAI,EACjC,CAGgBiH,GAGhB,IAAK7G,EAAYI,UACf,OAAO,KAGT,IAmDM0G,EAAU,SAACtK,GACf,OAAKA,KACDqC,MAAMC,QAAQtC,IAAsC,IAApBA,EAASE,MAE/C,EAGMqK,EAAgBtI,MAAMuI,SAASC,QAAQzK,GAGvC0K,EAAY,CAChBjF,QAAS,OACTE,cAAe,MACflB,MAAO,OACPC,OAAQ,OACRiG,OAAQ,EACRC,QAAS,EACTvF,UAAW,cAGPwF,EAAY,CAChBpF,QAAS,OACTE,cAAe,SACfa,WAAY,SACZT,eAAgB,SAChB6E,QAAS,MACTvF,UAAW,aACXyF,KAAM,GAqNR,OACEjH,kBAAAA,IAAA,MAAA,CACEC,MAAO,CACLE,gBAAiBxH,EAAMyH,QACvBI,eAAgB7H,EAAM8H,QAAU,QAChCI,OAxSe,WACnB,IAAKsF,EACH,OAAOxG,EAAYkB,QAAU,OAG/B,IAAMqG,EAAoB9I,MAAMuI,SAASC,QAAQzK,GAAUgL,KAAK,SAAAC,SAC9D,OAAAhJ,MAAMiJ,eAAeD,IACS,oBAAX,QAAnB7H,EAAC6H,EAAMhP,YAAY,IAAAmH,OAAA,EAAAA,EAAEjG,OAA6B,mBAAmB,GAGvE,OAAI4N,EACK,OAGFvH,EAAYkB,QAAU,MAC/B,CAyRcyG,GACRpH,UAAWiG,EAAsB,OAAUxG,EAAYkB,QAAU,OACjES,aAAc3B,EAAY4B,QAAU,MACpCX,MAAO,eAAS2F,EAAU,GAAM,IAAG,YACnCgB,SAAU,eAAShB,EAAU,GAAM,IAAG,YACtCiB,SAAU,eAASjB,EAAU,GAAM,IAAG,YACtCU,KAAM,OACNzF,UAAW,aACXsF,OAAQ,UACRrF,SAAU,SACVE,SAAU,WACVb,UAAWnB,EAAYoB,IACvBC,aAAcrB,EAAYsB,OAC1BC,WAAYvB,EAAYwB,KACxBC,YAAazB,EAAY0B,MAEzBO,QAAS,OACTE,cAAe,SACfa,WAA4B,YAAhBhK,EAAMiK,MAAsB,UAvR1B,SAACA,GACrB,GAAc,YAAVA,EAAqB,MAAO,UAWhC,MAAyB,iBAAVA,GATqD,CAClEN,MAAO,aACPC,IAAK,WACLC,OAAQ,SACRiF,QAAS,UACTC,SAAU,WACV,aAAc,cAG8B9E,IAAWA,GAAS,YACpE,CA0Q4D+E,CAAchP,EAAMiK,OACxEV,eAAkC,YAAlBvJ,EAAM+J,QAAwB,UAzS5B,SAACA,GACzB,GAAgB,YAAZA,EAAuB,MAAO,UAYlC,MAV0E,CACxEP,OAAQ,eACRC,QAAS,gBACTC,OAAQ,eACRC,MAAO,aACPC,IAAK,WACLC,OAAQ,SACR,aAAc,cAGEE,IAAYA,GAAW,YAC3C,CA2RkEkF,CAAkBjP,EAAM+J,UACnFvG,SA1OgB,WACnB,IAAKxD,EAAMkP,OACT,OACE7H,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CACV2B,QAAS,OACTE,cAAe,SACfa,WAAY,SACZT,eAAgB,SAChBrB,OAAQ,OACRiH,MAAO,OACPlH,MAAO,OACPY,UAAW,cACZrF,SACC6D,kBAAAA,IAAA,KAAA,CAAA7D,SAAA,gBAKN,OAAOxD,EAAMkP,QACX,IAAK,UACH,OACE7H,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CACVW,MAAO,OACCC,OAAQ,OACRX,UAAW,OACXsB,UAAW,aACXC,SAAU,SACVS,eAAe,SACfS,WAAWhK,EAAMiK,OAE1BzG,SAEE6D,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAEP2B,QAAQ,OACRM,eAAevJ,EAAM+J,QACrBC,WAAWhK,EAAMiK,MACnC/B,OAAQ,QACU1E,SACA4L,kBAAAA,KAAA,MAAA,CAAK9H,MAAO,CAACW,MAAM,QAAOzE,SAAA,CAAA,IAAIA,SAK1C,IAAK,UACT,OACE6D,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CACV2B,QAAS,OACTE,cAAe,SACflB,MAAO,OACPC,OAAQ,OACRiG,OAAQ,EACRC,QAAS,EACTvF,UAAW,cACZrF,SACE,CAAC,EAAG,GAAG6L,IAAI,SAACC,GAAQ,OACnBjI,kBAAAA,IAAA,MAAA,CAEEC,2BACK+G,GAAS,CACZ9G,UAAW,MACXU,MAAO,OACPqG,KAAM,IAAC9K,SAGPsK,EAAQC,EAAcuB,IAGtBjI,sBAAA,MAAA,CAAKC,MAAO,CAAEiI,UAAW,SAAUJ,MAAO,QAAQ3L,SAAA,sBAFlDuK,EAAcuB,IATX,eAAA1H,OAAe0H,GAFH,KAqBrB,IAAK,UACH,OACEF,kBAAAA,KAAA,MAAA,CAAK9H,2BAAY4G,GAAS,CAAE/E,cAAe,SAAUjB,OAAQ,SAAM1E,SAAA,CACjE6D,kBAAAA,WAAKC,MAAKuD,SAAAA,SAAA,CAAA,EAAOqD,GAAS,CAAEI,KAAM,aAC/B,CAAC,EAAG,GAAGe,IAAI,SAACC,GAAQ,OACnBjI,kBAAAA,IAAA,MAAA,CAEEC,MAAKuD,SAAAA,SAAA,CAAA,EACAwD,IACH9G,UAAW,OACX+G,KAAM,aAGNR,EAAQC,EAAcuB,IAGtBjI,kBAAAA,WAAKC,MAAO,CAAEiI,UAAW,SAAUJ,MAAO,uCAF1CpB,EAAcuB,IARX,0BAAmBA,GAFP,KAmBvBjI,kBAAAA,IAAA,MAAA,CAAKC,MAAKuD,SAAAA,SAAA,CAAA,EAAOqD,GAAS,CAAEI,KAAM,IAAC9K,SAChC,CAAC,EAAG,GAAG6L,IAAI,SAACC,GAAQ,OACnBjI,kBAAAA,IAAA,MAAA,CAEEC,MAAKuD,SAAAA,SAAA,CAAA,EACAwD,IACH9G,UAAW,OACX+G,KAAM,IAAC9K,SAGPsK,EAAQC,EAAcuB,IAGtBjI,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAAEiI,UAAW,SAAUJ,MAAO,QAAQ3L,SAAA,sBAFlDuK,EAAcuB,IARX,sBAAA1H,OAAsB0H,GAFV,QAsB7B,IAAK,UACH,OACEF,uBAAA,MAAA,CAAK9H,MAAO4G,EAAS1K,SAAA,CACnB6D,sBAAA,MAAA,CACEC,MAAKuD,SAAAA,SAAA,CAAA,EACAwD,GAAS,CACZ9G,UAAW,OACX+G,KAAM,IAAC9K,SAGPsK,EAAQC,EAAc,IAGtB1G,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAAEiI,UAAW,SAAUJ,MAAO,QAAQ3L,SAAA,sBAFlDuK,EAAc,KAOlB1G,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAAE2B,QAAS,OAAQE,cAAe,SAAUmF,KAAM,GAAG9K,SAC9D,CAAC,EAAG,GAAG6L,IAAI,SAACC,GAAQ,OACnBjI,sBAAA,MAAA,CAEEC,2BACK+G,GAAS,CACZ9G,UAAW,OACX+G,KAAM,IAAC9K,SAGPsK,EAAQC,EAAcuB,IAGtBjI,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAAEiI,UAAW,SAAUJ,MAAO,QAAQ3L,SAAA,sBAFlDuK,EAAcuB,IARX,sBAAeA,GAFH,QAsB7B,IAAK,UACH,OACEF,uBAAA,MAAA,CAAK9H,MAAO4G,EAAS1K,SAAA,CACnB6D,sBAAA,MAAA,CAAKC,MAAO,CAAE2B,QAAS,OAAQE,cAAe,SAAUmF,KAAM,YAC3D,CAAC,EAAG,GAAGe,IAAI,SAACC,GAAQ,OACnBjI,sBAAA,MAAA,CAEEC,MAAKuD,SAAAA,SAAA,CAAA,EACAwD,GAAS,CACZ9G,UAAW,OACX+G,KAAM,IAAC9K,SAGPsK,EAAQC,EAAcuB,IAGtBjI,kBAAAA,WAAKC,MAAO,CAAEiI,UAAW,SAAUJ,MAAO,QAAQ3L,SAAA,sBAFlDuK,EAAcuB,IARX,eAAA1H,OAAe0H,GAFH,KAmBvBjI,sBAAA,MAAA,CACEC,2BACK+G,GAAS,CACZ9G,UAAW,OACX+G,KAAM,aAGNR,EAAQC,EAAc,IAGtB1G,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAAEiI,UAAW,SAAUJ,MAAO,QAAQ3L,SAAA,sBAFlDuK,EAAc,QAUxB,QACE,OAAOvK,EAEb,CA6BKgM,IAGP,ECvYMC,cAAqD,SAAC7I,mBAAE5G,EAAK4G,EAAA5G,MACzD0P,EAAgB1P,EAAK0P,KAAfpI,EAAUtH,EAAKsH,MAEvBqI,EAA2B,QAAjB7I,EAAAQ,aAAK,EAALA,EAAOsI,kBAAU,IAAA9I,EAAAA,EAAI,IAI/B+I,EAAY,CAChBC,UAAUxI,aAAK,EAALA,EAAOwI,UAAW,GAAAlI,OAAGN,EAAMwI,eAAe,OACpDC,YAA4B,QAAhBxC,EAAAjG,eAAAA,EAAO0I,iBAAS,IAAAzC,OAAA,EAAAA,EAAE0C,QAAS,OAAS,SAChDD,WAA2B,QAAhBE,EAAA5I,eAAAA,EAAO0I,iBAAS,IAAAE,OAAA,EAAAA,EAAEC,UAAW,SAAW,SACnDC,gBAAgC,QAAhBC,EAAA/I,eAAAA,EAAO0I,iBAAS,IAAAK,OAAA,EAAAA,EAAEC,aAAc,YAAc,OAC9DC,oBAAoC,QAAhBC,EAAAlJ,eAAAA,EAAO0I,iBAAS,IAAAQ,OAAA,EAAAA,EAAEC,iBAAkB,eAAiB,OACzEtB,OAAO7H,eAAAA,EAAOoJ,YAAa,OAC3BnB,WAAWjI,eAAAA,EAAOiI,YAAa,OAC/BoB,YAAYrJ,eAAAA,EAAOqJ,aAAc,UACjCxC,OAAQ,EACRyC,SAAU,aACVC,aAAc,aACdjC,SAAU,OACVkC,WAAY,SACZ7I,MAAO,OACPY,UAAW,aACXkI,UAAW,cA+BPC,EA3BY,mCACVC,EAAWjR,EAEjB,OAAQiR,EAASC,UACf,IAAK,OAkBL,QACE,OAAO,KAjBT,IAAK,gBACL,IAAK,WACH,OAAoB,UAAbD,EAASE,YAAI,IAAAvK,OAAA,EAAAA,EAAEoK,MAAO,KAC/B,IAAK,UACH,IAAMI,EAAyB,QAAhBtK,EAAAmK,EAASI,eAAO,IAAAvK,OAAA,EAAAA,EAAEwK,QAC3BC,GAA8B,QAAvBrB,EAAgB,QAAhB3C,EAAA0D,EAASI,eAAO,IAAA9D,OAAA,EAAAA,EAAEiE,aAAK,IAAAtB,OAAA,EAAAA,EAAEqB,QAAwB,QAAhBlB,EAAAY,EAASI,eAAO,IAAAhB,OAAA,EAAAA,EAAEkB,QAAsC,UAAd,QAAhBf,EAAAS,EAASI,eAAO,IAAAb,OAAA,EAAAA,EAAEiB,oBAAY,IAAAC,OAAA,EAAAA,EAAEH,MAExG,OAAKA,EAEa,YAAXH,EACH,YAAAxJ,OAAY2J,GACZ,SAAA3J,OAAS2J,GAJK,KAKpB,IAAK,MACH,MAAO,QAAA3J,OAAoB,UAAZqJ,EAAShQ,WAAG,IAAA0Q,OAAA,EAAAA,EAAEJ,MAC/B,IAAK,OACH,MAAO,SAAA3J,OAAsB,QAAbgK,EAAAX,EAASY,YAAI,IAAAD,OAAA,EAAAA,EAAEE,IAAG,UAAAlK,OAAsB,QAAbmK,EAAAd,EAASY,YAAI,IAAAE,OAAA,EAAAA,EAAEC,SAIhE,CAEYC,GAENC,EAAczM,MAAM0M,cACxBxC,EACA,CAAErI,MAAOuI,GACTH,GAIF,OAAIsB,EAEA3J,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CACV2B,QAAS,QACThB,MAAO,OACP2G,SAAU,OACVgC,SAAU,aACVC,aAAc,aACdhI,UAAW,cACZrF,SACC6D,kBAAAA,SACE+K,KAAMpB,EACNqB,OAAyB,aAAjBrS,aAAK,EAALA,EAAOkR,UAAkC,UAAXlR,aAAK,EAALA,EAAOmR,YAAI,IAAAO,OAAA,EAAAA,EAAEW,OAAQ,QAC3D/K,MAAO,CACL8I,eAAgB,OAChBnH,QAAS,eACThB,MAAO,OACP2G,SAAU,OACV/F,UAAW,aACX+H,SAAU,aACVC,aAAc,aACdC,WAAY,SACZC,UAAW,aACX5B,OAAO7H,eAAAA,EAAOoJ,YAAa,WAC5BlN,SAEA0O,MAOP7K,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CACV2B,QAAS,QACThB,MAAO,OACP2G,SAAU,OACVgC,SAAU,aACVC,aAAc,aACdhI,UAAW,aACXuF,QAAS,QACV5K,SACE0O,GAGP,ECtFMI,cAA8C,SAAC1L,eAAE5G,EAAK4G,EAAA5G,MAClD0P,EAA6B1P,OAAvBgR,EAAuBhR,EAAKgR,IAAvBqB,EAAkBrS,EAAKqS,OAAf/K,EAAUtH,QAE/BuS,EAAiC,CACrCzC,UAAUxI,aAAK,EAALA,EAAOwI,UAAW,GAAAlI,OAAGN,EAAMwI,eAAe,OACpDC,YAA4B,QAAhBjJ,EAAAQ,eAAAA,EAAO0I,iBAAS,IAAAlJ,OAAA,EAAAA,EAAEmJ,QAAS,OAAS,SAChDD,WAA2B,QAAhBzC,EAAAjG,eAAAA,EAAO0I,iBAAS,IAAAzC,OAAA,EAAAA,EAAE4C,UAAW,SAAW,SACnDC,gBAAgC,QAAhBF,EAAA5I,eAAAA,EAAO0I,iBAAS,IAAAE,OAAA,EAAAA,EAAEI,aAAc,YAAc,OAC9DC,oBAAoC,QAAhBF,EAAA/I,eAAAA,EAAO0I,iBAAS,IAAAK,OAAA,EAAAA,EAAEI,iBAAkB,eAAiB,OACzEtB,OAAO7H,eAAAA,EAAOoJ,YAAa,YAC3BnB,WAAYjI,eAAAA,EAAOiI,YAAkD,OACrEoB,YAAYrJ,eAAAA,EAAOqJ,aAAc,UACjCxC,OAAQ,EACRyC,SAAU,aACVC,aAAc,aACdjC,SAAU,OACVkC,WAAY,SACZ7I,MAAO,OACPY,UAAW,aACXkI,UAAW,cAGb,OACE1J,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CACV2B,QAAS,QACThB,MAAO,OACP2G,SAAU,OACVgC,SAAU,aACVC,aAAc,aACdhI,UAAW,cACZrF,SACC6D,kBAAAA,SACE+K,KAAMpB,EACNqB,OAAQA,EACR/K,MAAOiL,EAAS/O,SAEfkM,KAIT,ECjEA,SAAS8C,YAAYC,EAAK3S,QACX,IAARA,IAAiBA,EAAM,CAAA,GAC5B,IAAI4S,EAAW5S,EAAI4S,SAEnB,GAAKD,GAA2B,oBAAbE,SAAnB,CAEA,IAAIC,EAAOD,SAASC,MAAQD,SAASE,qBAAqB,QAAQ,GAC9DvL,EAAQqL,SAASR,cAAc,SACnC7K,EAAM7H,KAAO,WAEI,QAAbiT,GACEE,EAAKE,WACPF,EAAKG,aAAazL,EAAOsL,EAAKE,YAKhCF,EAAKI,YAAY1L,GAGfA,EAAM2L,WACR3L,EAAM2L,WAAWC,QAAUT,EAE3BnL,EAAM0L,YAAYL,SAASQ,eAAeV,GAnBW,CAqBzD,mrDCzB2BrJ,GAAgBgK,mBACrBhK,GAAgBiK,kBACdjK,GAAgBkK,oBACXlK,GAAgBmK,yBACZnK,GAAgBoK,uBAC1C,IAAMC,UAAU,0CCsDjBC,eAAoD,SAAC9M,eACzD5G,EAAK4G,EAAA5G,MACLwQ,EAAA5J,EAAAG,WAAAA,OAAU,IAAAyJ,EAAG,MAAKA,EAClBkB,EAAA9K,EAAA+M,UAAAA,OAAS,IAAAjC,EAAG,QAAOA,EA6Db1K,EAdiB,WACrB,OAAQD,GACN,IAAK,YACH,OAAO/G,EAAMkH,KAAK0M,UACpB,IAAK,YACH,OAAO5T,EAAMkH,KAAK2M,UACpB,IAAK,SACH,OAAO7T,EAAMkH,KAAK4M,OAEpB,QACE,OAAO9T,EAAMkH,KAAKC,IAExB,CAEoBwG,GACdoG,EAAgC,SAAdJ,EAAuB,OAASA,EAClDxC,EA5Da,SAAC6C,6BAClB,IAAKA,IAAYA,EAAQ9C,SAAU,OAAO,KAE1C,OAAQ8C,EAAQ9C,UACd,IAAK,OACH,OAAO,KAET,IAAK,WACL,IAAK,gBACH,OAAmB,UAAZ8C,EAAQ7C,YAAI,IAAAvK,OAAA,EAAAA,EAAEoK,MAAO,KAE9B,IAAK,UACH,IAAMI,EAAwB,QAAftK,EAAAkN,EAAQ3C,eAAO,IAAAvK,OAAA,EAAAA,EAAEwK,QAC1BC,GACkB,QAAtBrB,EAAe,QAAf3C,EAAAyG,EAAQ3C,eAAO,IAAA9D,OAAA,EAAAA,EAAEiE,aAAK,IAAAtB,OAAA,EAAAA,EAAEqB,QACT,QAAflB,EAAA2D,EAAQ3C,eAAO,IAAAhB,OAAA,EAAAA,EAAEkB,QACY,QAA7BG,UAAAlB,EAAAwD,EAAQ3C,8BAASI,oBAAY,IAAAC,OAAA,EAAAA,EAAEH,MAEjC,OAAKA,EAEa,YAAXH,EACL,YAAAxJ,OAAY2J,GACZ,SAAA3J,OAAS2J,GAJO,KAOpB,IAAK,MACH,IAAM0C,EAAsB,QAAXtC,EAAAqC,EAAQ/S,WAAG,IAAA0Q,OAAA,EAAAA,EAAEJ,KAC9B,OAAK0C,EAEG,QAAArM,OAAQqM,GAFK,KAKvB,IAAK,OACH,IAAMC,GAAqB,QAAZtC,EAAAoC,EAAQnC,YAAI,IAAAD,OAAA,EAAAA,EAAEE,OAAmB,UAAZkC,EAAQnC,YAAI,IAAAE,OAAA,EAAAA,EAAER,MAC5C4C,EAAqB,QAAZC,EAAAJ,EAAQnC,YAAI,IAAAuC,OAAA,EAAAA,EAAEpC,QAC7B,OAAKkC,GAAWC,EACT,SAAAvM,OAASsM,EAAM,UAAAtM,OAASuM,GADA,KAIjC,QACE,OAAOH,EAAQK,MAAQ,KAE7B,CAkBaC,CAAWtU,GAClBuU,EAAW,GAAA3M,OAAG6L,WAAS7L,QAAe,QAAZd,EAAA9G,EAAMwU,cAAM,IAAA1N,OAAA,EAAAA,EAAEkK,OAAwB,QAAjBd,EAAY,QAAZ3C,EAAAvN,EAAMwU,cAAM,IAAAjH,OAAA,EAAAA,EAAEkH,WAAG,IAAAvE,OAAA,EAAAA,EAAEc,MAClE0D,EAAU1U,EAAMwU,OAAOG,KAAO,GAE9BC,EACJvN,kBAAAA,IAAA,MAAA,CACEwN,IAAKN,EACLI,IAAKD,EACLI,UAAU,eACVxN,MAAO,CAAEyN,OAAQ5D,EAAO,UAAY,aAIxC,OACE9J,kBAAAA,IAAA,MAAA,CACEyN,UAAU,YACVxN,MAAO,CACLqB,aAAc,GAAAf,OAAGZ,EAAY2B,aAAY,MACzCT,OAAQ6L,EACRjL,SAAU,UACXtF,SAEA2N,EACC9J,kBAAAA,IAAA,IAAA,CACE+K,KAAMjB,EACEkB,OAAyB,aAAjBrS,aAAK,EAALA,EAAOkR,UAAkC,QAAXb,EAAArQ,aAAK,EAALA,EAAOmR,YAAI,IAAAd,OAAA,EAAAA,EAAEgC,OAAQ,QACnE/K,MAAO,CAAE2B,QAAS,QAAShB,MAAO,OAAQC,OAAQ,QAAQ1E,SAEzDoR,OAOX,skGC5JA,IAAMI,mBAAqB,SAAChV,yBACpB+R,EAAsBtM,MAAMwP,SAAS,UAApC5C,EAAMN,EAAA,GAAEmD,OACfhU,QAAQiU,KAAKnV,GACbyF,MAAM2P,UAAU,WACQ,oBAAXC,SACLA,OAAOC,WAAW,8BAA8BC,SAClDL,EAAU,SAGV,iEAAiEM,KAC/DC,UAAUC,YAGZR,EAAU,SAGhB,EAAG,IAEH,IAAMS,EAAO3V,EAAMA,OAASA,EACtBqU,EAAOsB,aAAI,EAAJA,EAAM7D,IAGb8D,EAAeC,gBAAO/O,EAAW,QAAXF,EAAA+O,eAAAA,EAAMG,aAAK,IAAAlP,OAAA,EAAAA,EAAEmP,yBAAIC,iBAAkB,GACzDC,EAAWJ,gBAAO3F,EAAW,QAAX3C,EAAAoI,eAAAA,EAAMG,aAAK,IAAAvI,OAAA,EAAAA,EAAE2I,0BAAKF,iBAAkB,GAOtDG,GAJCP,IAAiBK,GAAYA,GAAYL,EAAqB,KAC5DQ,KAAKC,MAAM,IAAOT,EAAeK,EAAY,KAchDK,GAPCX,aAAI,EAAJA,EAAMY,SACJZ,EAAKY,QACTlH,IAAI,SAACpC,GAAM,IAAArG,EAAAE,EAAAyG,EAAA2C,EAAK,OAAe,QAAfpJ,EAAS,QAATF,EAAAqG,EAAEuJ,eAAO,IAAA5P,OAAA,EAAAA,EAAEjG,YAAI,IAAAmG,OAAA,EAAAA,EAAEpG,eAA8B,QAAfwP,EAAS,QAAT3C,EAAAN,EAAEuJ,eAAO,IAAAjJ,OAAA,EAAAA,EAAE5M,YAAI,IAAAuP,OAAA,EAAAA,EAAEuE,MAAO,KACxEzQ,OAAOyS,SACPvS,KAAK,OAJmB,GAS7B,OACEmD,kBAAAA,IAAA,MAAA,CAAKyN,UAAU,OAAMtR,SACnB6D,kBAAAA,IAAA,IAAA,CAAG+K,KAAM,IAAAxK,OAAIyM,GAAQhC,OAAQA,EAAM7O,SACjC4L,kBAAAA,KAAA,MAAA,CAAK0F,UAAU,YAAWtR,SAAA,CACxB6D,kBAAAA,IAAA,MAAA,CAAKyN,UAAU,WAAUtR,SACvB6D,kBAAAA,IAAA,MAAA,CACAwN,IAAK,GAAAjN,OAAG6L,WAAS7L,QAAmB,QAAhB4I,EAAW,QAAXH,EAAAsF,aAAI,EAAJA,EAAMe,aAAK,IAAArG,OAAA,EAAAA,EAAEoE,WAAG,IAAAjE,OAAA,EAAAA,EAAEQ,OAAkB,QAAXU,EAAAiE,aAAI,EAAJA,EAAMe,aAAK,IAAAhF,OAAA,EAAAA,EAAEV,MAC1D2D,KAAe,QAAVhD,EAAAgE,aAAI,EAAJA,EAAMhV,YAAI,IAAAgR,OAAA,EAAAA,EAAE8C,OAAOkB,aAAI,EAAJA,EAAMhV,MAC9BmU,UAAU,oBAGZ1F,kBAAAA,KAAA,MAAA,CAAK0F,UAAU,cAAatR,SAAA,CAC1B4L,kBAAAA,KAAA,MAAA,CAAK0F,UAAU,WAAUtR,SAAA,CACtB6D,kBAAAA,IAAA,KAAA,CAAA7D,UAAe,QAAVoO,EAAA+D,aAAI,EAAJA,EAAMhV,YAAI,IAAAiR,OAAA,EAAAA,EAAE6C,OAAOkB,aAAI,EAAJA,EAAMhV,QACjC0G,kBAAAA,IAAA,KAAA,CAAA7D,SAAK8S,OAELlH,kBAAAA,KAAA,MAAA,CAAK0F,UAAU,aAAYtR,SAAA,CACP,IAAjBoS,GACCxG,kBAAAA,KAAA,MAAA,CAAK0F,UAAU,aAAYtR,SAAA,CACzB4L,kBAAAA,KAAA,KAAA,CAAA5L,SAAA,CAAA,IAAMoS,EAAae,eAAe,YAClCvH,kBAAAA,KAAA,MAAA,CAAK0F,UAAU,kBAAiBtR,SAAA,CAC7ByS,EAAWL,GACVxG,kBAAAA,KAAA,IAAA,CAAA5L,SAAA,CAAA,IAAMyS,EAASU,eAAe,YAElB,OAAbR,GAAqBA,EAAW,GAC/B/G,kBAAAA,KAAA,OAAA,CAAA5L,SAAA,CAAA,IAAQ2S,EAAQ,kBAKxB/G,kBAAAA,KAAA,MAAA,CAAK0F,UAAU,gBAAetR,SAAA,CAC1B6D,kBAAAA,IAAA,MAAA,CACEuP,MAAM,6BACNC,QAAQ,YACRC,KAAK,UACL7O,MAAM,KACNC,OAAO,KAAI1E,SAEX6D,kBAAAA,IAAA,OAAA,CAAM8C,EAAE,6GAEV9C,kBAAAA,IAAA,IAAA,CAAA7D,SAAImS,aAAI,EAAJA,EAAMoB,aACV3H,kBAAAA,KAAA,OAAA,CAAA5L,SAAA,CAAA,IAAQmS,aAAI,EAAJA,EAAMqB,iBAAgB,8BAWhD,qiGC/FA,IAAMC,mBAAqB,SAACjX,yBAC1BkB,QAAQiU,KAAKnV,GACP,IAAA+R,EAAsBtM,MAAMwP,SAAS,UAApC5C,EAAMN,EAAA,GAAEmD,OAEfzP,MAAM2P,UAAU,WACQ,oBAAXC,SACLA,OAAOC,WAAW,8BAA8BC,SAClDL,EAAU,SAGV,iEAAiEM,KAC/DC,UAAUC,YAGZR,EAAU,SAGhB,EAAG,IAEH,IAAMS,EAAO3V,EAAMA,OAASA,EACtBqU,EAAOsB,aAAI,EAAJA,EAAM7D,IAGb8D,EAAeC,gBAAO/O,EAAW,QAAXF,EAAA+O,eAAAA,EAAMG,aAAK,IAAAlP,OAAA,EAAAA,EAAEmP,yBAAIC,iBAAkB,GACzDC,EAAWJ,gBAAO3F,EAAW,QAAX3C,EAAAoI,eAAAA,EAAMG,aAAK,IAAAvI,OAAA,EAAAA,EAAE2I,0BAAKF,iBAAkB,GAOtDG,GAJCP,IAAiBK,GAAYA,GAAYL,EAAqB,KAC5DQ,KAAKC,MAAM,IAAOT,EAAeK,EAAY,KAgBtD,OACE5O,kBAAAA,IAAA,MAAA,CAAKyN,UAAU,OAAMtR,SACnB6D,sBAAA,IAAA,CAAG+K,KAAM,IAAAxK,OAAIyM,GAAQhC,OAAQA,EAAQ6E,IAAI,sBAAqB1T,SAC5D4L,kBAAAA,KAAA,MAAA,CAAK0F,UAAU,eAActR,SAAA,CAG3B6D,kBAAAA,IAAA,MAAA,CAAKyN,UAAU,cAAatR,SAC1B6D,kBAAAA,IAAA,MAAA,CACEwN,IAAK,GAAAjN,OAAG6L,WAAS7L,QAAmB,QAAhB4I,EAAW,QAAXH,EAAAsF,aAAI,EAAJA,EAAMe,aAAK,IAAArG,OAAA,EAAAA,EAAEoE,WAAG,IAAAjE,OAAA,EAAAA,EAAEQ,OAAkB,QAAXU,EAAAiE,aAAI,EAAJA,EAAMe,aAAK,IAAAhF,OAAA,EAAAA,EAAEV,MAC1D2D,KAAe,QAAVhD,EAAAgE,aAAI,EAAJA,EAAMhV,YAAI,IAAAgR,OAAA,EAAAA,EAAE8C,OAAOkB,aAAI,EAAJA,EAAMhV,MAC9BmU,UAAU,oBAId1F,kBAAAA,KAAA,MAAA,CAAK0F,UAAU,WAAUtR,SAAA,CACvB6D,kBAAAA,UAAIyN,UAAU,eAActR,UAAY,QAAVoO,EAAA+D,aAAI,EAAJA,EAAMhV,YAAI,IAAAiR,OAAA,EAAAA,EAAE6C,OAAOkB,aAAI,EAAJA,EAAMhV,QACvD0G,kBAAAA,IAAA,KAAA,CAAIyN,UAAU,iBAAgBtR,SAAEmS,eAAAA,EAAMpE,UAExCnC,kBAAAA,KAAA,MAAA,CAAK0F,UAAU,cAAatR,SAAA,CAC1B6D,kBAAAA,IAAA,MAAA,CAAKyN,UAAU,kBAAiBtR,SACZ,IAAjBoS,GACCxG,kBAAAA,KAAA+H,kBAAAA,SAAA,CAAA3T,SAAA,CACE4L,kBAAAA,KAAA,MAAA,CAAK0F,UAAU,YAAWtR,SAAA,CACxB4L,kBAAAA,KAAA,KAAA,CAAI0F,UAAU,gBAAetR,SAAA,CAAA,IAAGoS,EAAae,eAAe,YAC9C,OAAbR,GAAqBA,EAAW,GAC/B/G,kBAAAA,KAAA,OAAA,CAAM0F,UAAU,YAAWtR,SAAA,CAAE2S,EAAQ,cAGxCF,EAAWL,GACVxG,kBAAAA,KAAA,IAAA,CAAG0F,UAAU,kCAAsBmB,EAAWL,GAAce,eAAe,iBAMnFtP,kBAAAA,WAAKyN,UAAU,mBAAkBtR,SAC7B4L,uBAAA,MAAA,CAAK0F,UAAU,mBACbzN,kBAAAA,IAAA,MAAA,CACEuP,MAAM,6BACNC,QAAQ,YACR5O,MAAM,KACNC,OAAO,KAAI1E,SAEX6D,sBAAA,OAAA,CAAM8C,EAAE,6GAEV9C,kBAAAA,IAAA,OAAA,CAAMyN,UAAU,eAActR,SAAEmS,aAAI,EAAJA,EAAMoB,2BAQxD,ECjBMK,sBAAkE,SAACxQ,aACvE5G,UACAqQ,EAAAzJ,EAAAG,WAAAA,OAAU,IAAAsJ,EAAG,MAAKA,EAEZgH,EAAwB,SAACC,GAC7B,OAAOvQ,GACL,IAAK,YAAa,OAAOuQ,EAAK1D,UAC9B,IAAK,YAAa,OAAO0D,EAAKzD,UAC9B,IAAK,SAAU,OAAOyD,EAAKxD,OAE3B,QAAS,OAAOwD,EAAKnQ,IAEzB,EAqBMoQ,EAAaF,EAAsBrX,EAAMuX,YACzCC,EAAkBH,EAAsBrX,EAAMwX,iBAC9CC,EAAqBJ,EAAsBrX,EAAMyX,oBACjDC,EAtBmB,WACvB,OAAO3Q,GACL,IAAK,YAAa,OAAO/G,EAAMkP,OAAO0E,UACtC,IAAK,YAAa,OAAO5T,EAAMkP,OAAO2E,UACtC,IAAK,SAAU,OAAO7T,EAAMkP,OAAO4E,OAEnC,QAAS,OAAO9T,EAAMkP,OAAO/H,IAEjC,CAcsBwQ,GAChBC,EAboB,WACxB,OAAO7Q,GACL,IAAK,YAAa,OAAO/G,EAAMsH,MAAMsM,UACrC,IAAK,YAAa,OAAO5T,EAAMsH,MAAMuM,UACrC,IAAK,SAAU,OAAO7T,EAAMsH,MAAMwM,OAElC,QAAS,OAAO9T,EAAMsH,MAAMH,IAEhC,CAKmB0Q,GAObC,EALc,iBAClB,OAAsB,QAAnBlR,EAAA5G,eAAAA,EAAO+X,oBAAY,IAAAnR,OAAA,EAAAA,EAAEoR,WAAkBhY,EAAM+X,aAAaC,UACtD,EACT,CAEiBC,GAiBjB,OACE7I,kBAAAA,KAAA,MAAA,CACE9H,MAAO,CACL4Q,OAAQ,oBACRjQ,MAAO,OACP2G,SAAU,OACVjG,aAAc,MACdpB,UAAW,QACXyB,SAAU,WACVF,SAAU,SACVT,aAAa,OACbF,UAAU,OAGZ2M,UAAU,wBAAuBtR,SAAA,CAEhC+T,GACCnI,uBAAA,MAAA,CACE0F,UAAU,qBACVxN,MAAO,CACLE,gBAAiBxH,EAAMmY,iBACvB/J,QAAS,YACTzF,aAAc,MACdN,aAAc,MACdY,QAAS,OACTe,WAAY,SACZT,eAAgB,gBAChBF,SAAU,OACV+O,IAAK,QACN5U,SAAA,CAED4L,uBAAA,MAAA,CAAK9H,MAAO,CAAE2B,QAAS,OAAQe,WAAY,SAAUoO,IAAK,QAAQ5U,SAAA,CAC/DxD,EAAMqY,aACLhR,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAAEW,MAAO,OAAQC,OAAQ,QAAQ1E,SAO1C6D,kBAAAA,IAAA,MAAA,CACCwN,IAAK,GAAAjN,OAAG6L,WAAS7L,OAAG5H,EAAMqY,aAC1B/Q,MAAO,CAAEW,MAAO,OAAQC,OAAQ,OAAQoQ,UAAW,aAIzDjR,kBAAAA,IAAA,IAAA,CAAGC,MAAO,CACR6H,MAAOnP,EAAMuY,gBAAgB7H,UAC7BZ,SAAU,GAAAlI,OAAG5H,EAAMuY,gBAAgBzI,SAAQ,MAC3CC,WAAY/P,EAAMuY,gBAAgBtI,OAAS,OAAS,SACpDD,UAAWhQ,EAAMuY,gBAAgBpI,SAAW,SAAW,SACvDC,eAAgBpQ,EAAMuY,gBAAgBC,YAAc,YAAc,OAClErK,OAAQ,GACT3K,UACkB,QAAhBsD,EAAA9G,EAAMyY,kBAAU,IAAA3R,OAAA,EAAAA,EAAE2N,MAAO,mBAI9BrF,uBAAA,MAAA,CAAK9H,MAAO,CAAE2B,QAAS,OAAQe,WAAY,SAAUoO,IAAK,QAAQ5U,SAAA,CAEnD,UAAZxD,EAAMP,MACL4H,sBAAA,IAAA,CACZ+K,KAAM,yBAAAxK,OAAyB5H,EAAM+X,aAAaW,OAAOnH,KAAI,wBAC7Dc,OAAO,SACP6E,IAAI,sBACJ5P,MAAO,CACL6H,MAAO,QACPiB,eAAgB,OAChBL,WAAY,MACZD,SAAU,OACV1B,QAAS,WACT8J,OAAQ,OACRvP,aAAc,MACdnB,gBAAiB,cACjBuN,OAAQ,WACTvR,SAAA,aAS4B,SAAlBkU,GAA6BI,EAASpU,OAAS,GAC9C0L,kBAAAA,YAAK9H,MAAO,CAAE2B,QAAS,OAAQmP,IAAK,OAAO5U,SAAA,CACzC6D,kBAAAA,IAAA,SAAA,CACEsR,QArGG,WACjB,IAAMC,EAAWjG,SAASkG,cAAc,yBACpCD,GACFA,EAASE,SAAS,CAAEtQ,MAAM,IAAMuQ,SAAU,UAE9C,EAiGgBzR,MAAO,CACLW,MAAO,OACPC,OAAQ,OACRS,aAAc,MACduP,OAAQ,iBACR1Q,gBAAiB,OACjBuN,OAAQ,UACR9L,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBuG,SAAU,OACVC,WAAY,QAEdiJ,YAAa,SAAC5W,GACZA,EAAE6W,cAAc3R,MAAME,gBAAkB,SAC1C,EACA0R,WAAY,SAAC9W,GACXA,EAAE6W,cAAc3R,MAAME,gBAAkB,MAC1C,EAAChE,SAAA,MAIH6D,kBAAAA,IAAA,SAAA,CACEsR,QAtHI,WAClB,IAAMC,EAAWjG,SAASkG,cAAc,yBACpCD,GACFA,EAASE,SAAS,CAAEtQ,KAAM,IAAKuQ,SAAU,UAE7C,EAkHgBzR,MAAO,CACLW,MAAO,OACPC,OAAQ,OACRS,aAAc,MACduP,OAAQ,iBACR1Q,gBAAiB,OACjBuN,OAAQ,UACR9L,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBuG,SAAU,OACVC,WAAY,QAEdiJ,YAAa,SAAC5W,GACZA,EAAE6W,cAAc3R,MAAME,gBAAkB,SAC1C,EACA0R,WAAY,SAAC9W,GACXA,EAAE6W,cAAc3R,MAAME,gBAAkB,MAC1C,EAAChE,SAAA,eAUb6D,kBAAAA,IAAA,MAAA,CACEyN,UAAU,uBACVxN,MAAO,CACL2B,QAA2B,SAAlByO,EAA2B,OAAS,QAC7CyB,UAA6B,SAAlBzB,GAA4BD,EAAqB,OAAS,UACrEW,IAAuB,SAAlBV,EAA2B,OAAS,IACzCtJ,QAAS,OACTgL,eAAgB,SAChB5R,gBAAiBxH,EAAMqZ,WAAa,OACpCC,eAAgB,OAChB3Q,aAAc,MACdK,SAAU,WACVuQ,eAAgB,uBACjB/V,SAEAsU,EAASpU,OAAS,EACC,SAAlBgU,EACEI,EAAS0B,MAAM,EAAkB,WAAfxZ,EAAMP,KAAoB,GAAKqY,EAASpU,QAAQ2L,IAAI,SAACgC,aACjF,MAAqB,WAAjBuG,EAEAvQ,sBAAA,MAAA,CAAA7D,SACE6D,kBAAAA,IAAC2N,oBAAmBhV,MAAOqR,KADnBA,EAAQS,KAIM,WAAjB8F,EAEPvQ,sBAAA,MAAA,CAAA7D,SACE6D,kBAAAA,IAAC4P,oBAAmBjX,MAAOqR,KADnBA,EAAQS,KAOlBzK,sBAAA,IAAA,CAAG+K,KAAM,WAAIf,EAAQS,KAAOO,OAAQ,SAAW6E,IAAI,sBAAsB5P,MAAO,CAAC8I,eAAe,QAAO5M,SAClG4L,kBAAAA,KAAA,MAAA,CAET0F,UAAU,oBACVxN,MAAO,CACLY,OAAQ,OACR2G,SAAyB,cAAf9H,GAA6C,cAAfA,EAA6B,QAAU,QAE/E4B,aAAc,MACdG,SAAU,SACVoP,OAAQ,iBACR1Q,gBAAiB,OACjByB,QAAS,OACTE,cAAe,SACfa,WAAY,SACZT,eAAgB,SAChB6E,QAAS,OACTqL,UAAW,4BACXC,WAAY,sBACZ3E,OAAQ,WAEViE,YAAa,SAAC5W,GACZA,EAAE6W,cAAc3R,MAAMqS,UAAY,mBAClCvX,EAAE6W,cAAc3R,MAAMmS,UAAY,4BACpC,EACAP,WAAY,SAAC9W,GACXA,EAAE6W,cAAc3R,MAAMqS,UAAY,gBAClCvX,EAAE6W,cAAc3R,MAAMmS,UAAY,2BACpC,EAACjW,SAAA,CAED6D,kBAAAA,IAAA,MAAA,CACEC,MAAO,CACLY,OAAQ,QACRD,MAAO,OACPgB,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBlB,aAAc,OACf7E,SAED6D,sBAAA,MAAA,CACEwN,IAAK,GAAAjN,OAAG6L,WAAS7L,OAAgB,QAAbhB,EAAAyK,EAAQqF,aAAK,IAAA9P,OAAA,EAAAA,EAAEoK,KACnC2D,IAA6B,iBAAjBtD,EAAQ1Q,KAAoB0Q,EAAQ1Q,KAAK8T,IAAMpD,EAAQ1Q,KACnE2G,MAAO,CAAEW,MAAO,OAAQC,OAAQ,OAAQoQ,UAAW,eAItDd,GACCpI,kBAAAA,KAAA,MAAA,CACE9H,MAAO,CACLa,UAAW,MACXoH,UAAW,SACXO,SAAU,OACVC,WAAY,MACZZ,MAAO,OACPyK,WAAY,MACZ1R,OAAQ,OACRY,SAAU,SACVG,QAAS,cACT4Q,gBAAiB,EACjBC,gBAAiB,YAClBtW,SAAA,CAEwB,iBAAjB6N,EAAQ1Q,KAAoB0Q,EAAQ1Q,KAAK8T,IAAMpD,EAAQ1Q,KAC/D0G,kBAAAA,IAAA,KAAA,CAAIC,MAAO,CAAEwI,SAAU,OAAQC,WAAY,MAAOZ,MAAO,QAAQ3L,SAC5C,QAAlB+J,EAAc,QAAdzG,EAAAuK,aAAO,EAAPA,EAASyE,aAAK,IAAAhP,OAAA,EAAAA,EAAEiP,UAAE,IAAAxI,OAAA,EAAAA,EAAEyI,sBA/DtB3E,EAAQS,MA2Ef,GACgC,UAAlB4F,EACFrQ,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CACV2B,QAAS,OACT8Q,oBAAqB,iBACrB3B,IAAK,OACLhK,QAAS,OACV5K,SAECsU,EAASzI,IAAI,SAACgC,WAAY,OACxBjC,kBAAAA,KAAA,MAAA,CAEE0F,UAAU,oBACVxN,MAAO,CACLY,OAAQ,OACRS,aAAc,MACdG,SAAU,SACVoP,OAAQ,iBACR1Q,gBAAiB,OACjByB,QAAS,OACTE,cAAe,SACfa,WAAY,SACZT,eAAgB,SAChB6E,QAAS,OACTqL,UAAW,4BACXC,WAAY,sBACZ3E,OAAQ,WAEViE,YAAa,SAAC5W,GACZA,EAAE6W,cAAc3R,MAAMqS,UAAY,mBAClCvX,EAAE6W,cAAc3R,MAAMmS,UAAY,4BACpC,EACAP,WAAY,SAAC9W,GACXA,EAAE6W,cAAc3R,MAAMqS,UAAY,gBAClCvX,EAAE6W,cAAc3R,MAAMmS,UAAY,2BACpC,EAACjW,SAAA,CAED6D,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CACVY,OAAQ,QACRD,MAAO,OACPgB,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBlB,aAAc,OACf7E,SACC6D,6BACdwN,IAAK,UAAGpB,WAAS7L,OAAqB,UAAL,QAAbhB,EAAAyK,EAAQqF,aAAK,IAAA9P,OAAA,EAAAA,EAAE6N,WAAG,IAAA3N,OAAA,EAAAA,EAAEkK,KAC5C2D,IAAI,GACJrN,MAAO,CAAEW,MAAO,OAAQC,OAAQ,OAAQoQ,UAAW,eAGlCd,GAAmBnQ,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAC9BiI,UAAW,SACXO,SAAU,OACVC,WAAY,MACZZ,MAAO,OACPyK,WAAY,MACZ1R,OAAQ,OACRY,SAAU,SACVG,QAAS,cACT4Q,gBAAiB,EACjBC,gBAAiB,YAClBtW,SAC0B,iBAAjB6N,EAAQ1Q,KAAqB0Q,EAAQ1Q,KAAyB8T,IAAMpD,EAAQ1Q,SApDjF0Q,EAAQS,IAuDhB,KAEiB,WAAlB4F,EACFrQ,sBAAA,MAAA,CAAKC,MAAO,CACV2B,QAAS,OACT8Q,oBAAqB,iBACrB3B,IAAK,OACLhK,QAAS,OACV5K,SAECsU,EAASzI,IAAI,SAACgC,WAAY,OACxBjC,kBAAAA,KAAA,MAAA,CAEE0F,UAAU,oBACVxN,MAAO,CACLY,OAAQ,OACRS,aAAc,MACdG,SAAU,SACVoP,OAAQ,iBACR1Q,gBAAiB,OACjByB,QAAS,OACTE,cAAe,SACfa,WAAY,SACZT,eAAgB,SAChB6E,QAAS,OACTqL,UAAW,4BACXC,WAAY,sBACZ3E,OAAQ,WAEViE,YAAa,SAAC5W,GACZA,EAAE6W,cAAc3R,MAAMqS,UAAY,mBAClCvX,EAAE6W,cAAc3R,MAAMmS,UAAY,4BACpC,EACAP,WAAY,SAAC9W,GACXA,EAAE6W,cAAc3R,MAAMqS,UAAY,gBAClCvX,EAAE6W,cAAc3R,MAAMmS,UAAY,2BACpC,EAACjW,SAAA,CAED6D,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CACVY,OAAQ,QACRD,MAAO,OACPgB,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBlB,aAAc,OACf7E,SACF6D,6BACXwN,IAAK,UAAGpB,WAAS7L,OAAqB,UAAL,QAAbhB,EAAAyK,EAAQqF,aAAK,IAAA9P,OAAA,EAAAA,EAAE6N,WAAG,IAAA3N,OAAA,EAAAA,EAAEkK,KAC5C2D,IAAI,GACJrN,MAAO,CAAEW,MAAO,OAAQC,OAAQ,OAAQoQ,UAAW,eAGlCd,GAAmBnQ,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAC9BiI,UAAW,SACXO,SAAU,OACVC,WAAY,MACZZ,MAAO,OACPyK,WAAY,MACZ1R,OAAQ,OACRY,SAAU,SACVG,QAAS,cACT4Q,gBAAiB,EACjBC,gBAAiB,YAClBtW,SAC0B,iBAAjB6N,EAAQ1Q,KAAqB0Q,EAAQ1Q,KAAyB8T,IAAMpD,EAAQ1Q,SApDjF0Q,EAAQS,SAyDC,iBAAlB4F,EACFtI,kBAAAA,KAAA,MAAA,CAAK9H,MAAO,CAAE2B,QAAS,OAAQE,cAAe,SAAUiP,IAAK,OAAQhK,QAAS,iBAC3E0J,EAASpU,OAAS,GACjB0L,kBAAAA,KAAA,MAAA,CACE0F,UAAU,oBACVxN,MAAO,CACLY,OAAQ,OACRS,aAAc,MACdG,SAAU,SACVoP,OAAQ,iBACR1Q,gBAAiB,OACjByB,QAAS,OACTE,cAAe,SACfa,WAAY,SACZT,eAAgB,SAChB6E,QAAS,OACTqL,UAAW,4BACXC,WAAY,sBACZ3E,OAAQ,WAEViE,YAAa,SAAC5W,GACZA,EAAE6W,cAAc3R,MAAMqS,UAAY,mBAClCvX,EAAE6W,cAAc3R,MAAMmS,UAAY,4BACpC,EACAP,WAAY,SAAC9W,GACXA,EAAE6W,cAAc3R,MAAMqS,UAAY,gBAClCvX,EAAE6W,cAAc3R,MAAMmS,UAAY,2BACpC,EAACjW,SAAA,CAED6D,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CACVY,OAAQ,QACRD,MAAO,OACPgB,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBlB,aAAc,QACf7E,SACY6D,sBAAA,MAAA,CACzBwN,IAAK,GAAAjN,OAAG6L,WAAS7L,eAAGsI,EAAiB,UAAjB4H,EAAS,GAAGpB,aAAK,IAAAnJ,OAAA,EAAAA,EAAEkH,0BAAKzD,KAChD2D,IAAI,GACJrN,MAAO,CAAEW,MAAO,OAAQC,OAAQ,OAAQoQ,UAAW,eAGlCd,GAAmBnQ,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAC9BiI,UAAW,SACXO,SAAU,OACVC,WAAY,MACZZ,MAAO,OACPyK,WAAY,OACbpW,SAC8B,iBAArBsU,EAAS,GAAGnX,KAAqBmX,EAAS,GAAGnX,KAAyB8T,IAAMqD,EAAS,GAAGnX,UAIrGmX,EAASpU,OAAS,GACjB2D,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CACV2B,QAAS,OACT8Q,oBAAqB,gBACrB3B,IAAK,QACN5U,SACEsU,EAAS0B,MAAM,GAAGnK,IAAI,SAACgC,WAAY,OAClCjC,kBAAAA,KAAA,MAAA,CAEE0F,UAAU,oBACVxN,MAAO,CACLY,OAAQ,OACRS,aAAc,MACdG,SAAU,SACVoP,OAAQ,iBACR1Q,gBAAiB,OACjByB,QAAS,OACTE,cAAe,SACfa,WAAY,SACZT,eAAgB,SAChB6E,QAAS,OACTqL,UAAW,4BACXC,WAAY,sBACZ3E,OAAQ,WAEViE,YAAa,SAAC5W,GACZA,EAAE6W,cAAc3R,MAAMqS,UAAY,mBAClCvX,EAAE6W,cAAc3R,MAAMmS,UAAY,4BACpC,EACAP,WAAY,SAAC9W,GACXA,EAAE6W,cAAc3R,MAAMqS,UAAY,gBAClCvX,EAAE6W,cAAc3R,MAAMmS,UAAY,2BACpC,EAACjW,SAAA,CAED6D,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CACVY,OAAQ,QACRD,MAAO,OACPgB,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBlB,aAAc,OACf7E,SACkB6D,6BACnCwN,IAAK,UAAGpB,WAAS7L,OAAqB,UAAL,QAAbhB,EAAAyK,EAAQqF,aAAK,IAAA9P,OAAA,EAAAA,EAAE6N,WAAG,IAAA3N,OAAA,EAAAA,EAAEkK,KAC5C2D,IAAI,GACJrN,MAAO,CAAEW,MAAO,OAAQC,OAAQ,OAAQoQ,UAAW,eAG9Bd,GAAmBnQ,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAC9BiI,UAAW,SACXO,SAAU,OACVC,WAAY,MACZZ,MAAO,OACPyK,WAAY,MACZ1R,OAAQ,OACRY,SAAU,SACVG,QAAS,cACT4Q,gBAAiB,EACjBC,gBAAiB,YAClBtW,SAC0B,iBAAjB6N,EAAQ1Q,KAAqB0Q,EAAQ1Q,KAAyB8T,IAAMpD,EAAQ1Q,SApDjF0Q,EAAQS,IAuDhB,QAIL,KAEJzK,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CACViI,UAAW,SACXJ,MAAO,OACPf,QAAS,OACTnG,MAAO,OACPiQ,OAAQ,kBACRvP,aAAc,MACdnB,gBAAiB,WAClBhE,SACC6D,kBAAAA,gFAMZ,ECxnBM2S,mBAAmB,SAAChJ,GACxB,IACE,IAAMiJ,EAAS,IAAIC,IAAIlJ,GACvB,GAAIiJ,EAAOE,SAASlT,SAAS,YAC3B,OAAOgT,EAAOG,SAASC,QAAQ,IAAK,KAAO,KAE7C,GAAIJ,EAAOE,SAASlT,SAAS,eAAgB,CAC3C,GAAIgT,EAAOG,SAASE,WAAW,UAC7B,OAAOL,EAAOM,aAAajW,IAAI,KAEjC,GAAI2V,EAAOG,SAASE,WAAW,WAC7B,OAAOL,EAAOG,SAASI,MAAM,WAAW,IAAM,IAElD,CACF,CAAE,MAAA5T,GAAO,CACT,OAAO,IACT,EAEM6T,iBAAiB,SAACzJ,GACtB,IACE,IAOQ0J,EAPFT,EAAS,IAAIC,IAAIlJ,GACvB,GAAIiJ,EAAOE,SAASlT,SAAS,aAE3B,MAAiB,WADXyT,EAAQT,EAAOG,SAASI,MAAM,KAAKxW,OAAOyS,UACtC,GAAuBiE,EAAM,IAAM,KACtCA,EAAM,IAAM,KAErB,GAAIT,EAAOE,SAASlT,SAAS,oBAE3B,OADMyT,EAAQT,EAAOG,SAASI,MAAM,KAAKxW,OAAOyS,UACnC,IAAM,IAEvB,CAAE,MAAA7P,GAAO,CACT,OAAO,IACT,EAEM+T,uBAAuB,SAAC3J,GAC5B,IACE,IAAMiJ,EAAS,IAAIC,IAAIlJ,GACvB,GAAIiJ,EAAOE,SAASlT,SAAS,mBAAoB,CAC/C,IAAMyT,EAAQT,EAAOG,SAASI,MAAM,KAAKxW,OAAOyS,SAChD,GAAiB,UAAbiE,EAAM,GAAgB,OAAOA,EAAM,IAAM,IAC/C,CACA,GAAIT,EAAOE,SAASlT,SAAS,UAC3B,OAAOgT,EAAOG,SAASC,QAAQ,IAAK,KAAO,IAE/C,CAAE,MAAAzT,GAAO,CACT,OAAO,IACT,EAEMgU,iBAAoD,SAAChU,GACzD,IAAA5G,EAAK4G,EAAA5G,MACL8G,EAAAF,EAAAG,WAAAA,OAAU,IAAAD,EAAG,MAAKA,EAClByG,EAAA3G,EAAA+M,UAAAA,OAAS,IAAApG,EAAG,QAAOA,EAgBbvG,EAdiB,WACrB,OAAQD,GACN,IAAK,YACH,OAAO/G,EAAMkH,KAAK0M,UACpB,IAAK,YACH,OAAO5T,EAAMkH,KAAK2M,UACpB,IAAK,SACH,OAAO7T,EAAMkH,KAAK4M,OAEpB,QACE,OAAO9T,EAAMkH,KAAKC,IAExB,CAEoBwG,GACdkN,EAAQ7a,EAAM8a,OAEd/G,EAAmBJ,EAqEzB,OACEtM,kBAAAA,IAAA,MAAA,CACEyN,UAAU,YACVxN,MAAO,CACLqB,aAAc,GAAAf,OAAGZ,EAAY2B,aAAY,MACzCT,OAAQ6L,EACRuE,UAAW,WAEZ9U,SA3EgB,WACnB,IAAMuX,EAAmC,CACvC9S,MAAO,OACPC,OAAQ,OACRgQ,OAAQ,EACRvP,aAAc,GAAAf,OAAGZ,EAAY2B,aAAY,MACzC2P,UAAW,WAGb,GAAmB,YAAfuC,EAAMpb,KAAoB,CAC5B,IACMoV,GADAmG,EAAKhB,mBAAiBa,EAAM7J,MACjB,iCAAApJ,OAAiCoT,GAAOH,EAAM7J,IAC/D,OACE3J,kBAAAA,IAAA,SAAA,CACE4T,MAAOJ,EAAMlG,KAAO,gBACpBE,IAAKA,EACLqG,MAAM,sGACNC,iBAAe,EACf7T,MAAOyT,GAGb,CAEA,GAAmB,UAAfF,EAAMpb,KAAkB,CAEpBoV,GADAmG,EAAKP,iBAAeI,EAAM7J,MACf,kCAAApJ,OAAkCoT,GAAOH,EAAM7J,IAChE,OACE3J,kBAAAA,IAAA,SAAA,CACE4T,MAAOJ,EAAMlG,KAAO,cACpBE,IAAKA,EACLqG,MAAM,2CACNC,iBAAe,EACf7T,MAAOyT,GAGb,CAEA,GAAmB,gBAAfF,EAAMpb,KAAwB,CAChC,IAAMub,EACAnG,GADAmG,EAAKL,uBAAqBE,EAAM7J,MACrB,2CAAApJ,OAA2CoT,GAAOH,EAAM7J,IACzE,OACE3J,kBAAAA,IAAA,SAAA,CACE4T,MAAOJ,EAAMlG,KAAO,oBACpBE,IAAKA,EACLqG,MAAM,2CACNC,iBAAe,EACf7T,MAAOyT,GAGb,CAGA,OACE1T,sBAAA,QAAA,CACE+T,UAA6B,IAAnBP,EAAMQ,SAChBC,OAAuB,IAAhBT,EAAMS,MACbC,aAAW,EACXC,UAA6B,IAAnBX,EAAMW,SAChBC,MAAqB,IAAfZ,EAAMY,KACZnU,MAAO,CAAEW,MAAO,OAAQC,OAAQ,OAAQS,aAAc,UAAG3B,EAAY2B,aAAY,OACjF+S,OAAmC,iBAApBb,EAAMc,UAAyBd,EAAMc,eAAYvS,EAAS5F,SAEzE6D,kBAAAA,cAAQwN,IAAK,UAAGpB,WAAS7L,OAAGiT,EAAM7J,QAGxC,CAYK4K,IAGP,EC3EMC,oBAA8D,SAACjV,GAAE,IAAA5G,UAAO8G,EAAAF,EAAAG,WAAAA,OAAU,IAAAD,EAAG,MAAKA,EACzFuQ,EAAwB,SAACC,GAC9B,IAAKA,EAAM,OAAO,EAClB,OAAQvQ,GACP,IAAK,YAAa,QAASuQ,EAAK1D,UAChC,IAAK,YAAa,QAAS0D,EAAKzD,UAChC,IAAK,SAAU,QAASyD,EAAKxD,OAE7B,QAAS,QAASwD,EAAKnQ,IAEzB,EAgBMoQ,EAAaF,EAAsBrX,EAAMuX,YACzCuE,EAAgBzE,EAAsBrX,EAAMwX,iBAC5CC,EAAqBJ,EAAsBrX,EAAMyX,oBACjDC,EAjBmB,WAExB,IAAK1X,EAAMkP,OAAQ,MAAO,OAC1B,OAAQnI,GACP,IAAK,YAAa,OAAO/G,EAAMkP,OAAO0E,WAAc,OACpD,IAAK,YAAa,OAAO5T,EAAMkP,OAAO2E,WAAc,OACpD,IAAK,SAAU,OAAO7T,EAAMkP,OAAO4E,QAAW,OAE9C,QAAS,OAAO9T,EAAMkP,OAAO/H,KAAO,OAEtC,CAOsBwQ,GAYhBoE,EATY,uBACjB,OAAoB,UAAhB/b,EAAMgc,kBAAU,IAAApV,OAAA,EAAAA,EAAEoR,qBAEjBzK,EAAgB,UAAhBvN,EAAMgc,kBAAU,IAAAlV,OAAA,EAAAA,EAAEkR,gCAAWtU,QAA+B,UAAhB1D,EAAMgc,kBAAU,IAAA9L,OAAA,EAAAA,EAAE8H,UAG5D,EACR,CAEeiE,GAuBTC,EAAiB,SAACC,SAIvB,GAHAjb,QAAQkb,IAAID,GAGRA,EAAKE,OAASF,EAAKE,MAAM3Y,OAAS,EAAG,CACxC,IAAM4Y,EAAYH,EAAKE,MAAM,GAK5B,OAFAnb,QAAQkb,IAAqB,QAAjBxV,EAAA0V,EAAUC,eAAO,IAAA3V,OAAA,EAAAA,EAAEkL,KAExB,SAAAlK,OAAS4U,mBAAmBF,EAAUC,SAE/C,CAGA,OAAO,IACR,EAEME,EAAO,SAAC7V,GAAE,IAxBKoK,EAwBLmL,SAAMrV,EAAAF,EAAA8V,MAAAA,OAAK,IAAA5V,GAAQA,EAA6C,OAC/EO,kBAAAA,IAAA,IAAA,CACC+K,KAAM8J,EAAeC,SAAQ/S,EAC7B9B,MAAO,CAAE8I,eAAgB,OAAQjB,MAAO,WAAW3L,SAEnD4L,kBAAAA,KAAA,MAAA,CACC0F,UAAU,YACVxN,MAAO,CACNY,OAAQ,OACRS,aAAc,MACdG,SAAU,SACVoP,OAAQ,iBACR1Q,gBAAiB,OACjByB,QAAS,OACTE,cAAe,SACfa,WAAY,SACZT,eAAgB,SAChB6E,QAASsO,EAAQ,OAAS,OAC1BjD,UAAW,4BACXC,WAAY,sBACZ3E,OAAQ,WAETiE,YAAa,SAAC5W,GACZA,EAAE6W,cAAiC3R,MAAMqS,UAAY,mBACrDvX,EAAE6W,cAAiC3R,MAAMmS,UAAY,4BACvD,EACAP,WAAY,SAAC9W,GACXA,EAAE6W,cAAiC3R,MAAMqS,UAAY,gBACrDvX,EAAE6W,cAAiC3R,MAAMmS,UAAY,2BACvD,YAEApS,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAAEY,OAAQwU,EAAQ,QAAU,QAASzU,MAAO,OAAQgB,QAAS,OAAQe,WAAY,SAAUT,eAAgB,SAAUlB,aAAcqU,EAAQ,OAAS,OAAOlZ,SACtK6D,6BAAKwN,KAxDY7D,EAwDKmL,EAAKzF,MAAM1F,IAvD/BA,EACDA,EAAIsJ,WAAW,YAActJ,EAAIsJ,WAAW,YAAoBtJ,EAC7D,GAAApJ,OAAG6L,WAAS7L,OAAGoJ,GAFL,IAuDyB2D,IAAKwH,EAAKzF,MAAM/B,KAAO,GAAIrN,MAAO,CAAEW,MAAO,OAAQC,OAAQ,OAAQoQ,UAAW,eAErHwD,GACAzU,sBAAA,MAAA,CAAKC,MAAO,CAAEiI,UAAW,SAAUO,SAAU4M,EAAQ,OAAS,OAAQ3M,WAAY2M,EAAQ,IAAa,IAAYvN,MAAO,OAAQyK,WAAY,MAAO1R,OAAQwU,EAAQ,OAAS,OAAQ5T,SAAU,SAAUG,QAASyT,EAAQ,QAAU,cAAe7C,gBAAiB6C,OAAQtT,EAAmB,EAAG0Q,gBAAiB,YAAmBtW,SACrU2Y,EAAKxb,WApCqE,EA2ChF,OACCyO,kBAAAA,KAAA,MAAA,CACC9H,MAAO,CACN4Q,OAAQ,oBACRjQ,MAAO,OACP2G,SAAU,OACVjG,aAAc,MACdpB,UAAW,QACXyB,SAAU,WACVF,SAAU,SACVT,aAAc,OACdF,UAAW,OAEZ2M,UAAU,sBAAqBtR,SAAA,CAE9B+T,GACAnI,uBAAA,MAAA,CACC0F,UAAU,mBACVxN,MAAO,CACNE,gBAAiBxH,EAAMmY,iBACvB/J,QAAS,YACTzF,aAAc,MACdN,aAAc,MACdY,QAAS,OACTe,WAAY,SACZT,eAAgB,gBAChBF,SAAU,OACV+O,IAAK,QACL5U,SAAA,CAED6D,kBAAAA,IAAA,IAAA,CAAGC,MAAO,CACT6H,MAAOnP,EAAMuY,gBAAgB7H,UAC7BZ,SAAU,GAAAlI,OAAG5H,EAAMuY,gBAAgBzI,SAAQ,MAC3CC,WAAY/P,EAAMuY,gBAAgBtI,OAAS,OAAS,SACpDD,UAAWhQ,EAAMuY,gBAAgBpI,SAAW,SAAW,SACvDC,eAAgBpQ,EAAMuY,gBAAgBC,YAAc,YAAc,OAClErK,OAAQ,GACR3K,SACCxD,EAAMyY,YAAc,WAGH,SAAlBf,GAA4BqE,EAAOrY,OAAS,GAC5C0L,kBAAAA,KAAA,MAAA,CAAK9H,MAAO,CAAE2B,QAAS,OAAQmP,IAAK,iBACnC/Q,kBAAAA,IAAA,SAAA,CACCsR,QA7HY,WAClB,IAAMC,EAAWjG,SAASkG,cAAc,uBACpCD,GACFA,EAAyBE,SAAS,CAAEtQ,MAAM,IAAMuQ,SAAU,UAE7D,EAyHOzR,MAAO,CACNW,MAAO,OACPC,OAAQ,OACRS,aAAc,MACduP,OAAQ,iBACR1Q,gBAAiB,OACjBuN,OAAQ,UACR9L,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBuG,SAAU,OACVC,WAAY,QAEbiJ,YAAa,SAAC5W,GAAQA,EAAE6W,cAAc3R,MAAME,gBAAkB,SAAW,EACzE0R,WAAY,SAAC9W,GAAQA,EAAE6W,cAAc3R,MAAME,gBAAkB,MAAQ,EAAChE,SAAA,MAIvE6D,kBAAAA,IAAA,SAAA,CACCsR,QA1Ia,WACnB,IAAMC,EAAWjG,SAASkG,cAAc,uBACpCD,GACFA,EAAyBE,SAAS,CAAEtQ,KAAM,IAAKuQ,SAAU,UAE5D,EAsIOzR,MAAO,CACNW,MAAO,OACPC,OAAQ,OACRS,aAAc,MACduP,OAAQ,iBACR1Q,gBAAiB,OACjBuN,OAAQ,UACR9L,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBuG,SAAU,OACVC,WAAY,QAEbiJ,YAAa,SAAC5W,GAAQA,EAAE6W,cAAc3R,MAAME,gBAAkB,SAAW,EACzE0R,WAAY,SAAC9W,GAAQA,EAAE6W,cAAc3R,MAAME,gBAAkB,MAAQ,EAAChE,SAAA,YAS3E6D,kBAAAA,IAAA,MAAA,CACCC,MAAO,CACN2B,QAA2B,SAAlByO,EAA2B,OAAS,QAC7CyB,UAA6B,SAAlBzB,EAA4BD,EAAqB,OAAS,SAAY,UACjFW,IAAuB,SAAlBV,EAA2B,OAAS,IACzCtJ,QAAS,OACTgL,eAAgB,SAChB5R,gBAAiBxH,EAAMqZ,WAAa,OACpCC,eAAgB,OAChB3Q,aAAc,MACdK,SAAU,WACVuQ,eAAgB,uBAEjBzE,UAAU,8BAETiH,EAAOrY,OAAS,EACE,SAAlBgU,EACCqE,EAAO1M,IAAI,SAACsN,GAAU,OAEpBtV,kBAAAA,IAAA,MAAA,CAAsBC,MAAO,CAAEuH,SAAU,SAASrL,SACjD6D,kBAAAA,IAACoV,EAAI,CAACN,KAAMQ,KADHA,EAAMpL,KAFI,GAWD,UAAlBmG,EACHrQ,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAAE2B,QAAS,OAAU8Q,oBAAqB,iBAAkB3B,IAAK,OAAQhK,QAAS,gBAC5F2N,EAAO1M,IAAI,SAACsN,GAAU,OACtBtV,kBAAAA,IAACoV,GAAsBN,KAAMQ,GAAlBA,EAAMpL,KADK,KAIH,WAAlBmG,EACHrQ,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAAE2B,QAAS,OAAU8Q,oBAAqB,iBAAkB3B,IAAK,OAAQhK,QAAS,OAAO5K,SACnGuY,EAAO1M,IAAI,SAACsN,GAAU,OACtBtV,kBAAAA,IAACoV,GAAsBN,KAAMQ,GAAlBA,EAAMpL,KADK,KAIH,iBAAlBmG,EACHtI,kBAAAA,YAAK9H,MAAO,CAAE2B,QAAS,OAAQE,cAAe,SAAUiP,IAAK,OAAQhK,QAAS,iBAC5E2N,EAAOrY,OAAS,GAChB2D,sBAACoV,EAAI,CAACN,KAAMJ,EAAO,GAAIW,OAAK,IAE5BX,EAAOrY,OAAS,GAChB2D,kBAAAA,WAAKC,MAAO,CAAE2B,QAAS,OAAQ8Q,oBAAqB,iBAAkB3B,IAAK,QAAQ5U,SACjFuY,EAAOvC,MAAM,GAAGnK,IAAI,SAACsN,GAAU,OAC/BtV,kBAAAA,IAACoV,GAAsBN,KAAMQ,GAAlBA,EAAMpL,KADc,QAMhC,KAEJlK,kBAAAA,WAAKC,MAAO,CAAEiI,UAAW,SAAUJ,MAAO,OAAQf,QAAS,OAAQnG,MAAO,OAAQiQ,OAAQ,kBAAmBvP,aAAc,MAAOnB,gBAAiB,oBAClJH,kBAAAA,IAAA,IAAA,CAAA7D,SAAA,+BAMN,qKCpY2E,IAAmBoZ,QAAzE,oBAAbjK,UAAmD,oBAAd8C,YAAiDmH,QAIvF,WAEL,IAAIC,MAAQ,6BACRC,aAAe,GACfC,eAAgB,EAChBC,qBAAsB,OACtBC,aAAe,SAAsBC,GACvCH,gBAAkBG,CACtB,EACMC,aAAe,WACjB,OAAOJ,aACX,EACMK,gBAAkB,SAAyBnb,GAC7C6a,aAAe7a,CACnB,EACMob,gBAAkB,WACpB,OAAOP,YACX,EAEE,SAASQ,UAAU7d,GAEjB,OAAOkT,SAASR,cAAc1S,EAClC,CAEE,SAAS8d,gBAAgBC,EAASC,GAChC,IAAIxS,EAEAyS,EADAC,EAAMH,EAAQ9Z,OAElB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAExB,IAAK,IAAI2S,KADTF,EAAkBF,EAAQvS,GAAGrF,UAEvBhC,OAAOgC,UAAU9B,eAAerB,KAAKib,EAAiBE,KAAOH,EAAY7X,UAAUgY,GAAQF,EAAgBE,GAGvH,CACE,SAASC,cAAcC,EAAQxG,GAC7B,OAAO1T,OAAOS,yBAAyByZ,EAAQxG,EACnD,CACE,SAASyG,oBAAoBnY,GAC3B,SAASoY,IAAgB,CAEzB,OADAA,EAAcpY,UAAYA,EACnBoY,CACX,CAIE,IAAIC,uBAAyB,WAC3B,SAASC,EAAgBC,GACvBpb,KAAKqb,OAAS,GACdrb,KAAKob,aAAeA,EACpBpb,KAAKsb,QAAU,EACftb,KAAKub,UAAW,CACtB,CA0EI,OAzEAJ,EAAgBtY,UAAY,CAC1B2Y,SAAU,SAAkBC,GAC1Bzb,KAAKqb,OAAOhR,KAAKoR,EACzB,EACMC,MAAO,WACL,IAAIxT,EACA0S,EAAM5a,KAAKqb,OAAO1a,OACtB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAKqb,OAAOnT,GAAGwT,OAEzB,EACMC,OAAQ,WACN,IAAIzT,EACA0S,EAAM5a,KAAKqb,OAAO1a,OACtB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAKqb,OAAOnT,GAAGyT,QAEzB,EACMC,QAAS,SAAiBC,GACxB,IAAI3T,EACA0S,EAAM5a,KAAKqb,OAAO1a,OACtB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAKqb,OAAOnT,GAAG0T,QAAQC,EAEjC,EACMC,YAAa,SAAqBC,GAChC,OAAI/b,KAAKob,aACApb,KAAKob,aAAaW,GAEvBzJ,OAAO0J,KACF,IAAI1J,OAAO0J,KAAK,CACrBlK,IAAK,CAACiK,KAGH,CACLE,WAAW,EACXC,KAAM,WACJlc,KAAKic,WAAY,CAC7B,EACUE,KAAM,WACJnc,KAAKic,WAAY,CAC7B,EACUG,QAAS,WAAmB,EAC5BC,KAAM,WAAgB,EACtBC,UAAW,WAAqB,EAE1C,EACMC,gBAAiB,SAAyBnB,GACxCpb,KAAKob,aAAeA,CAC5B,EACMkB,UAAW,SAAmBpd,GAC5Bc,KAAKsb,QAAUpc,EACfc,KAAKwc,eACb,EACMC,KAAM,WACJzc,KAAKub,UAAW,EAChBvb,KAAKwc,eACb,EACME,OAAQ,WACN1c,KAAKub,UAAW,EAChBvb,KAAKwc,eACb,EACMG,UAAW,WACT,OAAO3c,KAAKsb,OACpB,EACMkB,cAAe,WACb,IAAItU,EACA0S,EAAM5a,KAAKqb,OAAO1a,OACtB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAKqb,OAAOnT,GAAG0U,OAAO5c,KAAKsb,SAAWtb,KAAKub,SAAW,EAAI,GAEpE,GAEW,WACL,OAAO,IAAIJ,CACjB,CACA,CAnF+B,GAqFzB0B,iBAAmB,WACrB,SAASC,EAAmBpgB,EAAMke,GAChC,IAEI1b,EAFAgJ,EAAI,EACJ6U,EAAM,GAEV,OAAQrgB,GACN,IAAK,QACL,IAAK,SACHwC,EAAQ,EACR,MACF,QACEA,EAAQ,IAGZ,IAAKgJ,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB6U,EAAI1S,KAAKnL,GAEX,OAAO6d,CACb,CAaI,MAAiC,mBAAtBC,mBAA4D,mBAAjBC,aAZtD,SAAiCvgB,EAAMke,GACrC,MAAa,YAATle,EACK,IAAIugB,aAAarC,GAEb,UAATle,EACK,IAAIwgB,WAAWtC,GAEX,WAATle,EACK,IAAIsgB,kBAAkBpC,GAExBkC,EAAmBpgB,EAAMke,EACtC,EAIWkC,CACX,CAnCyB,GAoCvB,SAASK,iBAAiBvC,GACxB,OAAO9X,MAAMuF,MAAM,KAAM,CACvB1H,OAAQia,GAEd,CAEE,SAASwC,UAAUC,GAAgC,OAAOD,UAAY,mBAAqB9gB,QAAU,iBAAmBA,OAAO2N,SAAW,SAAUoT,GAAK,cAAcA,CAAE,EAAK,SAAUA,GAAK,OAAOA,GAAK,mBAAqB/gB,QAAU+gB,EAAE5d,cAAgBnD,QAAU+gB,IAAM/gB,OAAOuG,UAAY,gBAAkBwa,GAAMD,UAAUC,EAAG,CAClU,IAAIC,iBAAkB,EAClBC,kBAAoB,KACpBC,sBAAwB,KACxBC,WAAa,GACbC,SAAW,iCAAiCjL,KAAKC,UAAUC,WAE3DgL,MAAQtK,KAAKuK,IACbC,OAASxK,KAAKyK,KACdC,QAAU1K,KAAK2K,MACfC,MAAQ5K,KAAK6K,IACbC,MAAQ9K,KAAK+K,IACbC,OAAS,CAAA,GACb,WACE,IACInW,EADAoW,EAAgB,CAAC,MAAO,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,QAAS,OAAQ,OAAQ,QAAS,QAAS,MAAO,OAAQ,MAAO,QAAS,SAAU,QAAS,OAAQ,MAAO,QAAS,OAAQ,QAAS,MAAO,MAAO,MAAO,SAAU,QAAS,OAAQ,MAAO,OAAQ,OAAQ,MAAO,OAAQ,QAAS,IAAK,OAAQ,MAAO,SAAU,QAAS,KAAM,UAAW,SAExW1D,EAAM0D,EAAc3d,OACxB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBmW,OAAOC,EAAcpW,IAAMmL,KAAKiL,EAAcpW,GAEjD,CAPD,GAWAmW,OAAOE,OAASlL,KAAKkL,OACrBF,OAAOG,IAAM,SAAUC,GAErB,GAAe,WADFrB,UAAUqB,IACIA,EAAI9d,OAAQ,CACrC,IACIuH,EADAwW,EAASvB,iBAAiBsB,EAAI9d,QAE9Bia,EAAM6D,EAAI9d,OACd,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBwW,EAAOxW,GAAKmL,KAAKmL,IAAIC,EAAIvW,IAE3B,OAAOwW,CACb,CACI,OAAOrL,KAAKmL,IAAIC,EACpB,EACE,IAAIE,qBAAuB,IACvBC,UAAYvL,KAAKwL,GAAK,IACtBC,YAAc,MAUlB,SAASC,SAAS9N,GAChBA,EAAQ1M,MAAM0B,SAAW,WACzBgL,EAAQ1M,MAAMc,IAAM,EACpB4L,EAAQ1M,MAAMkB,KAAO,EACrBwL,EAAQ1M,MAAM2B,QAAU,QACxB+K,EAAQ1M,MAAMya,gBAAkB,MAChC/N,EAAQ1M,MAAM0a,sBAAwB,MACtChO,EAAQ1M,MAAM2a,mBAAqB,UACnCjO,EAAQ1M,MAAM4a,yBAA2B,UACzClO,EAAQ1M,MAAM6a,eAAiB,cAC/BnO,EAAQ1M,MAAM8a,qBAAuB,cACrCpO,EAAQ1M,MAAM+a,kBAAoB,aACtC,CACE,SAASC,kBAAkB7iB,EAAM8iB,EAAaC,EAAWC,GACvD1f,KAAKtD,KAAOA,EACZsD,KAAKwf,YAAcA,EACnBxf,KAAKyf,UAAYA,EACjBzf,KAAK2f,UAAYD,EAAkB,GAAI,EAAK,CAChD,CACE,SAASE,gBAAgBljB,EAAMgjB,GAC7B1f,KAAKtD,KAAOA,EACZsD,KAAK2f,UAAYD,EAAkB,GAAI,EAAK,CAChD,CACE,SAASG,oBAAoBnjB,EAAMojB,EAAYC,EAAaL,GAC1D1f,KAAKtD,KAAOA,EACZsD,KAAK+f,YAAcA,EACnB/f,KAAK8f,WAAaA,EAClB9f,KAAK2f,UAAYD,EAAkB,GAAI,EAAK,CAChD,CACE,SAASM,oBAAoBtjB,EAAMujB,EAAYC,GAC7ClgB,KAAKtD,KAAOA,EACZsD,KAAKigB,WAAaA,EAClBjgB,KAAKkgB,YAAcA,CACvB,CACE,SAASC,eAAezjB,EAAM4S,GAC5BtP,KAAKtD,KAAOA,EACZsD,KAAKsP,OAASA,CAClB,CACE,SAAS8Q,wBAAwBC,EAAab,GAC5Cxf,KAAKtD,KAAO,mBACZsD,KAAKqgB,YAAcA,EACnBrgB,KAAKwf,YAAcA,CACvB,CACE,SAASc,mBAAmBD,GAC1BrgB,KAAKtD,KAAO,cACZsD,KAAKqgB,YAAcA,CACvB,CAKE,IAAIE,iBACEC,OAAS,EACN,WAEL,OAAO/C,WAAa,qBADpB+C,QAAU,EAEhB,GAJQA,OAMN,SAASC,SAASC,EAAGzY,EAAGiC,GACtB,IAAIyW,EACA7W,EACAzC,EACAa,EACAqB,EACA/B,EACAoZ,EACA5Y,EAMJ,OAHAR,EAAI0C,GAAK,EAAIjC,GACb2Y,EAAI1W,GAAK,GAFTX,EAAQ,EAAJmX,GADJxY,EAAImL,KAAK2K,MAAU,EAAJ0C,KAGEzY,GACjBD,EAAIkC,GAAK,GAAK,EAAIX,GAAKtB,GACfC,EAAI,GACV,KAAK,EACHyY,EAAIzW,EACJJ,EAAI9B,EACJX,EAAIG,EACJ,MACF,KAAK,EACHmZ,EAAIC,EACJ9W,EAAII,EACJ7C,EAAIG,EACJ,MACF,KAAK,EACHmZ,EAAInZ,EACJsC,EAAII,EACJ7C,EAAIW,EACJ,MACF,KAAK,EACH2Y,EAAInZ,EACJsC,EAAI8W,EACJvZ,EAAI6C,EACJ,MACF,KAAK,EACHyW,EAAI3Y,EACJ8B,EAAItC,EACJH,EAAI6C,EACJ,MACF,KAAK,EACHyW,EAAIzW,EACJJ,EAAItC,EACJH,EAAIuZ,EAKR,MAAO,CAACD,EAAG7W,EAAGzC,EAClB,CACE,SAASwZ,SAASF,EAAG7W,EAAGzC,GACtB,IAGIqZ,EAHAxC,EAAM7K,KAAK6K,IAAIyC,EAAG7W,EAAGzC,GACrB+W,EAAM/K,KAAK+K,IAAIuC,EAAG7W,EAAGzC,GACrBD,EAAI8W,EAAME,EAEVnW,EAAY,IAARiW,EAAY,EAAI9W,EAAI8W,EACxBhU,EAAIgU,EAAM,IACd,OAAQA,GACN,KAAKE,EACHsC,EAAI,EACJ,MACF,KAAKC,EACHD,EAAI5W,EAAIzC,EAAID,GAAK0C,EAAIzC,EAAI,EAAI,GAC7BqZ,GAAK,EAAItZ,EACT,MACF,KAAK0C,EACH4W,EAAIrZ,EAAIsZ,EAAQ,EAAJvZ,EACZsZ,GAAK,EAAItZ,EACT,MACF,KAAKC,EACHqZ,EAAIC,EAAI7W,EAAQ,EAAJ1C,EACZsZ,GAAK,EAAItZ,EAKb,MAAO,CAACsZ,EAAGzY,EAAGiC,EAClB,CACE,SAAS4W,mBAAmB1U,EAAO2U,GACjC,IAAIC,EAAMH,SAAoB,IAAXzU,EAAM,GAAqB,IAAXA,EAAM,GAAqB,IAAXA,EAAM,IAOzD,OANA4U,EAAI,IAAMD,EACNC,EAAI,GAAK,EACXA,EAAI,GAAK,EACAA,EAAI,IAAM,IACnBA,EAAI,GAAK,GAEJP,SAASO,EAAI,GAAIA,EAAI,GAAIA,EAAI,GACxC,CACE,SAASC,mBAAmB7U,EAAO2U,GACjC,IAAIC,EAAMH,SAAoB,IAAXzU,EAAM,GAAqB,IAAXA,EAAM,GAAqB,IAAXA,EAAM,IAOzD,OANA4U,EAAI,IAAMD,EACNC,EAAI,GAAK,EACXA,EAAI,GAAK,EACAA,EAAI,GAAK,IAClBA,EAAI,GAAK,GAEJP,SAASO,EAAI,GAAIA,EAAI,GAAIA,EAAI,GACxC,CACE,SAASE,YAAY9U,EAAO2U,GAC1B,IAAIC,EAAMH,SAAoB,IAAXzU,EAAM,GAAqB,IAAXA,EAAM,GAAqB,IAAXA,EAAM,IAOzD,OANA4U,EAAI,IAAMD,EAAS,IACfC,EAAI,GAAK,EACXA,EAAI,IAAM,EACDA,EAAI,GAAK,IAClBA,EAAI,IAAM,GAELP,SAASO,EAAI,GAAIA,EAAI,GAAIA,EAAI,GACxC,CACE,IAAIG,SAAW,WACb,IACIjZ,EACAkZ,EAFAC,EAAW,GAGf,IAAKnZ,EAAI,EAAGA,EAAI,IAAKA,GAAK,EACxBkZ,EAAMlZ,EAAEoZ,SAAS,IACjBD,EAASnZ,GAAoB,IAAfkZ,EAAIzgB,OAAe,IAAMygB,EAAMA,EAE/C,OAAO,SAAUT,EAAG7W,EAAGzC,GAUrB,OATIsZ,EAAI,IACNA,EAAI,GAEF7W,EAAI,IACNA,EAAI,GAEFzC,EAAI,IACNA,EAAI,GAEC,IAAMga,EAASV,GAAKU,EAASvX,GAAKuX,EAASha,EACxD,CACA,CApBiB,GAqBXka,mBAAqB,SAA4BpH,GACnDmD,kBAAoBnD,CACxB,EACMqH,mBAAqB,WACvB,OAAOlE,eACX,EACMmE,qBAAuB,SAA8BviB,GACvDqe,kBAAoBre,CACxB,EACMwiB,qBAAuB,WACzB,OAAOnE,iBACX,EACMoE,wBAA0B,SAAiCziB,GAC7Dse,sBAAwBte,CAC5B,EACM0iB,wBAA0B,WAC5B,OAAOpE,qBACX,EACMqE,wBAA0B,SAAiC3iB,GAC7Dyf,qBAAuBzf,CAC3B,EACM4iB,wBAA0B,WAC5B,OAAOnD,oBACX,EACMoD,YAAc,SAAqB7iB,GACrCue,WAAave,CACjB,EAKE,SAAS8iB,SAAStlB,GAEhB,OAAOkT,SAASqS,gBAAgBnI,MAAOpd,EAC3C,CAEE,SAASwlB,UAAU7E,GAAgC,OAAO6E,UAAY,mBAAqB5lB,QAAU,iBAAmBA,OAAO2N,SAAW,SAAUoT,GAAK,cAAcA,CAAE,EAAK,SAAUA,GAAK,OAAOA,GAAK,mBAAqB/gB,QAAU+gB,EAAE5d,cAAgBnD,QAAU+gB,IAAM/gB,OAAOuG,UAAY,gBAAkBwa,GAAM6E,UAAU7E,EAAG,CAClU,IAAI8E,YAAc,WAChB,IAEIC,EACAC,EAHAC,EAAa,EACbC,EAAY,GAGZC,EAAc,CAChBC,UAAW,WAAqB,EAChCC,YAAa,SAAqBC,GAChCP,EAAS,CACPxP,KAAM+P,GAEhB,GAEQC,EAAc,CAChBF,YAAa,SAAqB9P,GAChC4P,EAAYC,UAAU,CACpB7P,KAAMA,GAEhB,GAcI,SAASiQ,IACFR,KACHA,EAdJ,SAAsBS,GACpB,GAAIxQ,OAAOyQ,QAAUzQ,OAAO0Q,MAAQ5I,eAAgB,CAClD,IAAI6I,EAAO,IAAID,KAAK,CAAC,4CAA6CF,EAAGxB,YAAa,CAChF5kB,KAAM,oBAGJuR,EAAMkJ,IAAI+L,gBAAgBD,GAC9B,OAAO,IAAIF,OAAO9U,EAC1B,CAEM,OADAmU,EAAWU,EACJN,CACb,CAGyBW,CAAa,SAAqB9jB,GAohBjD,GA9DKujB,EAAYT,cACfS,EAAYT,YAtdd,WACE,SAASiB,EAAeC,EAAQC,GAC9B,IAAIC,EACArb,EAEAsb,EACAC,EACAviB,EACAwiB,EAJA9I,EAAMyI,EAAO1iB,OAKjB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAExB,GAAI,OADJqb,EAAYF,EAAOnb,MACOqb,EAAUI,UAAW,CAE7C,GADAJ,EAAUI,WAAY,EAClBJ,EAAUK,QAAS,CACrB,IAAIC,EAAYN,EAAUO,gBAE1B,IADAL,EAAOI,EAAUljB,OACZ6iB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB,GAAIK,EAAUL,GAAGO,GAAG7iB,EAAEgH,EACpB8b,EAA6BH,EAAUL,GAAGO,GAAG7iB,QAG7C,IADAwiB,EAAOG,EAAUL,GAAGO,GAAG7iB,EAAEP,OACpBO,EAAI,EAAGA,EAAIwiB,EAAMxiB,GAAK,EACrB2iB,EAAUL,GAAGO,GAAG7iB,EAAEA,GAAG+G,GACvB+b,EAA6BH,EAAUL,GAAGO,GAAG7iB,EAAEA,GAAG+G,EAAE,IAElD4b,EAAUL,GAAGO,GAAG7iB,EAAEA,GAAG7B,GACvB2kB,EAA6BH,EAAUL,GAAGO,GAAG7iB,EAAEA,GAAG7B,EAAE,GAKhF,CACuC,IAAjBkkB,EAAUU,IACZV,EAAUF,OAASa,EAAeX,EAAUY,MAAOb,GACnDF,EAAeG,EAAUF,OAAQC,IACP,IAAjBC,EAAUU,GACnBG,EAAeb,EAAUc,QACC,IAAjBd,EAAUU,IACnBK,EAAaf,EAEjC,CAEA,CAqCY,SAASW,EAAejM,EAAIqL,GAC1B,IAAIiB,EAZN,SAAkBtM,EAAIqL,GAGpB,IAFA,IAAIpb,EAAI,EACJ0S,EAAM0I,EAAM3iB,OACTuH,EAAI0S,GAAK,CACd,GAAI0I,EAAMpb,GAAG+P,KAAOA,EAClB,OAAOqL,EAAMpb,GAEfA,GAAK,CACrB,CACc,OAAO,IACrB,CAEyBsc,CAASvM,EAAIqL,GACxB,OAAIiB,EACGA,EAAKlB,OAAOoB,OAIVC,KAAKC,MAAMD,KAAKE,UAAUL,EAAKlB,UAHpCkB,EAAKlB,OAAOoB,QAAS,EACdF,EAAKlB,QAIT,IACrB,CACY,SAASe,EAAerH,GACtB,IAAI7U,EAEAsb,EACAC,EACJ,IAAKvb,EAHK6U,EAAIpc,OAGC,EAAGuH,GAAK,EAAGA,GAAK,EAC7B,GAAkB,OAAd6U,EAAI7U,GAAG+b,GACT,GAAIlH,EAAI7U,GAAG2c,GAAG3jB,EAAEgH,EACd8b,EAA6BjH,EAAI7U,GAAG2c,GAAG3jB,QAGvC,IADAuiB,EAAO1G,EAAI7U,GAAG2c,GAAG3jB,EAAEP,OACd6iB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACrBzG,EAAI7U,GAAG2c,GAAG3jB,EAAEsiB,GAAGvb,GACjB+b,EAA6BjH,EAAI7U,GAAG2c,GAAG3jB,EAAEsiB,GAAGvb,EAAE,IAE5C8U,EAAI7U,GAAG2c,GAAG3jB,EAAEsiB,GAAGnkB,GACjB2kB,EAA6BjH,EAAI7U,GAAG2c,GAAG3jB,EAAEsiB,GAAGnkB,EAAE,QAI7B,OAAd0d,EAAI7U,GAAG+b,IAChBG,EAAerH,EAAI7U,GAAG4c,GAGxC,CACY,SAASd,EAA6BrB,GACpC,IAAIza,EACA0S,EAAM+H,EAAKza,EAAEvH,OACjB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBya,EAAKza,EAAEA,GAAG,IAAMya,EAAKzY,EAAEhC,GAAG,GAC1Bya,EAAKza,EAAEA,GAAG,IAAMya,EAAKzY,EAAEhC,GAAG,GAC1Bya,EAAKtF,EAAEnV,GAAG,IAAMya,EAAKzY,EAAEhC,GAAG,GAC1Bya,EAAKtF,EAAEnV,GAAG,IAAMya,EAAKzY,EAAEhC,GAAG,EAE1C,CACY,SAAS6c,EAAaC,EAASC,GAC7B,IAAIC,EAAcD,EAAoBA,EAAkBxN,MAAM,KAAO,CAAC,IAAK,IAAK,KAChF,OAAIuN,EAAQ,GAAKE,EAAY,MAGzBA,EAAY,GAAKF,EAAQ,MAGzBA,EAAQ,GAAKE,EAAY,MAGzBA,EAAY,GAAKF,EAAQ,MAGzBA,EAAQ,GAAKE,EAAY,MAGzBA,EAAY,GAAKF,EAAQ,KAGtB,MACrB,CACY,IAoCMG,EApCFC,EAAY,WACd,IAAID,EAAiB,CAAC,EAAG,EAAG,IAC5B,SAASE,EAAgBC,GACvB,IAAIC,EAAeD,EAAUtd,EAAEZ,EAC/Bke,EAAUtd,EAAEZ,EAAI,CACdlG,EAAG,CAAC,CACF+G,EAAGsd,EACHvd,EAAG,IAGvB,CACc,SAASwd,EAAcnC,GACrB,IAAInb,EACA0S,EAAMyI,EAAO1iB,OACjB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACH,IAAjBmb,EAAOnb,GAAG+b,IACZoB,EAAgBhC,EAAOnb,GAG3C,CACc,OAAO,SAAUud,GACf,GAAIV,EAAaI,EAAgBM,EAAcvb,KAC7Csb,EAAcC,EAAcpC,QACxBoC,EAAcC,QAAQ,CACxB,IAAIxd,EACA0S,EAAM6K,EAAcC,OAAO/kB,OAC/B,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACpBud,EAAcC,OAAOxd,GAAGmb,QAC1BmC,EAAcC,EAAcC,OAAOxd,GAAGmb,OAG9D,CAEA,CACA,CAlC4B,GAmCZsC,GACER,EAAiB,CAAC,EAAG,EAAG,IACrB,SAAUM,GACf,GAAIA,EAAcG,QAAUb,EAAaI,EAAgBM,EAAcvb,GAAI,CACzE,IAAIhC,EACA0S,EAAM6K,EAAcG,MAAMjlB,OAC9B,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAAG,CAC3B,IAAI2d,EAAWJ,EAAcG,MAAM1d,GAC/B2d,EAASjT,MAAQiT,EAASjT,KAAKyR,SACjCD,EAAeyB,EAASjT,KAAKyR,QAC7BwB,EAASjT,KAAKkT,GAAK,EACnBD,EAASjT,KAAKzI,GAAK,MACnB0b,EAASjT,KAAKmT,GAAK,EACnBF,EAASjT,KAAKoT,GAAK,EACnBH,EAASjT,KAAKiS,GAAK,CACjBrd,EAAG,CACDtG,EAAG,CAAC,EAAG,GACP+kB,EAAG,GAELhe,EAAG,CACD/G,EAAG,CAAC,IAAK,KACT+kB,EAAG,GAELA,EAAG,CACD/kB,EAAG,CAAC,EAAG,GACP+kB,EAAG,GAELtF,EAAG,CACDzf,EAAG,EACH+kB,EAAG,GAEL5I,EAAG,CACDnc,EAAG,IACH+kB,EAAG,IAGFR,EAAcG,MAAM1d,GAAGF,IAC1B6d,EAASjT,KAAKyR,OAAOha,KAAK,CACxB4Z,GAAI,OAEN4B,EAASjT,KAAKyR,OAAO,GAAGS,GAAGza,KAAK,CAC9B7C,EAAG,CACDtG,EAAG,CAAC,EAAG,GACP+kB,EAAG,GAELhe,EAAG,CACD/G,EAAG,CAAC,IAAK,KACT+kB,EAAG,GAELA,EAAG,CACD/kB,EAAG,CAAC,EAAG,GACP+kB,EAAG,GAELtF,EAAG,CACDzf,EAAG,EACH+kB,EAAG,GAEL5I,EAAG,CACDnc,EAAG,IACH+kB,EAAG,GAELC,GAAI,CACFhlB,EAAG,EACH+kB,EAAG,GAELE,GAAI,CACFjlB,EAAG,EACH+kB,EAAG,GAELhC,GAAI,QAI9B,CACA,CACA,GAEgBmC,EAAsB,WACxB,IAAIjB,EAAiB,CAAC,EAAG,EAAG,IAC5B,SAASE,EAAgBC,GACvB,IAAIe,EAAWf,EAAUtd,EAAER,EACD,iBAAf6e,EAASJ,IAClBI,EAASJ,EAAI,CACXA,EAAG,EACH/kB,EAAGmlB,EAASJ,IAGU,iBAAfI,EAAS7e,IAClB6e,EAAS7e,EAAI,CACXye,EAAG,EACH/kB,EAAGmlB,EAAS7e,IAGU,iBAAf6e,EAAS1F,IAClB0F,EAAS1F,EAAI,CACXsF,EAAG,EACH/kB,EAAGmlB,EAAS1F,GAGhC,CACc,SAAS6E,EAAcnC,GACrB,IAAInb,EACA0S,EAAMyI,EAAO1iB,OACjB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACH,IAAjBmb,EAAOnb,GAAG+b,IACZoB,EAAgBhC,EAAOnb,GAG3C,CACc,OAAO,SAAUud,GACf,GAAIV,EAAaI,EAAgBM,EAAcvb,KAC7Csb,EAAcC,EAAcpC,QACxBoC,EAAcC,QAAQ,CACxB,IAAIxd,EACA0S,EAAM6K,EAAcC,OAAO/kB,OAC/B,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACpBud,EAAcC,OAAOxd,GAAGmb,QAC1BmC,EAAcC,EAAcC,OAAOxd,GAAGmb,OAG9D,CAEA,CACA,CA9CsC,GA+CtBiD,EAAc,WAChB,IAAInB,EAAiB,CAAC,EAAG,EAAG,GAC5B,SAASoB,EAAclC,GACrB,IAAInc,EAEAsb,EACAC,EAFA7I,EAAMyJ,EAAO1jB,OAGjB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB,GAAqB,OAAjBmc,EAAOnc,GAAG+b,GACZsC,EAAclC,EAAOnc,GAAG4c,SACnB,GAAqB,OAAjBT,EAAOnc,GAAG+b,IAAgC,OAAjBI,EAAOnc,GAAG+b,GAC5C,GAAII,EAAOnc,GAAGse,EAAEtlB,GAAKmjB,EAAOnc,GAAGse,EAAEtlB,EAAE,GAAGgH,EAEpC,IADAub,EAAOY,EAAOnc,GAAGse,EAAEtlB,EAAEP,OAChB6iB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACrBa,EAAOnc,GAAGse,EAAEtlB,EAAEsiB,GAAGvb,IACnBoc,EAAOnc,GAAGse,EAAEtlB,EAAEsiB,GAAGvb,EAAE,IAAM,IACzBoc,EAAOnc,GAAGse,EAAEtlB,EAAEsiB,GAAGvb,EAAE,IAAM,IACzBoc,EAAOnc,GAAGse,EAAEtlB,EAAEsiB,GAAGvb,EAAE,IAAM,IACzBoc,EAAOnc,GAAGse,EAAEtlB,EAAEsiB,GAAGvb,EAAE,IAAM,KAEvBoc,EAAOnc,GAAGse,EAAEtlB,EAAEsiB,GAAGnkB,IACnBglB,EAAOnc,GAAGse,EAAEtlB,EAAEsiB,GAAGnkB,EAAE,IAAM,IACzBglB,EAAOnc,GAAGse,EAAEtlB,EAAEsiB,GAAGnkB,EAAE,IAAM,IACzBglB,EAAOnc,GAAGse,EAAEtlB,EAAEsiB,GAAGnkB,EAAE,IAAM,IACzBglB,EAAOnc,GAAGse,EAAEtlB,EAAEsiB,GAAGnkB,EAAE,IAAM,UAI7BglB,EAAOnc,GAAGse,EAAEtlB,EAAE,IAAM,IACpBmjB,EAAOnc,GAAGse,EAAEtlB,EAAE,IAAM,IACpBmjB,EAAOnc,GAAGse,EAAEtlB,EAAE,IAAM,IACpBmjB,EAAOnc,GAAGse,EAAEtlB,EAAE,IAAM,GAI1C,CACc,SAASskB,EAAcnC,GACrB,IAAInb,EACA0S,EAAMyI,EAAO1iB,OACjB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACH,IAAjBmb,EAAOnb,GAAG+b,IACZsC,EAAclD,EAAOnb,GAAGmc,OAG5C,CACc,OAAO,SAAUoB,GACf,GAAIV,EAAaI,EAAgBM,EAAcvb,KAC7Csb,EAAcC,EAAcpC,QACxBoC,EAAcC,QAAQ,CACxB,IAAIxd,EACA0S,EAAM6K,EAAcC,OAAO/kB,OAC/B,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACpBud,EAAcC,OAAOxd,GAAGmb,QAC1BmC,EAAcC,EAAcC,OAAOxd,GAAGmb,OAG9D,CAEA,CACA,CA3D8B,GA4DdoD,EAAc,WAChB,IAAItB,EAAiB,CAAC,EAAG,EAAG,IAC5B,SAASuB,EAAsB3J,GAC7B,IAAI7U,EAEAsb,EACAC,EACJ,IAAKvb,EAHK6U,EAAIpc,OAGC,EAAGuH,GAAK,EAAGA,GAAK,EAC7B,GAAkB,OAAd6U,EAAI7U,GAAG+b,GACT,GAAIlH,EAAI7U,GAAG2c,GAAG3jB,EAAEgH,EACd6U,EAAI7U,GAAG2c,GAAG3jB,EAAEslB,EAAIzJ,EAAI7U,GAAGye,YAGvB,IADAlD,EAAO1G,EAAI7U,GAAG2c,GAAG3jB,EAAEP,OACd6iB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACrBzG,EAAI7U,GAAG2c,GAAG3jB,EAAEsiB,GAAGvb,IACjB8U,EAAI7U,GAAG2c,GAAG3jB,EAAEsiB,GAAGvb,EAAE,GAAGue,EAAIzJ,EAAI7U,GAAGye,QAE7B5J,EAAI7U,GAAG2c,GAAG3jB,EAAEsiB,GAAGnkB,IACjB0d,EAAI7U,GAAG2c,GAAG3jB,EAAEsiB,GAAGnkB,EAAE,GAAGmnB,EAAIzJ,EAAI7U,GAAGye,YAId,OAAd5J,EAAI7U,GAAG+b,IAChByC,EAAsB3J,EAAI7U,GAAG4c,GAGjD,CACc,SAASU,EAAcnC,GACrB,IAAIE,EACArb,EAEAsb,EACAC,EACAviB,EACAwiB,EAJA9I,EAAMyI,EAAO1iB,OAKjB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAAG,CAE3B,IADAqb,EAAYF,EAAOnb,IACL0b,QAAS,CACrB,IAAIC,EAAYN,EAAUO,gBAE1B,IADAL,EAAOI,EAAUljB,OACZ6iB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB,GAAIK,EAAUL,GAAGO,GAAG7iB,EAAEgH,EACpB2b,EAAUL,GAAGO,GAAG7iB,EAAEslB,EAAI3C,EAAUL,GAAGoD,QAGnC,IADAlD,EAAOG,EAAUL,GAAGO,GAAG7iB,EAAEP,OACpBO,EAAI,EAAGA,EAAIwiB,EAAMxiB,GAAK,EACrB2iB,EAAUL,GAAGO,GAAG7iB,EAAEA,GAAG+G,IACvB4b,EAAUL,GAAGO,GAAG7iB,EAAEA,GAAG+G,EAAE,GAAGue,EAAI3C,EAAUL,GAAGoD,IAEzC/C,EAAUL,GAAGO,GAAG7iB,EAAEA,GAAG7B,IACvBwkB,EAAUL,GAAGO,GAAG7iB,EAAEA,GAAG7B,EAAE,GAAGmnB,EAAI3C,EAAUL,GAAGoD,GAKvE,CACuC,IAAjBrD,EAAUU,IACZyC,EAAsBnD,EAAUc,OAEpD,CACA,CACc,OAAO,SAAUoB,GACf,GAAIV,EAAaI,EAAgBM,EAAcvb,KAC7Csb,EAAcC,EAAcpC,QACxBoC,EAAcC,QAAQ,CACxB,IAAIxd,EACA0S,EAAM6K,EAAcC,OAAO/kB,OAC/B,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACpBud,EAAcC,OAAOxd,GAAGmb,QAC1BmC,EAAcC,EAAcC,OAAOxd,GAAGmb,OAG9D,CAEA,CACA,CA3E8B,GAyFlB,SAASiB,EAAa1R,GACI,IAApBA,EAAK5K,EAAEie,EAAEtlB,QAAyBiS,EAAK5K,EAAER,CAG3D,CACY,IAAIqf,EAAW,CACfA,aAnBA,SAAsBpB,GAChBA,EAAcqB,aAGlBR,EAAYb,GACZL,EAAUK,GACVE,EAAWF,GACXW,EAAoBX,GACpBgB,EAAYhB,GACZrC,EAAeqC,EAAcpC,OAAQoC,EAAcC,QAxZrD,SAAuBE,EAAOF,GAC5B,GAAIE,EAAO,CACT,IAAI1d,EAAI,EACJ0S,EAAMgL,EAAMjlB,OAChB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACL,IAAf0d,EAAM1d,GAAGF,IAEX4d,EAAM1d,GAAG0K,KAAKyQ,OAASa,EAAe0B,EAAM1d,GAAG0K,KAAKuR,MAAOuB,GAa3DtC,EAAewC,EAAM1d,GAAG0K,KAAKyQ,OAAQqC,GAGzD,CACA,CAiYcqB,CAActB,EAAcG,MAAOH,EAAcC,QACjDD,EAAcqB,YAAa,EACzC,GAaY,OALAD,EAASP,YAAcA,EACvBO,EAASlB,WAAaA,EACtBkB,EAAST,oBAAsBA,EAC/BS,EAASJ,YAAcA,EACvBI,EAASzD,eAAiBA,EACnByD,CACnB,CAEsCG,IAEvBpE,EAAYqE,cACfrE,EAAYqE,YAAc,WACxB,SAASC,EAAeC,GAGtB,IAAIC,EAAoBD,EAAIE,kBAAkB,gBAC9C,OAAID,GAA0C,SAArBD,EAAIG,mBAA2BF,EAAkBG,QAAQ,SAG9EJ,EAAIK,UAAwC,WAA5BtF,UAAUiF,EAAIK,UAFzBL,EAAIK,SAKTL,EAAIK,UAAoC,iBAAjBL,EAAIK,SACtB9C,KAAKC,MAAMwC,EAAIK,UAEpBL,EAAIM,aACC/C,KAAKC,MAAMwC,EAAIM,cAEjB,IACvB,CAmCc,MAAO,CACLC,KAnCF,SAAmB/E,EAAMgF,EAAUC,EAAUC,GAC3C,IAAIL,EACAL,EAAM,IAAIW,eAEd,IAEEX,EAAIG,aAAe,MACrC,CAAkB,MAAOS,GAAK,CACdZ,EAAIa,mBAAqB,WACvB,GAAuB,IAAnBb,EAAIc,WACN,GAAmB,MAAfd,EAAIe,OACNV,EAAWN,EAAeC,GAC1BS,EAASJ,QAET,IACEA,EAAWN,EAAeC,GAC1BS,EAASJ,EACjC,CAAwB,MAAOO,GACHF,GACFA,EAAcE,EAExC,CAGA,EACgB,IAEEZ,EAAIgB,KAAK,CAAC,IAAK,IAAK,KAAKhnB,KAAK,IAAKwhB,GAAM,EAC3D,CAAkB,MAAOvkB,GAEP+oB,EAAIgB,KAAK,CAAC,IAAK,IAAK,KAAKhnB,KAAK,IAAKwmB,EAAW,IAAMhF,GAAM,EAC5E,CACgBwE,EAAIiB,MACpB,EAIA,CAxDsC,IA0DR,kBAAhB/oB,EAAEuT,KAAKlW,KACTkmB,EAAYqE,YAAYS,KAAKroB,EAAEuT,KAAK+P,KAAMtjB,EAAEuT,KAAK+U,SAAU,SAAU/U,GACnEgQ,EAAYT,YAAYkG,aAAazV,GACrCgQ,EAAYF,YAAY,CACtBzK,GAAI5Y,EAAEuT,KAAKqF,GACXqQ,QAAS1V,EACTsV,OAAQ,WAExB,EAAe,WACDtF,EAAYF,YAAY,CACtBzK,GAAI5Y,EAAEuT,KAAKqF,GACXiQ,OAAQ,SAExB,QACiB,GAAoB,aAAhB7oB,EAAEuT,KAAKlW,KAAqB,CACrC,IAAI6rB,EAAYlpB,EAAEuT,KAAK2V,UACvB3F,EAAYT,YAAYkG,aAAaE,GACrC3F,EAAYF,YAAY,CACtBzK,GAAI5Y,EAAEuT,KAAKqF,GACXqQ,QAASC,EACTL,OAAQ,WAEtB,KAAqC,aAAhB7oB,EAAEuT,KAAKlW,MAChBkmB,EAAYqE,YAAYS,KAAKroB,EAAEuT,KAAK+P,KAAMtjB,EAAEuT,KAAK+U,SAAU,SAAU/U,GACnEgQ,EAAYF,YAAY,CACtBzK,GAAI5Y,EAAEuT,KAAKqF,GACXqQ,QAAS1V,EACTsV,OAAQ,WAExB,EAAe,WACDtF,EAAYF,YAAY,CACtBzK,GAAI5Y,EAAEuT,KAAKqF,GACXiQ,OAAQ,SAExB,EAEA,IACuBzF,UAAY,SAAU+F,GACnC,IAAI5V,EAAO4V,EAAM5V,KACbqF,EAAKrF,EAAKqF,GACV3a,EAAUilB,EAAUtK,GACxBsK,EAAUtK,GAAM,KACI,YAAhBrF,EAAKsV,OACP5qB,EAAQmrB,WAAW7V,EAAK0V,SACfhrB,EAAQorB,SACjBprB,EAAQorB,SAEpB,EAEA,CACI,SAASC,EAAcF,EAAYC,GAEjC,IAAIzQ,EAAK,cADTqK,GAAc,GAMd,OAJAC,EAAUtK,GAAM,CACdwQ,WAAYA,EACZC,QAASA,GAEJzQ,CACb,CA8BI,MAAO,CACL2Q,cA9BF,SAAuBjG,EAAM8F,EAAYC,GACvC7F,IACA,IAAIgG,EAAYF,EAAcF,EAAYC,GAC1CrG,EAAeK,YAAY,CACzBhmB,KAAM,gBACNimB,KAAMA,EACNgF,SAAUrV,OAAOwW,SAASC,OAASzW,OAAOwW,SAASzR,SACnDY,GAAI4Q,GAEZ,EAsBMG,SArBF,SAAkBrG,EAAM8F,EAAYC,GAClC7F,IACA,IAAIgG,EAAYF,EAAcF,EAAYC,GAC1CrG,EAAeK,YAAY,CACzBhmB,KAAM,WACNimB,KAAMA,EACNgF,SAAUrV,OAAOwW,SAASC,OAASzW,OAAOwW,SAASzR,SACnDY,GAAI4Q,GAEZ,EAaMI,kBAZF,SAA2BC,EAAMT,EAAYC,GAC3C7F,IACA,IAAIgG,EAAYF,EAAcF,EAAYC,GAC1CrG,EAAeK,YAAY,CACzBhmB,KAAM,WACN6rB,UAAWW,EACXjR,GAAI4Q,GAEZ,EAMA,CAnpBoB,GAqpBdM,eAAiB,WACnB,IAAIC,EAAa,WACf,IAAIC,EAAS9O,UAAU,UACvB8O,EAAOnkB,MAAQ,EACfmkB,EAAOlkB,OAAS,EAChB,IAAImkB,EAAMD,EAAOE,WAAW,MAG5B,OAFAD,EAAIE,UAAY,gBAChBF,EAAIG,SAAS,EAAG,EAAG,EAAG,GACfJ,CACb,CARqB,GASjB,SAASK,IACP1pB,KAAK2pB,cAAgB,EACjB3pB,KAAK2pB,eAAiB3pB,KAAK4pB,aAAe5pB,KAAK6pB,sBAAwB7pB,KAAK8pB,eAC1E9pB,KAAK+pB,gBACP/pB,KAAK+pB,eAAe,KAG9B,CACI,SAASC,IACPhqB,KAAK6pB,qBAAuB,EACxB7pB,KAAK2pB,eAAiB3pB,KAAK4pB,aAAe5pB,KAAK6pB,sBAAwB7pB,KAAK8pB,eAC1E9pB,KAAK+pB,gBACP/pB,KAAK+pB,eAAe,KAG9B,CACI,SAASE,EAAcC,EAAWC,EAAYC,GAC5C,IAAIzH,EAAO,GACX,GAAIuH,EAAU7qB,EACZsjB,EAAOuH,EAAU1iB,OACZ,GAAI2iB,EAAY,CACrB,IAAIE,EAAYH,EAAU1iB,GACW,IAAjC6iB,EAAU9C,QAAQ,aACpB8C,EAAYA,EAAU5S,MAAM,KAAK,IAEnCkL,EAAOwH,EAAaE,CAC5B,MACQ1H,EAAOyH,EACPzH,GAAQuH,EAAUI,EAAIJ,EAAUI,EAAI,GACpC3H,GAAQuH,EAAU1iB,EAEpB,OAAOmb,CACb,CACI,SAAS4H,EAAgBC,GACvB,IAAIhK,EAAS,EACTiK,EAAaC,YAAY,YACjBF,EAAIG,UACNzlB,OAASsb,EAAS,OACxBxgB,KAAK4qB,eACLC,cAAcJ,IAEhBjK,GAAU,CAClB,EAAQpd,KAAKpD,MAAO,GACpB,CAyCI,SAAS8qB,EAAkBlY,GACzB,IAAImY,EAAK,CACPb,UAAWtX,GAET+P,EAAOsH,EAAcrX,EAAM5S,KAAKmqB,WAAYnqB,KAAK2iB,MAQrD,OAPAR,YAAY6G,SAASrG,EAAM,SAAUqI,GACnCD,EAAGP,IAAMQ,EACThrB,KAAKirB,gBACb,EAAQ7nB,KAAKpD,MAAO,WACZ+qB,EAAGP,IAAM,CAAA,EACTxqB,KAAKirB,gBACb,EAAQ7nB,KAAKpD,OACA+qB,CACb,CAoDI,SAASG,IACPlrB,KAAK4qB,aAAelB,EAAYtmB,KAAKpD,MACrCA,KAAKirB,eAAiBjB,EAAc5mB,KAAKpD,MACzCA,KAAKuqB,gBAAkBA,EAAgBnnB,KAAKpD,MAC5CA,KAAK8qB,kBAAoBA,EAAkB1nB,KAAKpD,MAChDA,KAAKmqB,WAAa,GAClBnqB,KAAK2iB,KAAO,GACZ3iB,KAAK4pB,YAAc,EACnB5pB,KAAK8pB,cAAgB,EACrB9pB,KAAK2pB,aAAe,EACpB3pB,KAAK6pB,oBAAsB,EAC3B7pB,KAAK+pB,eAAiB,KACtB/pB,KAAKyR,OAAS,EACpB,CAeI,OAdAyZ,EAAsBroB,UAAY,CAChCsoB,WAlEF,SAAoBzF,EAAQ0F,GAE1B,IAAIljB,EADJlI,KAAK+pB,eAAiBqB,EAEtB,IAAIxQ,EAAM8K,EAAO/kB,OACjB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACnBwd,EAAOxd,GAAGmb,SACRqC,EAAOxd,GAAGF,GAAqB,QAAhB0d,EAAOxd,GAAGF,EAGH,IAAhB0d,EAAOxd,GAAGF,IACnBhI,KAAK8pB,eAAiB,EACtB9pB,KAAKyR,OAAOpH,KAAKrK,KAAK8qB,kBAAkBpF,EAAOxd,OAJ/ClI,KAAK4pB,aAAe,EACpB5pB,KAAKyR,OAAOpH,KAAKrK,KAAKqrB,iBAAiB3F,EAAOxd,MAO1D,EAoDMojB,cAhDF,SAAuB3I,GACrB3iB,KAAKmqB,WAAaxH,GAAQ,EAChC,EA+CM4I,QApDF,SAAiB5I,GACf3iB,KAAK2iB,KAAOA,GAAQ,EAC1B,EAmDM6I,aAhCF,WACE,OAAOxrB,KAAK4pB,cAAgB5pB,KAAK2pB,YACvC,EA+BM8B,eA9BF,WACE,OAAOzrB,KAAK8pB,gBAAkB9pB,KAAK6pB,mBACzC,EA6BM6B,QAtCF,WACE1rB,KAAK+pB,eAAiB,KACtB/pB,KAAKyR,OAAO9Q,OAAS,CAC3B,EAoCMgrB,SAlDF,SAAkBzB,GAGhB,IAFA,IAAIhiB,EAAI,EACJ0S,EAAM5a,KAAKyR,OAAO9Q,OACfuH,EAAI0S,GAAK,CACd,GAAI5a,KAAKyR,OAAOvJ,GAAGgiB,YAAcA,EAC/B,OAAOlqB,KAAKyR,OAAOvJ,GAAGsiB,IAExBtiB,GAAK,CACb,CACM,OAAO,IACb,EAyCM0jB,cAvGF,SAAuB1B,GACrB,IAAIvH,EAAOsH,EAAcC,EAAWlqB,KAAKmqB,WAAYnqB,KAAK2iB,MACtD6H,EAAMjQ,UAAU,OACpBiQ,EAAIqB,YAAc,YAClBrB,EAAIsB,iBAAiB,OAAQ9rB,KAAK4qB,cAAc,GAChDJ,EAAIsB,iBAAiB,QAAS,WAC5Bf,EAAGP,IAAMpB,EACTppB,KAAK4qB,cACb,EAAQxnB,KAAKpD,OAAO,GACdwqB,EAAI1Y,IAAM6Q,EACV,IAAIoI,EAAK,CACPP,IAAKA,EACLN,UAAWA,GAEb,OAAOa,CACb,EAyFMgB,gBAhIF,SAAyB7B,GACvB,IAAIvH,EAAOsH,EAAcC,EAAWlqB,KAAKmqB,WAAYnqB,KAAK2iB,MACtD6H,EAAMxI,SAAS,SACftE,SACF1d,KAAKuqB,gBAAgBC,GAErBA,EAAIsB,iBAAiB,OAAQ9rB,KAAK4qB,cAAc,GAElDJ,EAAIsB,iBAAiB,QAAS,WAC5Bf,EAAGP,IAAMpB,EACTppB,KAAK4qB,cACb,EAAQxnB,KAAKpD,OAAO,GACdwqB,EAAIwB,eAAe,+BAAgC,OAAQrJ,GACvD3iB,KAAKisB,eAAeC,OACtBlsB,KAAKisB,eAAeC,OAAO1B,GAE3BxqB,KAAKisB,eAAehc,YAAYua,GAElC,IAAIO,EAAK,CACPP,IAAKA,EACLN,UAAWA,GAEb,OAAOa,CACb,EA0GMrB,YAAaA,EACbM,cAAeA,EACfmC,aAlCF,SAAsBzvB,EAAM0vB,GACb,QAAT1vB,GACFsD,KAAKisB,eAAiBG,EACtBpsB,KAAKqrB,iBAAmBrrB,KAAK+rB,gBAAgB3oB,KAAKpD,OAElDA,KAAKqrB,iBAAmBrrB,KAAK4rB,cAAcxoB,KAAKpD,KAExD,GA6BWkrB,CACX,CA5LuB,GA8LrB,SAASmB,YAAY,CACrBA,UAAUxpB,UAAY,CACpBypB,aAAc,SAAsBC,EAAWC,GAC7C,GAAIxsB,KAAKysB,KAAKF,GAEZ,IADA,IAAIG,EAAY1sB,KAAKysB,KAAKF,GACjBrkB,EAAI,EAAGA,EAAIwkB,EAAU/rB,OAAQuH,GAAK,EACzCwkB,EAAUxkB,GAAGskB,EAGvB,EACIV,iBAAkB,SAA0BS,EAAW3E,GAKrD,OAJK5nB,KAAKysB,KAAKF,KACbvsB,KAAKysB,KAAKF,GAAa,IAEzBvsB,KAAKysB,KAAKF,GAAWliB,KAAKud,GACnB,WACL5nB,KAAK2sB,oBAAoBJ,EAAW3E,EAC5C,EAAQxkB,KAAKpD,KACb,EACI2sB,oBAAqB,SAA6BJ,EAAW3E,GAC3D,GAAKA,GAEE,GAAI5nB,KAAKysB,KAAKF,GAAY,CAG/B,IAFA,IAAIrkB,EAAI,EACJ0S,EAAM5a,KAAKysB,KAAKF,GAAW5rB,OACxBuH,EAAI0S,GACL5a,KAAKysB,KAAKF,GAAWrkB,KAAO0f,IAC9B5nB,KAAKysB,KAAKF,GAAWK,OAAO1kB,EAAG,GAC/BA,GAAK,EACL0S,GAAO,GAET1S,GAAK,EAEFlI,KAAKysB,KAAKF,GAAW5rB,SACxBX,KAAKysB,KAAKF,GAAa,KAEjC,OAfQvsB,KAAKysB,KAAKF,GAAa,IAgB/B,GAGE,IAAIM,aAAe,WACjB,SAASC,EAAkBxE,GAKzB,IAJA,IAEIyE,EAFAC,EAAQ1E,EAAQ7Q,MAAM,QACtBzW,EAAO,CAAA,EAEPisB,EAAY,EACP/kB,EAAI,EAAGA,EAAI8kB,EAAMrsB,OAAQuH,GAAK,EAEjB,KADpB6kB,EAAOC,EAAM9kB,GAAGuP,MAAM,MACb9W,SACPK,EAAK+rB,EAAK,IAAMA,EAAK,GAAGG,OACxBD,GAAa,GAGjB,GAAkB,IAAdA,EACF,MAAM,IAAIptB,MAEZ,OAAOmB,CACb,CACI,OAAO,SAAUmsB,GAEf,IADA,IAAIC,EAAU,GACLllB,EAAI,EAAGA,EAAIilB,EAASxsB,OAAQuH,GAAK,EAAG,CAC3C,IAAImlB,EAAUF,EAASjlB,GACnBolB,EAAa,CACfC,KAAMF,EAAQG,GACdC,SAAUJ,EAAQK,IAEpB,IACEJ,EAAWhF,QAAU5D,KAAKC,MAAMwI,EAASjlB,GAAGylB,GACtD,CAAU,MAAOlkB,GACP,IACE6jB,EAAWhF,QAAUwE,EAAkBK,EAASjlB,GAAGylB,GAC/D,CAAY,MAAO/lB,GACP0lB,EAAWhF,QAAU,CACnB1qB,KAAMuvB,EAASjlB,GAAGylB,GAEhC,CACA,CACQP,EAAQ/iB,KAAKijB,EACrB,CACM,OAAOF,CACb,CACA,CAzCqB,GA2CfQ,iBAAmB,WACrB,SAASC,EAAoBtJ,GAC3BvkB,KAAK8tB,aAAazjB,KAAKka,EAC7B,CACI,OAAO,WACL,SAASwJ,EAAqBnwB,GAG5B,IAFA,IAAIsK,EAAI,EACJ0S,EAAM5a,KAAK8tB,aAAantB,OACrBuH,EAAI0S,GAAK,CACd,GAAI5a,KAAK8tB,aAAa5lB,GAAG0K,MAAQ5S,KAAK8tB,aAAa5lB,GAAG0K,KAAKob,KAAOpwB,EAIhE,OAHIoC,KAAK8tB,aAAa5lB,GAAG+lB,cAAgBjuB,KAAK8tB,aAAa5lB,GAAG0K,KAAKsb,IACjEluB,KAAK8tB,aAAa5lB,GAAG+lB,aAAajuB,KAAKmuB,cAElCnuB,KAAK8tB,aAAa5lB,GAAGkmB,cAE9BlmB,GAAK,CACf,CACQ,OAAO,IACf,CAIM,OAHA6lB,EAAqBD,aAAe,GACpCC,EAAqBI,aAAe,EACpCJ,EAAqBF,oBAAsBA,EACpCE,CACb,CACA,CAxByB,GA0BnBM,UAAY,CAAA,EACZC,iBAAmB,SAA0BzxB,EAAKqC,GACpDmvB,UAAUxxB,GAAOqC,CACrB,EACE,SAASqvB,YAAY1xB,GACnB,OAAOwxB,UAAUxxB,EACrB,CACE,SAAS2xB,wBAEP,GAAIH,UAAUhF,OACZ,MAAO,SAGT,IAAK,IAAIxsB,KAAOwxB,UACd,GAAIA,UAAUxxB,GACZ,OAAOA,EAGX,MAAO,EACX,CAEE,SAAS4xB,UAAUpR,GAAgC,OAAOoR,UAAY,mBAAqBnyB,QAAU,iBAAmBA,OAAO2N,SAAW,SAAUoT,GAAK,cAAcA,CAAE,EAAK,SAAUA,GAAK,OAAOA,GAAK,mBAAqB/gB,QAAU+gB,EAAE5d,cAAgBnD,QAAU+gB,IAAM/gB,OAAOuG,UAAY,gBAAkBwa,GAAMoR,UAAUpR,EAAG,CAClU,IAAIqR,cAAgB,WAClB1uB,KAAKysB,KAAO,GACZzsB,KAAKpC,KAAO,GACZoC,KAAK2iB,KAAO,GACZ3iB,KAAK2uB,UAAW,EAChB3uB,KAAKmuB,aAAe,EACpBnuB,KAAK4uB,gBAAkB,EACvB5uB,KAAKigB,WAAa,EAClBjgB,KAAKkgB,YAAc,EACnBlgB,KAAK6uB,UAAY,EACjB7uB,KAAK8uB,UAAY,EACjB9uB,KAAK+uB,UAAY,EACjB/uB,KAAKgvB,cAAgB,EACrBhvB,KAAKivB,UAAY,EACjBjvB,KAAKylB,cAAgB,CAAA,EACrBzlB,KAAK0lB,OAAS,GACd1lB,KAAKkvB,UAAW,EAChBlvB,KAAKsY,UAAW,EAChBtY,KAAK0Y,MAAO,EACZ1Y,KAAKmvB,SAAW,KAChBnvB,KAAKovB,YAAc7O,kBACnBvgB,KAAKmqB,WAAa,GAClBnqB,KAAKqvB,cAAgB,EACrBrvB,KAAKsvB,WAAa,EAClBtvB,KAAKuvB,kBAAoB/N,qBACzBxhB,KAAKwvB,SAAW,GAChBxvB,KAAKyvB,OAAQ,EACbzvB,KAAK0vB,gBAAiB,EACtB1vB,KAAK2vB,iBAAmB/B,mBACxB5tB,KAAK4vB,eAAiB,IAAIzG,eAC1BnpB,KAAK6vB,gBAAkB3U,yBACvBlb,KAAKotB,QAAU,GACfptB,KAAK8vB,gBAAkB9vB,KAAK8vB,gBAAgB1sB,KAAKpD,MACjDA,KAAK+vB,aAAe/vB,KAAK+vB,aAAa3sB,KAAKpD,MAC3CA,KAAKgwB,kBAAoBhwB,KAAKgwB,kBAAkB5sB,KAAKpD,MACrDA,KAAKiwB,gBAAkB,IAAI1Q,kBAAkB,aAAc,EAAG,EAAG,GACjEvf,KAAKud,kBAAoBmE,sBAC7B,EACElH,gBAAgB,CAAC6R,WAAYqC,eAC7BA,cAAc7rB,UAAUqtB,UAAY,SAAUC,IACxCA,EAAOC,SAAWD,EAAOE,aAC3BrwB,KAAKowB,QAAUD,EAAOC,SAAWD,EAAOE,WAE1C,IAAIC,EAAW,MACXH,EAAOG,SACTA,EAAWH,EAAOG,SACTH,EAAOhB,WAChBmB,EAAWH,EAAOhB,UAEpB,IAAIoB,EAAgBhC,YAAY+B,GAChCtwB,KAAKmvB,SAAW,IAAIoB,EAAcvwB,KAAMmwB,EAAOK,kBAC/CxwB,KAAK4vB,eAAezD,aAAamE,EAAUtwB,KAAKmvB,SAASsB,WAAWC,MACpE1wB,KAAKmvB,SAASwB,oBAAoB3wB,KAAK2vB,kBACvC3vB,KAAKswB,SAAWA,EACI,KAAhBH,EAAOzX,MAA+B,OAAhByX,EAAOzX,WAAiCrS,IAAhB8pB,EAAOzX,OAAsC,IAAhByX,EAAOzX,KACpF1Y,KAAK0Y,MAAO,GACa,IAAhByX,EAAOzX,KAChB1Y,KAAK0Y,MAAO,EAEZ1Y,KAAK0Y,KAAOkY,SAAST,EAAOzX,KAAM,IAEpC1Y,KAAKsY,WAAW,aAAc6X,IAASA,EAAO7X,SAC9CtY,KAAKpC,KAAOuyB,EAAOvyB,KAAOuyB,EAAOvyB,KAAO,GACxCoC,KAAK6wB,kBAAmBhwB,OAAOgC,UAAU9B,eAAerB,KAAKywB,EAAQ,qBAAsBA,EAAOU,iBAClG7wB,KAAKmqB,WAAagG,EAAOhG,WACzBnqB,KAAK8wB,eAAiBX,EAAOW,eACzBX,EAAO/U,cACTpb,KAAK6vB,gBAAgBtT,gBAAgB4T,EAAO/U,cAE1C+U,EAAO1K,cACTzlB,KAAK+wB,eAAeZ,EAAO1K,eAClB0K,EAAOxN,QACsB,IAAlCwN,EAAOxN,KAAKqO,YAAY,MAC1BhxB,KAAK2iB,KAAOwN,EAAOxN,KAAKsO,OAAO,EAAGd,EAAOxN,KAAKqO,YAAY,MAAQ,GAElEhxB,KAAK2iB,KAAOwN,EAAOxN,KAAKsO,OAAO,EAAGd,EAAOxN,KAAKqO,YAAY,KAAO,GAEnEhxB,KAAKkxB,SAAWf,EAAOxN,KAAKsO,OAAOd,EAAOxN,KAAKqO,YAAY,KAAO,GAClEhxB,KAAKkxB,SAAWlxB,KAAKkxB,SAASD,OAAO,EAAGjxB,KAAKkxB,SAASF,YAAY,UAClE7O,YAAYyG,cAAcuH,EAAOxN,KAAM3iB,KAAK8vB,gBAAiB9vB,KAAK+vB,cAExE,EACErB,cAAc7rB,UAAUktB,aAAe,WACrC/vB,KAAKmxB,QAAQ,cACjB,EACEzC,cAAc7rB,UAAUkuB,eAAiB,SAAUne,GACjDuP,YAAY8G,kBAAkBrW,EAAM5S,KAAK8vB,gBAC7C,EACEpB,cAAc7rB,UAAUuuB,QAAU,SAAUhB,EAAS3K,GAC/CA,GAC+B,WAA7BgJ,UAAUhJ,KACZA,EAAgBf,KAAKC,MAAMc,IAG/B,IAAI0K,EAAS,CACXC,QAASA,EACT3K,cAAeA,GAEb4L,EAAoBjB,EAAQkB,WAChCnB,EAAOxN,KAAO0O,EAAkBE,aAAa,uBAC3CF,EAAkBE,aAAa,uBAAuBryB,MAAQmyB,EAAkBE,aAAa,gBAC7FF,EAAkBE,aAAa,gBAAgBryB,MAAQmyB,EAAkBE,aAAa,WAAaF,EAAkBE,aAAa,WAAWryB,MAAQ,GACvJixB,EAAOG,SAAWe,EAAkBE,aAAa,kBAC/CF,EAAkBE,aAAa,kBAAkBryB,MAAQmyB,EAAkBE,aAAa,gBACxFF,EAAkBE,aAAa,gBAAgBryB,MAAQmyB,EAAkBE,aAAa,WACtFF,EAAkBE,aAAa,WAAWryB,MAAQmyB,EAAkBE,aAAa,oBACjFF,EAAkBE,aAAa,oBAAoBryB,MAAQmyB,EAAkBE,aAAa,eAAiBF,EAAkBE,aAAa,eAAeryB,MAAQsvB,yBAA2B,SAC9L,IAAI9V,EAAO2Y,EAAkBE,aAAa,kBACxCF,EAAkBE,aAAa,kBAAkBryB,MAAQmyB,EAAkBE,aAAa,gBACxFF,EAAkBE,aAAa,gBAAgBryB,MAAQmyB,EAAkBE,aAAa,WAAaF,EAAkBE,aAAa,WAAWryB,MAAQ,GAC1I,UAATwZ,EACFyX,EAAOzX,MAAO,EACI,SAATA,EACTyX,EAAOzX,MAAO,EACI,KAATA,IACTyX,EAAOzX,KAAOkY,SAASlY,EAAM,KAE/B,IAAIJ,EAAW+Y,EAAkBE,aAAa,sBAC5CF,EAAkBE,aAAa,sBAAsBryB,MAAQmyB,EAAkBE,aAAa,oBAC5FF,EAAkBE,aAAa,oBAAoBryB,OAAQmyB,EAAkBE,aAAa,gBAAiBF,EAAkBE,aAAa,eAAeryB,MAC3JixB,EAAO7X,SAAwB,UAAbA,EAClB6X,EAAOvyB,KAAOyzB,EAAkBE,aAAa,aAC3CF,EAAkBE,aAAa,aAAaryB,MAAQmyB,EAAkBE,aAAa,gBACnFF,EAAkBE,aAAa,gBAAgBryB,MAAQmyB,EAAkBE,aAAa,WAAaF,EAAkBE,aAAa,WAAWryB,MAAQ,GAIrI,WAHFmyB,EAAkBE,aAAa,uBAC7CF,EAAkBE,aAAa,uBAAuBryB,MAAQmyB,EAAkBE,aAAa,qBAC7FF,EAAkBE,aAAa,qBAAqBryB,MAAQmyB,EAAkBE,aAAa,gBAAkBF,EAAkBE,aAAa,gBAAgBryB,MAAQ,MAEpKixB,EAAOqB,WAAY,GAEhBrB,EAAOxN,KAGV3iB,KAAKkwB,UAAUC,GAFfnwB,KAAKmxB,QAAQ,UAInB,EACEzC,cAAc7rB,UAAU4uB,cAAgB,SAAU7e,GAC5CA,EAAKzI,GAAKnK,KAAKylB,cAActb,KAC/BnK,KAAKylB,cAActb,GAAKyI,EAAKzI,GAC7BnK,KAAKkgB,YAAc7M,KAAK2K,MAAMpL,EAAKzI,GAAKnK,KAAKylB,cAAcK,KAE7D,IACI5d,EAGAsb,EAJAH,EAASrjB,KAAKylB,cAAcpC,OAE5BzI,EAAMyI,EAAO1iB,OACb+wB,EAAY9e,EAAKyQ,OAEjBI,EAAOiO,EAAU/wB,OACrB,IAAK6iB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAEzB,IADAtb,EAAI,EACGA,EAAI0S,GAAK,CACd,GAAIyI,EAAOnb,GAAG+P,KAAOyZ,EAAUlO,GAAGvL,GAAI,CACpCoL,EAAOnb,GAAKwpB,EAAUlO,GACtB,KACV,CACQtb,GAAK,CACb,CAMI,IAJI0K,EAAKgT,OAAShT,EAAK+e,SACrB3xB,KAAKmvB,SAASsB,WAAWmB,YAAYC,SAASjf,EAAKgT,OACnD5lB,KAAKmvB,SAASsB,WAAWmB,YAAYE,SAASlf,EAAK+e,MAAO3xB,KAAKmvB,SAASsB,WAAWC,OAEjF9d,EAAK8S,OAEP,IADA9K,EAAMhI,EAAK8S,OAAO/kB,OACbuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAKylB,cAAcC,OAAOrb,KAAKuI,EAAK8S,OAAOxd,IAG/ClI,KAAKylB,cAAcqB,YAAa,EAChC3E,YAAY8G,kBAAkBjpB,KAAKylB,cAAezlB,KAAKgwB,kBAC3D,EACEtB,cAAc7rB,UAAUmtB,kBAAoB,SAAUpd,GACpD5S,KAAKylB,cAAgB7S,EACrB,IAAI2K,EAAoBmE,uBACpBnE,GACFA,EAAkBwU,gBAAgB/xB,MAEpCA,KAAKgyB,iBACT,EACEtD,cAAc7rB,UAAUmvB,gBAAkB,WACxC,IAAIxC,EAAWxvB,KAAKylB,cAAc+J,SAClC,IAAKA,GAAgC,IAApBA,EAAS7uB,SAAiBX,KAAK6wB,iBAG9C,OAFA7wB,KAAKmxB,QAAQ,mBACbnxB,KAAKqvB,cAAgBrvB,KAAKkgB,aAG5B,IAAI+R,EAAUzC,EAAS0C,QACvBlyB,KAAKqvB,cAAgB4C,EAAQ1E,KAAOvtB,KAAK6uB,UACzC,IAAIsD,EAAcnyB,KAAK2iB,KAAO3iB,KAAKkxB,SAAW,IAAMlxB,KAAKsvB,WAAa,QACtEtvB,KAAKsvB,YAAc,EACnBnN,YAAY6G,SAASmJ,EAAanyB,KAAKyxB,cAAcruB,KAAKpD,MAAO,WAC/DA,KAAKmxB,QAAQ,cACnB,EAAM/tB,KAAKpD,MACX,EACE0uB,cAAc7rB,UAAUuvB,aAAe,WACtBpyB,KAAKylB,cAAc+J,WAEhCxvB,KAAKqvB,cAAgBrvB,KAAKkgB,aAE5BlgB,KAAKgyB,iBACT,EACEtD,cAAc7rB,UAAUwvB,aAAe,WACrCryB,KAAKmxB,QAAQ,iBACbnxB,KAAKsyB,aACT,EACE5D,cAAc7rB,UAAU0vB,cAAgB,WACtCvyB,KAAK4vB,eAAetE,cAActrB,KAAKmqB,YACvCnqB,KAAK4vB,eAAerE,QAAQvrB,KAAK2iB,MACjC3iB,KAAK4vB,eAAezE,WAAWnrB,KAAKylB,cAAcC,OAAQ1lB,KAAKqyB,aAAajvB,KAAKpD,MACrF,EACE0uB,cAAc7rB,UAAUitB,gBAAkB,SAAU0C,GAClD,GAAKxyB,KAAKmvB,SAGV,IACEnvB,KAAKylB,cAAgB+M,EACjBxyB,KAAK8wB,gBACP9wB,KAAKkgB,YAAc7M,KAAK2K,MAAMhe,KAAK8wB,eAAe,GAAK9wB,KAAK8wB,eAAe,IAC3E9wB,KAAKigB,WAAa5M,KAAKC,MAAMtT,KAAK8wB,eAAe,MAEjD9wB,KAAKkgB,YAAc7M,KAAK2K,MAAMhe,KAAKylB,cAActb,GAAKnK,KAAKylB,cAAcK,IACzE9lB,KAAKigB,WAAa5M,KAAKC,MAAMtT,KAAKylB,cAAcK,KAElD9lB,KAAKmvB,SAASW,gBAAgB0C,GACzBA,EAAS9M,SACZ8M,EAAS9M,OAAS,IAEpB1lB,KAAK0lB,OAAS1lB,KAAKylB,cAAcC,OACjC1lB,KAAK6uB,UAAY7uB,KAAKylB,cAAcgN,GACpCzyB,KAAK8uB,UAAY9uB,KAAKylB,cAAcgN,GAAK,IACzCzyB,KAAKmvB,SAASuD,wBAAwBF,EAAS9M,QAC/C1lB,KAAKotB,QAAUP,aAAa2F,EAASpF,SAAW,IAChDptB,KAAKmxB,QAAQ,gBACbnxB,KAAKuyB,gBACLvyB,KAAKoyB,eACLpyB,KAAK2yB,oBACL3yB,KAAK4yB,qBACD5yB,KAAKkvB,UACPlvB,KAAK6vB,gBAAgBnU,OAE7B,CAAM,MAAOtd,GACP4B,KAAK6yB,mBAAmBz0B,EAC9B,CACA,EACEswB,cAAc7rB,UAAU+vB,mBAAqB,WACtC5yB,KAAKmvB,WAGNnvB,KAAKmvB,SAASsB,WAAWmB,YAAYjD,SACvC3uB,KAAKsyB,cAELQ,WAAW9yB,KAAK4yB,mBAAmBxvB,KAAKpD,MAAO,IAErD,EACE0uB,cAAc7rB,UAAUyvB,YAAc,WACpC,IAAKtyB,KAAK2uB,UAAY3uB,KAAKmvB,SAASsB,WAAWmB,YAAYjD,WAAa3uB,KAAK4vB,eAAepE,gBAAiD,WAA/BxrB,KAAKmvB,SAAS4D,eAA8B/yB,KAAK4vB,eAAenE,iBAAkB,CAC9LzrB,KAAK2uB,UAAW,EAChB,IAAIpR,EAAoBmE,uBACpBnE,GACFA,EAAkBwU,gBAAgB/xB,MAEpCA,KAAKmvB,SAAS6D,YACdF,WAAW,WACT9yB,KAAKmxB,QAAQ,YACrB,EAAQ/tB,KAAKpD,MAAO,GACdA,KAAKizB,YACDjzB,KAAKsY,UACPtY,KAAKkc,MAEb,CACA,EACEwS,cAAc7rB,UAAUqwB,OAAS,SAAUhuB,EAAOC,GAEhD,IAAIguB,EAA0B,iBAAVjuB,EAAqBA,OAAQmB,EAC7C+sB,EAA4B,iBAAXjuB,EAAsBA,OAASkB,EACpDrG,KAAKmvB,SAASkE,oBAAoBF,EAAQC,EAC9C,EACE1E,cAAc7rB,UAAUywB,YAAc,SAAUnZ,GAC9Cna,KAAKuvB,oBAAsBpV,CAC/B,EACEuU,cAAc7rB,UAAUowB,UAAY,WAClCjzB,KAAKmuB,aAAenuB,KAAKuvB,kBAAoBvvB,KAAK4uB,kBAAoB5uB,KAAK4uB,gBAEvE5uB,KAAKqvB,gBAAkBrvB,KAAKkgB,aAAelgB,KAAKmuB,aAAenuB,KAAKqvB,gBACtErvB,KAAKmuB,aAAenuB,KAAKqvB,eAE3BrvB,KAAKmxB,QAAQ,cACbnxB,KAAKuzB,cACLvzB,KAAKmxB,QAAQ,aACjB,EACEzC,cAAc7rB,UAAU0wB,YAAc,WACpC,IAAsB,IAAlBvzB,KAAK2uB,UAAuB3uB,KAAKmvB,SAGrC,IACMnvB,KAAKud,mBACPvd,KAAKud,kBAAkBiW,aAEzBxzB,KAAKmvB,SAASoE,YAAYvzB,KAAKmuB,aAAenuB,KAAKigB,WACzD,CAAM,MAAO7hB,GACP4B,KAAKyzB,wBAAwBr1B,EACnC,CACA,EACEswB,cAAc7rB,UAAUqZ,KAAO,SAAUte,GACnCA,GAAQoC,KAAKpC,OAASA,IAGJ,IAAlBoC,KAAKkvB,WACPlvB,KAAKkvB,UAAW,EAChBlvB,KAAKmxB,QAAQ,SACbnxB,KAAK6vB,gBAAgBlU,SACjB3b,KAAKyvB,QACPzvB,KAAKyvB,OAAQ,EACbzvB,KAAKmxB,QAAQ,YAGrB,EACEzC,cAAc7rB,UAAU6Y,MAAQ,SAAU9d,GACpCA,GAAQoC,KAAKpC,OAASA,IAGJ,IAAlBoC,KAAKkvB,WACPlvB,KAAKkvB,UAAW,EAChBlvB,KAAKmxB,QAAQ,UACbnxB,KAAKyvB,OAAQ,EACbzvB,KAAKmxB,QAAQ,SACbnxB,KAAK6vB,gBAAgBnU,QAE3B,EACEgT,cAAc7rB,UAAU6wB,YAAc,SAAU91B,GAC1CA,GAAQoC,KAAKpC,OAASA,KAGJ,IAAlBoC,KAAKkvB,SACPlvB,KAAKkc,OAELlc,KAAK0b,QAEX,EACEgT,cAAc7rB,UAAU8wB,KAAO,SAAU/1B,GACnCA,GAAQoC,KAAKpC,OAASA,IAG1BoC,KAAK0b,QACL1b,KAAKivB,UAAY,EACjBjvB,KAAK0vB,gBAAiB,EACtB1vB,KAAK4zB,wBAAwB,GACjC,EACElF,cAAc7rB,UAAUgxB,cAAgB,SAAUC,GAEhD,IADA,IAAIC,EACK7rB,EAAI,EAAGA,EAAIlI,KAAKotB,QAAQzsB,OAAQuH,GAAK,EAE5C,IADA6rB,EAAS/zB,KAAKotB,QAAQllB,IACXogB,SAAWyL,EAAOzL,QAAQ1qB,OAASk2B,EAC5C,OAAOC,EAGX,OAAO,IACX,EACErF,cAAc7rB,UAAUmxB,YAAc,SAAU90B,EAAO+0B,EAASr2B,GAC9D,IAAIA,GAAQoC,KAAKpC,OAASA,EAA1B,CAGA,IAAIs2B,EAAWphB,OAAO5T,GACtB,GAAIi1B,MAAMD,GAAW,CACnB,IAAIH,EAAS/zB,KAAK6zB,cAAc30B,GAC5B60B,GACF/zB,KAAKg0B,YAAYD,EAAOxG,MAAM,EAEtC,MAAe0G,EACTj0B,KAAK4zB,wBAAwB10B,GAE7Bc,KAAK4zB,wBAAwB10B,EAAQc,KAAKo0B,eAE5Cp0B,KAAK0b,OAZT,CAaA,EACEgT,cAAc7rB,UAAUwxB,YAAc,SAAUn1B,EAAO+0B,EAASr2B,GAC9D,IAAIA,GAAQoC,KAAKpC,OAASA,EAA1B,CAGA,IAAIs2B,EAAWphB,OAAO5T,GACtB,GAAIi1B,MAAMD,GAAW,CACnB,IAAIH,EAAS/zB,KAAK6zB,cAAc30B,GAC5B60B,IACGA,EAAOtG,SAGVztB,KAAKs0B,aAAa,CAACP,EAAOxG,KAAMwG,EAAOxG,KAAOwG,EAAOtG,WAAW,GAFhEztB,KAAKg0B,YAAYD,EAAOxG,MAAM,GAKxC,MACMvtB,KAAKg0B,YAAYE,EAAUD,EAASr2B,GAEtCoC,KAAKkc,MAdT,CAeA,EACEwS,cAAc7rB,UAAU0xB,YAAc,SAAUr1B,GAC9C,IAAsB,IAAlBc,KAAKkvB,WAAuC,IAAlBlvB,KAAK2uB,SAAnC,CAGA,IAAI6F,EAAYx0B,KAAK4uB,gBAAkB1vB,EAAQc,KAAKo0B,cAChDK,GAAc,EAGdD,GAAax0B,KAAKkgB,YAAc,GAAKlgB,KAAKo0B,cAAgB,EACvDp0B,KAAK0Y,MAAQ1Y,KAAKivB,YAAcjvB,KAAK0Y,KAK/B8b,GAAax0B,KAAKkgB,aAC3BlgB,KAAKivB,WAAa,EACbjvB,KAAK00B,cAAcF,EAAYx0B,KAAKkgB,eACvClgB,KAAK4zB,wBAAwBY,EAAYx0B,KAAKkgB,aAC9ClgB,KAAK0vB,gBAAiB,EACtB1vB,KAAKmxB,QAAQ,kBAGfnxB,KAAK4zB,wBAAwBY,GAZxBx0B,KAAK00B,cAAcF,EAAYx0B,KAAKkgB,YAAcsU,EAAYx0B,KAAKkgB,YAAc,KACpFuU,GAAc,EACdD,EAAYx0B,KAAKkgB,YAAc,GAY1BsU,EAAY,EAChBx0B,KAAK00B,cAAcF,EAAYx0B,KAAKkgB,gBACnClgB,KAAK0Y,MAAU1Y,KAAKivB,aAAe,IAAmB,IAAdjvB,KAAK0Y,MAS/C+b,GAAc,EACdD,EAAY,IARZx0B,KAAK4zB,wBAAwB5zB,KAAKkgB,YAAcsU,EAAYx0B,KAAKkgB,aAC5DlgB,KAAK0vB,eAGR1vB,KAAKmxB,QAAQ,gBAFbnxB,KAAK0vB,gBAAiB,IAU5B1vB,KAAK4zB,wBAAwBY,GAE3BC,IACFz0B,KAAK4zB,wBAAwBY,GAC7Bx0B,KAAK0b,QACL1b,KAAKmxB,QAAQ,YA1CnB,CA4CA,EACEzC,cAAc7rB,UAAU8xB,cAAgB,SAAU5X,EAAKgE,GACrD/gB,KAAKivB,UAAY,EACblS,EAAI,GAAKA,EAAI,IACX/c,KAAKo0B,cAAgB,IACnBp0B,KAAK+uB,UAAY,EACnB/uB,KAAK40B,UAAU50B,KAAK+uB,WAEpB/uB,KAAK60B,kBAGT70B,KAAKkgB,YAAcnD,EAAI,GAAKA,EAAI,GAChC/c,KAAKqvB,cAAgBrvB,KAAKkgB,YAC1BlgB,KAAKigB,WAAalD,EAAI,GACtB/c,KAAK4zB,wBAAwB5zB,KAAKkgB,YAAc,KAAQa,IAC/ChE,EAAI,GAAKA,EAAI,KAClB/c,KAAKo0B,cAAgB,IACnBp0B,KAAK+uB,UAAY,EACnB/uB,KAAK40B,UAAU50B,KAAK+uB,WAEpB/uB,KAAK60B,aAAa,IAGtB70B,KAAKkgB,YAAcnD,EAAI,GAAKA,EAAI,GAChC/c,KAAKqvB,cAAgBrvB,KAAKkgB,YAC1BlgB,KAAKigB,WAAalD,EAAI,GACtB/c,KAAK4zB,wBAAwB,KAAQ7S,IAEvC/gB,KAAKmxB,QAAQ,eACjB,EACEzC,cAAc7rB,UAAUiyB,WAAa,SAAUC,EAAMluB,GACnD,IAAImuB,GAAe,EACfh1B,KAAKkvB,WACHlvB,KAAK4uB,gBAAkB5uB,KAAKigB,WAAa8U,EAC3CC,EAAeD,EACN/0B,KAAK4uB,gBAAkB5uB,KAAKigB,WAAapZ,IAClDmuB,EAAenuB,EAAMkuB,IAGzB/0B,KAAKigB,WAAa8U,EAClB/0B,KAAKkgB,YAAcrZ,EAAMkuB,EACzB/0B,KAAKqvB,cAAgBrvB,KAAKkgB,aACL,IAAjB8U,GACFh1B,KAAKg0B,YAAYgB,GAAc,EAErC,EACEtG,cAAc7rB,UAAUyxB,aAAe,SAAUvX,EAAKkY,GAIpD,GAHIA,IACFj1B,KAAKwvB,SAAS7uB,OAAS,GAEC,WAAtB8tB,UAAU1R,EAAI,IAAkB,CAClC,IAAI7U,EACA0S,EAAMmC,EAAIpc,OACd,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAKwvB,SAASnlB,KAAK0S,EAAI7U,GAE/B,MACMlI,KAAKwvB,SAASnlB,KAAK0S,GAEjB/c,KAAKwvB,SAAS7uB,QAAUs0B,GAC1Bj1B,KAAK20B,cAAc30B,KAAKwvB,SAAS0C,QAAS,GAExClyB,KAAKkvB,UACPlvB,KAAKkc,MAEX,EACEwS,cAAc7rB,UAAUqyB,cAAgB,SAAUD,GAChDj1B,KAAKwvB,SAAS7uB,OAAS,EACvBX,KAAKwvB,SAASnlB,KAAK,CAACrK,KAAKylB,cAAcK,GAAI9lB,KAAKylB,cAActb,KAC1D8qB,GACFj1B,KAAK00B,cAAc,EAEzB,EACEhG,cAAc7rB,UAAU6xB,cAAgB,SAAU3T,GAChD,QAAI/gB,KAAKwvB,SAAS7uB,SAChBX,KAAK20B,cAAc30B,KAAKwvB,SAAS0C,QAASnR,IACnC,EAGb,EACE2N,cAAc7rB,UAAU6oB,QAAU,SAAU9tB,GACtCA,GAAQoC,KAAKpC,OAASA,IAASoC,KAAKmvB,WAGxCnvB,KAAKmvB,SAASzD,UACd1rB,KAAK4vB,eAAelE,UACpB1rB,KAAKmxB,QAAQ,WACbnxB,KAAKysB,KAAO,KACZzsB,KAAKm1B,aAAe,KACpBn1B,KAAKo1B,eAAiB,KACtBp1B,KAAKyoB,WAAa,KAClBzoB,KAAKq1B,eAAiB,KACtBr1B,KAAKs1B,UAAY,KACjBt1B,KAAKmvB,SAAW,KAChBnvB,KAAKud,kBAAoB,KACzBvd,KAAK4vB,eAAiB,KACtB5vB,KAAK2vB,iBAAmB,KAC5B,EACEjB,cAAc7rB,UAAU+wB,wBAA0B,SAAU10B,GAC1Dc,KAAK4uB,gBAAkB1vB,EACvBc,KAAKizB,WACT,EACEvE,cAAc7rB,UAAU+xB,SAAW,SAAUnW,GAC3Cze,KAAK+uB,UAAYtQ,EACjBze,KAAK2yB,mBACT,EACEjE,cAAc7rB,UAAUgyB,aAAe,SAAUpW,GAC/Cze,KAAKgvB,cAAgBvQ,EAAM,GAAI,EAAK,EACpCze,KAAK2yB,mBACT,EACEjE,cAAc7rB,UAAU0yB,QAAU,SAAUC,GAC1Cx1B,KAAK0Y,KAAO8c,CAChB,EACE9G,cAAc7rB,UAAUyZ,UAAY,SAAUmC,EAAK7gB,GAC7CA,GAAQoC,KAAKpC,OAASA,GAG1BoC,KAAK6vB,gBAAgBvT,UAAUmC,EACnC,EACEiQ,cAAc7rB,UAAU8Z,UAAY,WAClC,OAAO3c,KAAK6vB,gBAAgBlT,WAChC,EACE+R,cAAc7rB,UAAU4Z,KAAO,SAAU7e,GACnCA,GAAQoC,KAAKpC,OAASA,GAG1BoC,KAAK6vB,gBAAgBpT,MACzB,EACEiS,cAAc7rB,UAAU6Z,OAAS,SAAU9e,GACrCA,GAAQoC,KAAKpC,OAASA,GAG1BoC,KAAK6vB,gBAAgBnT,QACzB,EACEgS,cAAc7rB,UAAU8vB,kBAAoB,WAC1C3yB,KAAKo0B,cAAgBp0B,KAAK8uB,UAAY9uB,KAAK+uB,UAAY/uB,KAAKgvB,cAC5DhvB,KAAK6vB,gBAAgBjU,QAAQ5b,KAAK+uB,UAAY/uB,KAAKgvB,cACvD,EACEN,cAAc7rB,UAAU4yB,QAAU,WAChC,OAAOz1B,KAAK2iB,IAChB,EACE+L,cAAc7rB,UAAUonB,cAAgB,SAAUC,GAChD,IAAIvH,EAAO,GACX,GAAIuH,EAAU7qB,EACZsjB,EAAOuH,EAAU1iB,OACZ,GAAIxH,KAAKmqB,WAAY,CAC1B,IAAIE,EAAYH,EAAU1iB,GACW,IAAjC6iB,EAAU9C,QAAQ,aACpB8C,EAAYA,EAAU5S,MAAM,KAAK,IAEnCkL,EAAO3iB,KAAKmqB,WAAaE,CAC/B,MACM1H,EAAO3iB,KAAK2iB,KACZA,GAAQuH,EAAUI,EAAIJ,EAAUI,EAAI,GACpC3H,GAAQuH,EAAU1iB,EAEpB,OAAOmb,CACX,EACE+L,cAAc7rB,UAAU6yB,aAAe,SAAUzd,GAG/C,IAFA,IAAI/P,EAAI,EACJ0S,EAAM5a,KAAK0lB,OAAO/kB,OACfuH,EAAI0S,GAAK,CACd,GAAI3C,IAAOjY,KAAK0lB,OAAOxd,GAAG+P,GACxB,OAAOjY,KAAK0lB,OAAOxd,GAErBA,GAAK,CACX,CACI,OAAO,IACX,EACEwmB,cAAc7rB,UAAU8yB,KAAO,WAC7B31B,KAAKmvB,SAASwG,MAClB,EACEjH,cAAc7rB,UAAU+yB,KAAO,WAC7B51B,KAAKmvB,SAASyG,MAClB,EACElH,cAAc7rB,UAAUgzB,YAAc,SAAU5B,GAC9C,OAAOA,EAAUj0B,KAAKkgB,YAAclgB,KAAKkgB,YAAclgB,KAAK6uB,SAChE,EACEH,cAAc7rB,UAAUizB,mBAAqB,SAAUnT,EAAM4C,EAAcwQ,GACzE,IACgB/1B,KAAKmvB,SAAS6G,iBAAiBrT,GACrCmT,mBAAmBvQ,EAAcwQ,EAC/C,CAAM,MAAO33B,GAEb,CACA,EACEswB,cAAc7rB,UAAUsuB,QAAU,SAAUvzB,GAC1C,GAAIoC,KAAKysB,MAAQzsB,KAAKysB,KAAK7uB,GACzB,OAAQA,GACN,IAAK,aACHoC,KAAKssB,aAAa1uB,EAAM,IAAI2hB,kBAAkB3hB,EAAMoC,KAAKmuB,aAAcnuB,KAAKkgB,YAAalgB,KAAKo0B,gBAC9F,MACF,IAAK,aACHp0B,KAAKiwB,gBAAgBzQ,YAAcxf,KAAKmuB,aACxCnuB,KAAKiwB,gBAAgBxQ,UAAYzf,KAAKkgB,YACtClgB,KAAKiwB,gBAAgBtQ,UAAY3f,KAAKo0B,cACtCp0B,KAAKssB,aAAa1uB,EAAMoC,KAAKiwB,iBAC7B,MACF,IAAK,eACHjwB,KAAKssB,aAAa1uB,EAAM,IAAIiiB,oBAAoBjiB,EAAMoC,KAAK0Y,KAAM1Y,KAAKivB,UAAWjvB,KAAK8uB,YACtF,MACF,IAAK,WACH9uB,KAAKssB,aAAa1uB,EAAM,IAAIgiB,gBAAgBhiB,EAAMoC,KAAK8uB,YACvD,MACF,IAAK,eACH9uB,KAAKssB,aAAa1uB,EAAM,IAAIoiB,oBAAoBpiB,EAAMoC,KAAKigB,WAAYjgB,KAAKkgB,cAC5E,MACF,IAAK,UACHlgB,KAAKssB,aAAa1uB,EAAM,IAAIuiB,eAAeviB,EAAMoC,OACjD,MACF,QACEA,KAAKssB,aAAa1uB,GAGX,eAATA,GAAyBoC,KAAKm1B,cAChCn1B,KAAKm1B,aAAaz1B,KAAKM,KAAM,IAAIuf,kBAAkB3hB,EAAMoC,KAAKmuB,aAAcnuB,KAAKkgB,YAAalgB,KAAK8uB,YAExF,iBAATlxB,GAA2BoC,KAAKo1B,gBAClCp1B,KAAKo1B,eAAe11B,KAAKM,KAAM,IAAI6f,oBAAoBjiB,EAAMoC,KAAK0Y,KAAM1Y,KAAKivB,UAAWjvB,KAAK8uB,YAElF,aAATlxB,GAAuBoC,KAAKyoB,YAC9BzoB,KAAKyoB,WAAW/oB,KAAKM,KAAM,IAAI4f,gBAAgBhiB,EAAMoC,KAAK8uB,YAE/C,iBAATlxB,GAA2BoC,KAAKq1B,gBAClCr1B,KAAKq1B,eAAe31B,KAAKM,KAAM,IAAIggB,oBAAoBpiB,EAAMoC,KAAKigB,WAAYjgB,KAAKkgB,cAExE,YAATtiB,GAAsBoC,KAAKs1B,WAC7Bt1B,KAAKs1B,UAAU51B,KAAKM,KAAM,IAAImgB,eAAeviB,EAAMoC,MAEzD,EACE0uB,cAAc7rB,UAAU4wB,wBAA0B,SAAUpT,GAC1D,IAAIjiB,EAAQ,IAAIgiB,wBAAwBC,EAAargB,KAAKmuB,cAC1DnuB,KAAKssB,aAAa,QAASluB,GACvB4B,KAAK0oB,SACP1oB,KAAK0oB,QAAQhpB,KAAKM,KAAM5B,EAE9B,EACEswB,cAAc7rB,UAAUgwB,mBAAqB,SAAUxS,GACrD,IAAIjiB,EAAQ,IAAIkiB,mBAAmBD,EAAargB,KAAKmuB,cACrDnuB,KAAKssB,aAAa,QAASluB,GACvB4B,KAAK0oB,SACP1oB,KAAK0oB,QAAQhpB,KAAKM,KAAM5B,EAE9B,EAEE,IAAI63B,iBAAmB,WACrB,IAAIpP,EAAW,CAAA,EACXqP,EAAuB,GACvBC,EAAW,EACXvb,EAAM,EACNwb,EAAuB,EACvBC,GAAW,EACXC,GAAY,EAChB,SAASC,EAAcC,GAGrB,IAFA,IAAItuB,EAAI,EACJuuB,EAAWD,EAAGlnB,OACXpH,EAAI0S,GACLsb,EAAqBhuB,GAAGqgB,YAAckO,IACxCP,EAAqBtJ,OAAO1kB,EAAG,GAC/BA,GAAK,EACL0S,GAAO,EACF6b,EAASvH,UACZwH,KAGJxuB,GAAK,CAEb,CACI,SAASyuB,EAAkB1lB,EAASwU,GAClC,IAAKxU,EACH,OAAO,KAGT,IADA,IAAI/I,EAAI,EACDA,EAAI0S,GAAK,CACd,GAAIsb,EAAqBhuB,GAAG0uB,OAAS3lB,GAA4C,OAAjCilB,EAAqBhuB,GAAG0uB,KACtE,OAAOV,EAAqBhuB,GAAGqgB,UAEjCrgB,GAAK,CACb,CACM,IAAIuuB,EAAW,IAAI/H,cAGnB,OAFAqC,EAAe0F,EAAUxlB,GACzBwlB,EAASrF,QAAQngB,EAASwU,GACnBgR,CACb,CAUI,SAASI,IACPT,GAAwB,EACxBU,GACN,CACI,SAASJ,IACPN,GAAwB,CAC9B,CACI,SAASrF,EAAe0F,EAAUxlB,GAChCwlB,EAAS3K,iBAAiB,UAAWyK,GACrCE,EAAS3K,iBAAiB,UAAW+K,GACrCJ,EAAS3K,iBAAiB,QAAS4K,GACnCR,EAAqB7rB,KAAK,CACxBusB,KAAM3lB,EACNsX,UAAWkO,IAEb7b,GAAO,CACb,CAyBI,SAASe,EAAOob,GACd,IACI7uB,EADA8uB,EAAcD,EAAUZ,EAE5B,IAAKjuB,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBguB,EAAqBhuB,GAAGqgB,UAAUgM,YAAYyC,GAEhDb,EAAWY,EACPX,IAAyBE,EAC3BhkB,OAAO2kB,sBAAsBtb,GAE7B0a,GAAW,CAEnB,CACI,SAASa,EAAMH,GACbZ,EAAWY,EACXzkB,OAAO2kB,sBAAsBtb,EACnC,CA6DI,SAASmb,KACFR,GAAaF,GACZC,IACF/jB,OAAO2kB,sBAAsBC,GAC7Bb,GAAW,EAGrB,CA6CI,OAnBAxP,EAAS8P,kBAAoBA,EAC7B9P,EAAS+B,cAvIT,SAAuBuH,GACrB,IAAIsG,EAAW,IAAI/H,cAGnB,OAFAqC,EAAe0F,EAAU,MACzBA,EAASvG,UAAUC,GACZsG,CACb,EAmII5P,EAAS+N,SAlIT,SAAkBnW,EAAK8J,GACrB,IAAIrgB,EACJ,IAAKA,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBguB,EAAqBhuB,GAAGqgB,UAAUqM,SAASnW,EAAK8J,EAExD,EA8HI1B,EAASgO,aA7HT,SAAsBpW,EAAK8J,GACzB,IAAIrgB,EACJ,IAAKA,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBguB,EAAqBhuB,GAAGqgB,UAAUsM,aAAapW,EAAK8J,EAE5D,EAyHI1B,EAAS3K,KAxHT,SAAcqM,GACZ,IAAIrgB,EACJ,IAAKA,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBguB,EAAqBhuB,GAAGqgB,UAAUrM,KAAKqM,EAE/C,EAoHI1B,EAASnL,MAlGT,SAAe6M,GACb,IAAIrgB,EACJ,IAAKA,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBguB,EAAqBhuB,GAAGqgB,UAAU7M,MAAM6M,EAEhD,EA8FI1B,EAAS8M,KAvFT,SAAcpL,GACZ,IAAIrgB,EACJ,IAAKA,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBguB,EAAqBhuB,GAAGqgB,UAAUoL,KAAKpL,EAE/C,EAmFI1B,EAAS6M,YAlFT,SAAqBnL,GACnB,IAAIrgB,EACJ,IAAKA,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBguB,EAAqBhuB,GAAGqgB,UAAUmL,YAAYnL,EAEtD,EA8EI1B,EAASsQ,iBAvET,SAA0B1R,EAAe2R,EAAYjI,GACnD,IACIjnB,EADAmvB,EAAe,GAAGxyB,OAAO,GAAG4R,MAAM/W,KAAKkQ,SAAS0nB,uBAAuB,WAAY,GAAG7gB,MAAM/W,KAAKkQ,SAAS0nB,uBAAuB,eAEjIC,EAAWF,EAAa12B,OAC5B,IAAKuH,EAAI,EAAGA,EAAIqvB,EAAUrvB,GAAK,EACzBinB,GACFkI,EAAanvB,GAAGsvB,aAAa,eAAgBrI,GAE/CwH,EAAkBU,EAAanvB,GAAIud,GAErC,GAAI2R,GAA2B,IAAbG,EAAgB,CAC3BpI,IACHA,EAAW,OAEb,IAAI7lB,EAAOsG,SAASE,qBAAqB,QAAQ,GACjDxG,EAAKmuB,UAAY,GACjB,IAAIC,EAAMnd,UAAU,OACpBmd,EAAInzB,MAAMW,MAAQ,OAClBwyB,EAAInzB,MAAMY,OAAS,OACnBuyB,EAAIF,aAAa,eAAgBrI,GACjC7lB,EAAK2G,YAAYynB,GACjBf,EAAkBe,EAAKjS,EAC/B,CACA,EAiDIoB,EAASqM,OAhDT,WACE,IAAIhrB,EACJ,IAAKA,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBguB,EAAqBhuB,GAAGqgB,UAAU2K,QAE1C,EA6CIrM,EAASmN,YAlGT,SAAqB90B,EAAO+0B,EAAS1L,GACnC,IAAIrgB,EACJ,IAAKA,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBguB,EAAqBhuB,GAAGqgB,UAAUyL,YAAY90B,EAAO+0B,EAAS1L,EAEtE,EA8FI1B,EAAS6E,QAjFT,SAAiBnD,GACf,IAAIrgB,EACJ,IAAKA,EAAI0S,EAAM,EAAG1S,GAAK,EAAGA,GAAK,EAC7BguB,EAAqBhuB,GAAGqgB,UAAUmD,QAAQnD,EAElD,EA6EI1B,EAAS/lB,OAtCT,WACEw1B,GAAY,CAClB,EAqCIzP,EAAS8Q,SApCT,WACErB,GAAY,EACZQ,GACN,EAkCIjQ,EAASvK,UAjCT,SAAmBmC,EAAK8J,GACtB,IAAIrgB,EACJ,IAAKA,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBguB,EAAqBhuB,GAAGqgB,UAAUjM,UAAUmC,EAAK8J,EAEzD,EA6BI1B,EAASpK,KA5BT,SAAc8L,GACZ,IAAIrgB,EACJ,IAAKA,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBguB,EAAqBhuB,GAAGqgB,UAAU9L,KAAK8L,EAE/C,EAwBI1B,EAASnK,OAvBT,SAAgB6L,GACd,IAAIrgB,EACJ,IAAKA,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBguB,EAAqBhuB,GAAGqgB,UAAU7L,OAAO6L,EAEjD,EAmBI1B,EAAS+Q,wBAlLT,WACE,IAAI1vB,EACAqvB,EAAWrB,EAAqBv1B,OAChCk3B,EAAa,GACjB,IAAK3vB,EAAI,EAAGA,EAAIqvB,EAAUrvB,GAAK,EAC7B2vB,EAAWxtB,KAAK6rB,EAAqBhuB,GAAGqgB,WAE1C,OAAOsP,CACb,EA2KWhR,CACX,CA3NyB,GA8NnBiR,cAAgB,WAYlB,IAAI/M,EAAK,CACTA,gBAEA,SAAyB9E,EAAG5e,EAAGmf,EAAGpf,EAAG4mB,GACnC,IAAI+J,EAAM/J,IAAO,OAAS/H,EAAI,IAAM5e,EAAI,IAAMmf,EAAI,IAAMpf,GAAGkQ,QAAQ,MAAO,KAC1E,GAAI0gB,EAAQD,GACV,OAAOC,EAAQD,GAEjB,IAAIE,EAAY,IAAIC,EAAa,CAACjS,EAAG5e,EAAGmf,EAAGpf,IAE3C,OADA4wB,EAAQD,GAAOE,EACRA,CACb,GATQD,EAAU,CAAA,EAgBVG,EAAmB,GACnBC,EAAkB,GAAOD,EAAmB,GAC5CE,EAAgD,mBAAjBpb,aACnC,SAAS3a,EAAEg2B,EAAKC,GACd,OAAO,EAAM,EAAMA,EAAM,EAAMD,CACrC,CACI,SAASE,EAAEF,EAAKC,GACd,OAAO,EAAMA,EAAM,EAAMD,CAC/B,CACI,SAASG,EAAEH,GACT,OAAO,EAAMA,CACnB,CAGI,SAASI,EAAWC,EAAIL,EAAKC,GAC3B,QAASj2B,EAAEg2B,EAAKC,GAAOI,EAAKH,EAAEF,EAAKC,IAAQI,EAAKF,EAAEH,IAAQK,CAChE,CAGI,SAASC,EAASD,EAAIL,EAAKC,GACzB,OAAO,EAAMj2B,EAAEg2B,EAAKC,GAAOI,EAAKA,EAAK,EAAMH,EAAEF,EAAKC,GAAOI,EAAKF,EAAEH,EACtE,CA6BI,SAASJ,EAAaW,GACpB74B,KAAK84B,GAAKD,EACV74B,KAAK+4B,eAAiBV,EAAwB,IAAIpb,aAAakb,GAAoB,IAAIr1B,MAAMq1B,GAC7Fn4B,KAAKg5B,cAAe,EACpBh5B,KAAKuB,IAAMvB,KAAKuB,IAAI6B,KAAKpD,KAC/B,CA6DI,OA5DAk4B,EAAar1B,UAAY,CACvBtB,IAAK,SAAavC,GAChB,IAAIi6B,EAAMj5B,KAAK84B,GAAG,GAChBI,EAAMl5B,KAAK84B,GAAG,GACdK,EAAMn5B,KAAK84B,GAAG,GACdM,EAAMp5B,KAAK84B,GAAG,GAEhB,OADK94B,KAAKg5B,cAAch5B,KAAKq5B,cACzBJ,IAAQC,GAAOC,IAAQC,EAAYp6B,EAE7B,IAANA,EAAgB,EACV,IAANA,EAAgB,EACb05B,EAAW14B,KAAKs5B,UAAUt6B,GAAIk6B,EAAKE,EAClD,EAGMC,YAAa,WACX,IAAIJ,EAAMj5B,KAAK84B,GAAG,GAChBI,EAAMl5B,KAAK84B,GAAG,GACdK,EAAMn5B,KAAK84B,GAAG,GACdM,EAAMp5B,KAAK84B,GAAG,GAChB94B,KAAKg5B,cAAe,EAChBC,IAAQC,GAAOC,IAAQC,GACzBp5B,KAAKu5B,mBAEf,EACMA,kBAAmB,WAGjB,IAFA,IAAIN,EAAMj5B,KAAK84B,GAAG,GAChBK,EAAMn5B,KAAK84B,GAAG,GACP5wB,EAAI,EAAGA,EAAIiwB,IAAoBjwB,EACtClI,KAAK+4B,eAAe7wB,GAAKwwB,EAAWxwB,EAAIkwB,EAAiBa,EAAKE,EAExE,EAIMG,UAAW,SAAmBE,GAO5B,IANA,IAAIP,EAAMj5B,KAAK84B,GAAG,GAChBK,EAAMn5B,KAAK84B,GAAG,GACdW,EAAgBz5B,KAAK+4B,eACnBW,EAAgB,EAChBC,EAAgB,EAChBC,EAAazB,EAAmB,EAC7BwB,IAAkBC,GAAcH,EAAcE,IAAkBH,IAAMG,EAC3ED,GAAiBtB,EAKnB,IACIyB,EAAYH,GADJF,EAAKC,IAHfE,KAGgDF,EAAcE,EAAgB,GAAKF,EAAcE,IAC5DvB,EACnC0B,EAAelB,EAASiB,EAAWZ,EAAKE,GAC5C,OAAIW,GA9Ge,KAwCvB,SAA8BN,EAAIO,EAASd,EAAKE,GAC9C,IAAK,IAAIjxB,EAAI,EAAGA,EA1CM,IA0CmBA,EAAG,CAC1C,IAAI8xB,EAAepB,EAASmB,EAASd,EAAKE,GAC1C,GAAqB,IAAjBa,EAAsB,OAAOD,EAEjCA,IADerB,EAAWqB,EAASd,EAAKE,GAAOK,GACzBQ,CAC9B,CACM,OAAOD,CACb,CA+DiBE,CAAqBT,EAAIK,EAAWZ,EAAKE,GAE7B,IAAjBW,EACKD,EAzFb,SAAyBL,EAAIU,EAAIC,EAAIlB,EAAKE,GACxC,IAAIiB,EACFC,EACAnyB,EAAI,EACN,IAEEkyB,EAAW1B,EADX2B,EAAWH,GAAMC,EAAKD,GAAM,EACIjB,EAAKE,GAAOK,GAC7B,EACbW,EAAKE,EAELH,EAAKG,QAEAhnB,KAAKmL,IAAI4b,GApCQ,QAoC+BlyB,EAnC1B,IAoC/B,OAAOmyB,CACb,CA6EeC,CAAgBd,EAAIE,EAAeA,EAAgBtB,EAAiBa,EAAKE,EACxF,GAEWpO,CACX,CAnJsB,GAqJhBwP,QAIK,CACLC,OAJF,SAAiBzd,GACf,OAAOA,EAAIlY,OAAOsY,iBAAiBJ,EAAIpc,QAC7C,GAMM85B,YACK,SAAUC,EAAeC,EAASC,GACvC,IAAIC,EAAU,EACVC,EAAaJ,EACbK,EAAO5d,iBAAiB2d,GA0B5B,MAzBS,CACPE,WAGF,WAQE,OANIH,EAEQE,EADVF,GAAW,GAGDF,GAGpB,EAXQM,QAYF,SAAiBhqB,GACX4pB,IAAYC,IACdC,EAAOR,QAAgB,OAAEQ,GACzBD,GAAc,GAEZF,GACFA,EAAS3pB,GAEX8pB,EAAKF,GAAW5pB,EAChB4pB,GAAW,CACnB,EAEA,EAGMK,iBAQKT,YAAY,EAPnB,WACE,MAAO,CACLU,YAAa,EACbC,SAAUve,iBAAiB,UAAWiF,2BACtCuZ,QAASxe,iBAAiB,UAAWiF,2BAE7C,GAIMwZ,mBAeKb,YAAY,EAdnB,WACE,MAAO,CACLY,QAAS,GACTE,YAAa,EAErB,EACI,SAAiBtqB,GACf,IAAI/I,EACA0S,EAAM3J,EAAQoqB,QAAQ16B,OAC1B,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBgzB,iBAAiBD,QAAQhqB,EAAQoqB,QAAQnzB,IAE3C+I,EAAQoqB,QAAQ16B,OAAS,CAC/B,GAIE,SAAS66B,cACP,IAAIC,EAAOpoB,KACX,SAASqoB,EAAcC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GACzC,IAAIC,EAAON,EAAKG,EAAKF,EAAKG,EAAKF,EAAKG,EAAKD,EAAKD,EAAKE,EAAKL,EAAKE,EAAKD,EAClE,OAAOK,SAAiBA,EAAO,IACrC,CAsBI,IAAIC,EACK,SAAUC,EAAKC,EAAKC,EAAKC,GAC9B,IACIp7B,EACAgH,EACA0S,EACA2hB,EACAC,EAEAC,EAPAC,EAAgB5a,0BAMhBqZ,EAAc,EAEdwB,EAAQ,GACRC,EAAY,GACZC,EAAa3B,iBAAiBF,aAElC,IADApgB,EAAMyhB,EAAI17B,OACLO,EAAI,EAAGA,EAAIw7B,EAAex7B,GAAK,EAAG,CAGrC,IAFAs7B,EAAOt7B,GAAKw7B,EAAgB,GAC5BD,EAAa,EACRv0B,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBq0B,EAAU5e,MAAM,EAAI6e,EAAM,GAAKL,EAAIj0B,GAAK,EAAIyV,MAAM,EAAI6e,EAAM,GAAKA,EAAOH,EAAIn0B,GAAK,GAAK,EAAIs0B,GAAQ7e,MAAM6e,EAAM,GAAKF,EAAIp0B,GAAKyV,MAAM6e,EAAM,GAAKJ,EAAIl0B,GACjJy0B,EAAMz0B,GAAKq0B,EACU,OAAjBK,EAAU10B,KACZu0B,GAAc9e,MAAMgf,EAAMz0B,GAAK00B,EAAU10B,GAAI,IAE/C00B,EAAU10B,GAAKy0B,EAAMz0B,GAEnBu0B,IAEFtB,GADAsB,EAAa5e,OAAO4e,IAGtBI,EAAWzB,SAASl6B,GAAKs7B,EACzBK,EAAWxB,QAAQn6B,GAAKi6B,CAClC,CAEQ,OADA0B,EAAW1B,YAAcA,EAClB0B,CACf,EAuBI,SAASC,EAAWn8B,GAClBX,KAAK+8B,cAAgB,EACrB/8B,KAAK64B,OAAS,IAAI/1B,MAAMnC,EAC9B,CACI,SAASq8B,EAAUC,EAASN,GAC1B38B,KAAKk9B,cAAgBD,EACrBj9B,KAAK28B,MAAQA,CACnB,CACI,IACMQ,EADFC,GACED,EAAa,CAAA,EACV,SAAUhB,EAAKC,EAAKC,EAAKC,GAC9B,IAAIe,GAAclB,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMC,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMC,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMC,EAAI,GAAK,IAAMA,EAAI,IAAIhlB,QAAQ,MAAO,KAClJ,IAAK6lB,EAAWE,GAAa,CAC3B,IACIn8B,EACAgH,EACA0S,EACA2hB,EACAC,EAEAC,EACAE,EARAD,EAAgB5a,0BAMhBqZ,EAAc,EAGdyB,EAAY,KACG,IAAfT,EAAIx7B,SAAiBw7B,EAAI,KAAOC,EAAI,IAAMD,EAAI,KAAOC,EAAI,KAAOV,EAAcS,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,GAAID,EAAI,GAAKE,EAAI,GAAIF,EAAI,GAAKE,EAAI,KAAOX,EAAcS,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAKE,EAAI,GAAIF,EAAI,GAAKE,EAAI,MACjOI,EAAgB,GAElB,IAAIY,EAAa,IAAIR,EAAWJ,GAEhC,IADA9hB,EAAMyhB,EAAI17B,OACLO,EAAI,EAAGA,EAAIw7B,EAAex7B,GAAK,EAAG,CAIrC,IAHAy7B,EAAQxf,iBAAiBvC,GACzB4hB,EAAOt7B,GAAKw7B,EAAgB,GAC5BD,EAAa,EACRv0B,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBq0B,EAAU5e,MAAM,EAAI6e,EAAM,GAAKL,EAAIj0B,GAAK,EAAIyV,MAAM,EAAI6e,EAAM,GAAKA,GAAQL,EAAIj0B,GAAKm0B,EAAIn0B,IAAM,GAAK,EAAIs0B,GAAQ7e,MAAM6e,EAAM,IAAMJ,EAAIl0B,GAAKo0B,EAAIp0B,IAAMyV,MAAM6e,EAAM,GAAKJ,EAAIl0B,GACvKy0B,EAAMz0B,GAAKq0B,EACO,OAAdK,IACFH,GAAc9e,MAAMgf,EAAMz0B,GAAK00B,EAAU10B,GAAI,IAIjDizB,GADAsB,EAAa5e,OAAO4e,GAEpBa,EAAWzE,OAAO33B,GAAK,IAAI87B,EAAUP,EAAYE,GACjDC,EAAYD,CACxB,CACUW,EAAWP,cAAgB5B,EAC3BgC,EAAWE,GAAcC,CACnC,CACQ,OAAOH,EAAWE,EAC1B,GAEI,SAASE,EAAgBf,EAAMc,GAC7B,IAAIlC,EAAWkC,EAAWlC,SACtBC,EAAUiC,EAAWjC,QACrBzgB,EAAMwgB,EAASz6B,OACf68B,EAAUzf,SAASnD,EAAM,GAAK4hB,GAC9BiB,EAAYjB,EAAOc,EAAWnC,YAC9BuC,EAAQ,EACZ,GAAIF,IAAY5iB,EAAM,GAAiB,IAAZ4iB,GAAiBC,IAAcpC,EAAQmC,GAChE,OAAOpC,EAASoC,GAIlB,IAFA,IAAIG,EAAMtC,EAAQmC,GAAWC,GAAY,EAAK,EAC1CtjB,GAAO,EACJA,GAOL,GANIkhB,EAAQmC,IAAYC,GAAapC,EAAQmC,EAAU,GAAKC,GAC1DC,GAASD,EAAYpC,EAAQmC,KAAanC,EAAQmC,EAAU,GAAKnC,EAAQmC,IACzErjB,GAAO,GAEPqjB,GAAWG,EAETH,EAAU,GAAKA,GAAW5iB,EAAM,EAAG,CAErC,GAAI4iB,IAAY5iB,EAAM,EACpB,OAAOwgB,EAASoC,GAElBrjB,GAAO,CACjB,CAEM,OAAOihB,EAASoC,IAAYpC,EAASoC,EAAU,GAAKpC,EAASoC,IAAYE,CAC/E,CAQI,IAAIE,EAAsB/gB,iBAAiB,UAAW,GAyCtD,MAAO,CACLghB,kBArJF,SAA2BC,GACzB,IAKI51B,EALA61B,EAAiBzC,mBAAmBN,aACpCrU,EAASmX,EAAUtX,EACnBwX,EAAQF,EAAU5zB,EAClB+zB,EAAQH,EAAUzgB,EAClB6gB,EAAQJ,EAAU51B,EAElB0S,EAAMkjB,EAAUjD,QAChBQ,EAAU0C,EAAe1C,QACzBE,EAAc,EAClB,IAAKrzB,EAAI,EAAGA,EAAI0S,EAAM,EAAG1S,GAAK,EAC5BmzB,EAAQnzB,GAAKg0B,EAAgB8B,EAAM91B,GAAI81B,EAAM91B,EAAI,GAAI+1B,EAAM/1B,GAAIg2B,EAAMh2B,EAAI,IACzEqzB,GAAeF,EAAQnzB,GAAGizB,YAO5B,OALIxU,GAAU/L,IACZygB,EAAQnzB,GAAKg0B,EAAgB8B,EAAM91B,GAAI81B,EAAM,GAAIC,EAAM/1B,GAAIg2B,EAAM,IACjE3C,GAAeF,EAAQnzB,GAAGizB,aAE5B4C,EAAexC,YAAcA,EACtBwC,CACb,EAkIMI,cA1CF,SAAuBhC,EAAKC,EAAKC,EAAKC,EAAK8B,EAAWC,EAASf,GACzDc,EAAY,EACdA,EAAY,EACHA,EAAY,IACrBA,EAAY,GAEd,IAGIl2B,EAHAo2B,EAAKf,EAAgBa,EAAWd,GAEhCiB,EAAKhB,EADTc,EAAUA,EAAU,EAAI,EAAIA,EACMf,GAE9B1iB,EAAMuhB,EAAIx7B,OACV69B,EAAK,EAAIF,EACTG,EAAK,EAAIF,EACTG,EAASF,EAAKA,EAAKA,EACnBG,EAAWL,EAAKE,EAAKA,EAAK,EAC1BI,EAAWN,EAAKA,EAAKE,EAAK,EAC1BK,EAASP,EAAKA,EAAKA,EAEnBQ,EAASN,EAAKA,EAAKC,EACnBM,EAAWT,EAAKE,EAAKC,EAAKD,EAAKF,EAAKG,EAAKD,EAAKA,EAAKD,EACnDS,EAAWV,EAAKA,EAAKG,EAAKD,EAAKF,EAAKC,EAAKD,EAAKE,EAAKD,EACnDU,EAASX,EAAKA,EAAKC,EAEnBW,EAASV,EAAKC,EAAKA,EACnBU,EAAWb,EAAKG,EAAKA,EAAKD,EAAKD,EAAKE,EAAKD,EAAKC,EAAKF,EACnDa,EAAWd,EAAKC,EAAKE,EAAKD,EAAKD,EAAKA,EAAKD,EAAKG,EAAKF,EACnDc,EAASf,EAAKC,EAAKA,EAEnBe,EAASb,EAAKA,EAAKA,EACnBc,EAAWhB,EAAKE,EAAKA,EAAKA,EAAKF,EAAKE,EAAKA,EAAKA,EAAKF,EACnDiB,EAAWjB,EAAKA,EAAKE,EAAKA,EAAKF,EAAKA,EAAKA,EAAKE,EAAKF,EACnDkB,EAASlB,EAAKA,EAAKA,EACvB,IAAKr2B,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB01B,EAAwB,EAAJ11B,GAASuzB,EAAKnoB,MAAoF,KAA7EorB,EAASvC,EAAIj0B,GAAKy2B,EAAWtC,EAAIn0B,GAAK02B,EAAWtC,EAAIp0B,GAAK22B,EAASzC,EAAIl0B,KAAc,IAC9H01B,EAAwB,EAAJ11B,EAAQ,GAAKuzB,EAAKnoB,MAAoF,KAA7EwrB,EAAS3C,EAAIj0B,GAAK62B,EAAW1C,EAAIn0B,GAAK82B,EAAW1C,EAAIp0B,GAAK+2B,EAAS7C,EAAIl0B,KAAc,IAClI01B,EAAwB,EAAJ11B,EAAQ,GAAKuzB,EAAKnoB,MAAoF,KAA7E4rB,EAAS/C,EAAIj0B,GAAKi3B,EAAW9C,EAAIn0B,GAAKk3B,EAAW9C,EAAIp0B,GAAKm3B,EAASjD,EAAIl0B,KAAc,IAClI01B,EAAwB,EAAJ11B,EAAQ,GAAKuzB,EAAKnoB,MAAoF,KAA7EgsB,EAASnD,EAAIj0B,GAAKq3B,EAAWlD,EAAIn0B,GAAKs3B,EAAWlD,EAAIp0B,GAAKu3B,EAASrD,EAAIl0B,KAAc,IAEpI,OAAO01B,CACb,EAIM8B,kBAnDF,SAA2BvD,EAAKC,EAAKC,EAAKC,EAAKqD,EAASrC,GACtD,IAAIiB,EAAKhB,EAAgBoC,EAASrC,GAC9BmB,EAAK,EAAIF,EAGb,MAAO,CAFG9C,EAAKnoB,MAAwK,KAAjKmrB,EAAKA,EAAKA,EAAKtC,EAAI,IAAMoC,EAAKE,EAAKA,EAAKA,EAAKF,EAAKE,EAAKA,EAAKA,EAAKF,GAAMlC,EAAI,IAAMkC,EAAKA,EAAKE,EAAKA,EAAKF,EAAKA,EAAKA,EAAKE,EAAKF,GAAMjC,EAAI,GAAKiC,EAAKA,EAAKA,EAAKnC,EAAI,KAAc,IACrLX,EAAKnoB,MAAwK,KAAjKmrB,EAAKA,EAAKA,EAAKtC,EAAI,IAAMoC,EAAKE,EAAKA,EAAKA,EAAKF,EAAKE,EAAKA,EAAKA,EAAKF,GAAMlC,EAAI,IAAMkC,EAAKA,EAAKE,EAAKA,EAAKF,EAAKA,EAAKA,EAAKE,EAAKF,GAAMjC,EAAI,GAAKiC,EAAKA,EAAKA,EAAKnC,EAAI,KAAc,IAErM,EA8CMgB,gBAAiBA,EACjB1B,cAAeA,EACfkE,cAnNF,SAAuBjE,EAAIC,EAAIiE,EAAIhE,EAAIC,EAAIgE,EAAI/D,EAAIC,EAAI+D,GACrD,GAAW,IAAPF,GAAmB,IAAPC,GAAmB,IAAPC,EAC1B,OAAOrE,EAAcC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAE3C,IAGIgE,EAHAC,EAAQxE,EAAK3d,KAAK2d,EAAK7d,IAAIie,EAAKF,EAAI,GAAKF,EAAK7d,IAAIke,EAAKF,EAAI,GAAKH,EAAK7d,IAAIkiB,EAAKD,EAAI,IAClFK,EAAQzE,EAAK3d,KAAK2d,EAAK7d,IAAIme,EAAKJ,EAAI,GAAKF,EAAK7d,IAAIoe,EAAKJ,EAAI,GAAKH,EAAK7d,IAAImiB,EAAKF,EAAI,IAClFM,EAAQ1E,EAAK3d,KAAK2d,EAAK7d,IAAIme,EAAKF,EAAI,GAAKJ,EAAK7d,IAAIoe,EAAKF,EAAI,GAAKL,EAAK7d,IAAImiB,EAAKD,EAAI,IAatF,OATIE,EAFAC,EAAQC,EACND,EAAQE,EACCF,EAAQC,EAAQC,EAEhBA,EAAQD,EAAQD,EAEpBE,EAAQD,EACNC,EAAQD,EAAQD,EAEhBC,EAAQD,EAAQE,UAEAH,EAAW,IAC9C,EAiMA,CACE,IAAII,IAAM5E,cAEN6E,UAAYpmB,oBACZqmB,QAAUjtB,KAAKmL,IACnB,SAAS+hB,iBAAiBC,EAAUC,GAClC,IACIC,EADAC,EAAa3gC,KAAK2gC,WAEA,qBAAlB3gC,KAAK4gC,WACPF,EAAW7jB,iBAAiB,UAAW7c,KAAK6gC,GAAGlgC,SASjD,IAPA,IAIImgC,EACAC,EACAC,EAuBA9/B,EACAwiB,EACA8Y,EACA/Y,EACAD,EACAyd,EAlCAC,EAAiBT,EAAQU,UACzBj5B,EAAIg5B,EACJtmB,EAAM5a,KAAKohC,UAAUzgC,OAAS,EAC9BwZ,GAAO,EAIJA,GAAM,CAGX,GAFA2mB,EAAU9gC,KAAKohC,UAAUl5B,GACzB64B,EAAc/gC,KAAKohC,UAAUl5B,EAAI,GAC7BA,IAAM0S,EAAM,GAAK4lB,GAAYO,EAAY/4B,EAAI24B,EAAY,CACvDG,EAAQpgB,IACVogB,EAAUC,GAEZG,EAAiB,EACjB,KACR,CACM,GAAIH,EAAY/4B,EAAI24B,EAAaH,EAAU,CACzCU,EAAiBh5B,EACjB,KACR,CACUA,EAAI0S,EAAM,EACZ1S,GAAK,GAELg5B,EAAiB,EACjB/mB,GAAO,EAEf,CACI6mB,EAAmBhhC,KAAKqhC,kBAAkBn5B,IAAM,CAAA,EAOhD,IAEIo5B,EAFAC,EAAcR,EAAY/4B,EAAI24B,EAC9Ba,EAAUV,EAAQ94B,EAAI24B,EAE1B,GAAIG,EAAQW,GAAI,CACTT,EAAiB1D,aACpB0D,EAAiB1D,WAAa8C,IAAIhD,gBAAgB0D,EAAQ74B,EAAG84B,EAAY94B,GAAK64B,EAAQzhC,EAAGyhC,EAAQW,GAAIX,EAAQY,KAE/G,IAAIpE,EAAa0D,EAAiB1D,WAClC,GAAIkD,GAAYe,GAAef,EAAWgB,EAAS,CACjD,IAAIG,EAAMnB,GAAYe,EAAcjE,EAAWzE,OAAOl4B,OAAS,EAAI,EAEnE,IADA+iB,EAAO4Z,EAAWzE,OAAO8I,GAAKhF,MAAMh8B,OAC/BO,EAAI,EAAGA,EAAIwiB,EAAMxiB,GAAK,EACzBw/B,EAASx/B,GAAKo8B,EAAWzE,OAAO8I,GAAKhF,MAAMz7B,EAGrD,KAAa,CACD8/B,EAAiBY,OACnBX,EAAMD,EAAiBY,QAEvBX,EAAMnJ,cAAc+J,gBAAgBf,EAAQzjB,EAAEre,EAAG8hC,EAAQzjB,EAAE7T,EAAGs3B,EAAQ54B,EAAElJ,EAAG8hC,EAAQ54B,EAAEsB,EAAGs3B,EAAQ34B,GAAG5G,IACnGy/B,EAAiBY,OAASX,GAE5BzE,EAAOyE,GAAKT,EAAWgB,IAAYD,EAAcC,IACjD,IACIM,EADAC,EAAiBzE,EAAWP,cAAgBP,EAE5CrB,EAAcsF,EAAQuB,UAAYxB,GAAYC,EAAQwB,qBAAuB/5B,EAAIu4B,EAAQyB,iBAAmB,EAIhH,IAHA1e,EAAIid,EAAQuB,UAAYxB,GAAYC,EAAQwB,qBAAuB/5B,EAAIu4B,EAAQ0B,WAAa,EAC5FhoB,GAAO,EACPsJ,EAAO6Z,EAAWzE,OAAOl4B,OAClBwZ,GAAM,CAEX,GADAghB,GAAemC,EAAWzE,OAAOrV,GAAG0Z,cACb,IAAnB6E,GAAiC,IAATvF,GAAchZ,IAAM8Z,EAAWzE,OAAOl4B,OAAS,EAAG,CAE5E,IADA+iB,EAAO4Z,EAAWzE,OAAOrV,GAAGmZ,MAAMh8B,OAC7BO,EAAI,EAAGA,EAAIwiB,EAAMxiB,GAAK,EACzBw/B,EAASx/B,GAAKo8B,EAAWzE,OAAOrV,GAAGmZ,MAAMz7B,GAE3C,KACZ,CAAiB,GAAI6gC,GAAkB5G,GAAe4G,EAAiB5G,EAAcmC,EAAWzE,OAAOrV,EAAI,GAAG0Z,cAAe,CAGjH,IAFA4E,GAAeC,EAAiB5G,GAAemC,EAAWzE,OAAOrV,EAAI,GAAG0Z,cACxExZ,EAAO4Z,EAAWzE,OAAOrV,GAAGmZ,MAAMh8B,OAC7BO,EAAI,EAAGA,EAAIwiB,EAAMxiB,GAAK,EACzBw/B,EAASx/B,GAAKo8B,EAAWzE,OAAOrV,GAAGmZ,MAAMz7B,IAAMo8B,EAAWzE,OAAOrV,EAAI,GAAGmZ,MAAMz7B,GAAKo8B,EAAWzE,OAAOrV,GAAGmZ,MAAMz7B,IAAM4gC,EAEtH,KACZ,CACcte,EAAIC,EAAO,EACbD,GAAK,EAELrJ,GAAO,CAEnB,CACQsmB,EAAQ0B,WAAa3e,EACrBid,EAAQyB,iBAAmB/G,EAAcmC,EAAWzE,OAAOrV,GAAG0Z,cAC9DuD,EAAQwB,mBAAqB/5B,CACrC,CACA,KAAW,CACL,IAAIk6B,EACAC,EACAC,EACAC,EACAC,EAGJ,GAFA5nB,EAAMkmB,EAAQ74B,EAAEtH,OAChB2gC,EAAWP,EAAY94B,GAAK64B,EAAQzhC,EAChCW,KAAKyiC,IAAoB,IAAd3B,EAAQpgB,EACjB8f,GAAYe,GACdb,EAAS,GAAKY,EAAS,GACvBZ,EAAS,GAAKY,EAAS,GACvBZ,EAAS,GAAKY,EAAS,IACdd,GAAYgB,GACrBd,EAAS,GAAKI,EAAQ74B,EAAE,GACxBy4B,EAAS,GAAKI,EAAQ74B,EAAE,GACxBy4B,EAAS,GAAKI,EAAQ74B,EAAE,IAKxBy6B,kBAAkBhC,EAAUiC,MAHZC,iBAAiB9B,EAAQ74B,GAC3B26B,iBAAiBtB,IACnBd,EAAWgB,IAAYD,EAAcC,UAInD,IAAKt5B,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACN,IAAd44B,EAAQpgB,IACN8f,GAAYe,EACd/E,EAAO,EACEgE,EAAWgB,EACpBhF,EAAO,GAEHsE,EAAQzjB,EAAEre,EAAES,cAAgBqD,OACzBk+B,EAAiBY,SACpBZ,EAAiBY,OAAS,IAEvBZ,EAAiBY,OAAO15B,GAQ3B+4B,EAAMD,EAAiBY,OAAO15B,IAP9Bk6B,OAA0B/7B,IAAnBy6B,EAAQzjB,EAAEre,EAAEkJ,GAAmB44B,EAAQzjB,EAAEre,EAAE,GAAK8hC,EAAQzjB,EAAEre,EAAEkJ,GACnEm6B,OAA0Bh8B,IAAnBy6B,EAAQzjB,EAAE7T,EAAEtB,GAAmB44B,EAAQzjB,EAAE7T,EAAE,GAAKs3B,EAAQzjB,EAAE7T,EAAEtB,GACnEo6B,OAAyBj8B,IAAnBy6B,EAAQ54B,EAAElJ,EAAEkJ,GAAmB44B,EAAQ54B,EAAElJ,EAAE,GAAK8hC,EAAQ54B,EAAElJ,EAAEkJ,GAClEq6B,OAAyBl8B,IAAnBy6B,EAAQ54B,EAAEsB,EAAEtB,GAAmB44B,EAAQ54B,EAAEsB,EAAE,GAAKs3B,EAAQ54B,EAAEsB,EAAEtB,GAClE+4B,EAAMnJ,cAAc+J,gBAAgBO,EAAMC,EAAMC,EAAKC,GAAKhhC,IAC1Dy/B,EAAiBY,OAAO15B,GAAK+4B,IAIrBD,EAAiBY,OAQ3BX,EAAMD,EAAiBY,QAPvBQ,EAAOtB,EAAQzjB,EAAEre,EACjBqjC,EAAOvB,EAAQzjB,EAAE7T,EACjB84B,EAAMxB,EAAQ54B,EAAElJ,EAChBujC,EAAMzB,EAAQ54B,EAAEsB,EAChBy3B,EAAMnJ,cAAc+J,gBAAgBO,EAAMC,EAAMC,EAAKC,GAAKhhC,IAC1Du/B,EAAQE,iBAAmBC,GAI7BzE,EAAOyE,GAAKT,EAAWgB,IAAYD,EAAcC,MAGrDF,EAAWP,EAAY94B,GAAK64B,EAAQzhC,EACpCmjC,EAAyB,IAAd1B,EAAQpgB,EAAUogB,EAAQ74B,EAAEC,GAAK44B,EAAQ74B,EAAEC,IAAMo5B,EAASp5B,GAAK44B,EAAQ74B,EAAEC,IAAMs0B,EACpE,qBAAlBx8B,KAAK4gC,SACPF,EAASx4B,GAAKs6B,EAEd9B,EAAW8B,CAIvB,CAEI,OADA/B,EAAQU,UAAYD,EACbR,CACX,CAGE,SAASiC,MAAM1c,EAAG5e,EAAGW,GACnB,IASI66B,EACAC,EACAC,EACAC,EACAC,EAbAC,EAAM,GACNC,EAAKld,EAAE,GACPmd,EAAKnd,EAAE,GACPod,EAAKpd,EAAE,GACPqd,EAAKrd,EAAE,GACPsd,EAAKl8B,EAAE,GACPm8B,EAAKn8B,EAAE,GACPo8B,EAAKp8B,EAAE,GACPq8B,EAAKr8B,EAAE,GA2BX,OArBAy7B,EAAQK,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,GAC/B,IACVZ,GAASA,EACTS,GAAMA,EACNC,GAAMA,EACNC,GAAMA,EACNC,GAAMA,GAEJ,EAAMZ,EAAQ,MAChBD,EAAQxvB,KAAKswB,KAAKb,GAClBC,EAAQ1vB,KAAKuwB,IAAIf,GACjBG,EAAS3vB,KAAKuwB,KAAK,EAAM57B,GAAK66B,GAASE,EACvCE,EAAS5vB,KAAKuwB,IAAI57B,EAAI66B,GAASE,IAE/BC,EAAS,EAAMh7B,EACfi7B,EAASj7B,GAEXk7B,EAAI,GAAKF,EAASG,EAAKF,EAASM,EAChCL,EAAI,GAAKF,EAASI,EAAKH,EAASO,EAChCN,EAAI,GAAKF,EAASK,EAAKJ,EAASQ,EAChCP,EAAI,GAAKF,EAASM,EAAKL,EAASS,EACzBR,CACX,CACE,SAASR,kBAAkBQ,EAAKW,GAC9B,IAAIC,EAAKD,EAAK,GACVE,EAAKF,EAAK,GACVG,EAAKH,EAAK,GACVI,EAAKJ,EAAK,GACVK,EAAU7wB,KAAK8wB,MAAM,EAAIJ,EAAKE,EAAK,EAAIH,EAAKE,EAAI,EAAI,EAAID,EAAKA,EAAK,EAAIC,EAAKA,GAC3EI,EAAW/wB,KAAKgxB,KAAK,EAAIP,EAAKC,EAAK,EAAIC,EAAKC,GAC5CK,EAAOjxB,KAAK8wB,MAAM,EAAIL,EAAKG,EAAK,EAAIF,EAAKC,EAAI,EAAI,EAAIF,EAAKA,EAAK,EAAIE,EAAKA,GAC5Ed,EAAI,GAAKgB,EAAUtlB,UACnBskB,EAAI,GAAKkB,EAAWxlB,UACpBskB,EAAI,GAAKoB,EAAO1lB,SACpB,CACE,SAASgkB,iBAAiB2B,GACxB,IAAIL,EAAUK,EAAO,GAAK3lB,UACtBwlB,EAAWG,EAAO,GAAK3lB,UACvB0lB,EAAOC,EAAO,GAAK3lB,UACnB4lB,EAAKnxB,KAAKoxB,IAAIP,EAAU,GACxBQ,EAAKrxB,KAAKoxB,IAAIL,EAAW,GACzBO,EAAKtxB,KAAKoxB,IAAIH,EAAO,GACrBM,EAAKvxB,KAAKuwB,IAAIM,EAAU,GACxBW,EAAKxxB,KAAKuwB,IAAIQ,EAAW,GACzBU,EAAKzxB,KAAKuwB,IAAIU,EAAO,GAKzB,MAAO,CAHCM,EAAKC,EAAKF,EAAKH,EAAKE,EAAKI,EACzBF,EAAKF,EAAKC,EAAKH,EAAKK,EAAKC,EACzBN,EAAKK,EAAKF,EAAKC,EAAKF,EAAKI,EAHzBN,EAAKE,EAAKC,EAAKC,EAAKC,EAAKC,EAKrC,CACE,SAASC,wBACP,IAAIvE,EAAWxgC,KAAKukB,KAAKygB,cAAgBhlC,KAAK2gC,WAC1CxK,EAAWn2B,KAAKohC,UAAU,GAAGp5B,EAAIhI,KAAK2gC,WACtCsE,EAAUjlC,KAAKohC,UAAUphC,KAAKohC,UAAUzgC,OAAS,GAAGqH,EAAIhI,KAAK2gC,WACjE,KAAMH,IAAaxgC,KAAKklC,SAASlD,WAAahiC,KAAKklC,SAASlD,YAAc3B,YAAcrgC,KAAKklC,SAASlD,WAAaiD,GAAWzE,GAAYyE,GAAWjlC,KAAKklC,SAASlD,UAAY7L,GAAYqK,EAAWrK,IAAY,CAC5Mn2B,KAAKklC,SAASlD,WAAaxB,IAC7BxgC,KAAKklC,SAASjD,oBAAqB,EACnCjiC,KAAKklC,SAAS/D,UAAY,GAE5B,IAAIgE,EAAenlC,KAAKugC,iBAAiBC,EAAUxgC,KAAKklC,UACxDllC,KAAK6gC,GAAKsE,CAChB,CAEI,OADAnlC,KAAKklC,SAASlD,UAAYxB,EACnBxgC,KAAK6gC,EAChB,CACE,SAASuE,UAAU3mB,GACjB,IAAI4mB,EACJ,GAAsB,mBAAlBrlC,KAAK4gC,SACPyE,EAAkB5mB,EAAMze,KAAKslC,KACzBhF,QAAQtgC,KAAKkK,EAAIm7B,GAAmB,OACtCrlC,KAAKkK,EAAIm7B,EACTrlC,KAAKulC,MAAO,QAKd,IAFA,IAAIr9B,EAAI,EACJ0S,EAAM5a,KAAKkK,EAAEvJ,OACVuH,EAAI0S,GACTyqB,EAAkB5mB,EAAIvW,GAAKlI,KAAKslC,KAC5BhF,QAAQtgC,KAAKkK,EAAEhC,GAAKm9B,GAAmB,OACzCrlC,KAAKkK,EAAEhC,GAAKm9B,EACZrlC,KAAKulC,MAAO,GAEdr9B,GAAK,CAGb,CACE,SAASs9B,yBACP,GAAIxlC,KAAK42B,KAAKnG,WAAWgV,UAAYzlC,KAAKylC,SAAYzlC,KAAK0lC,gBAAgB/kC,OAG3E,GAAIX,KAAK2lC,KACP3lC,KAAKolC,UAAUplC,KAAK6gC,QADtB,CAMA,IAAI34B,EAFJlI,KAAK2lC,MAAO,EACZ3lC,KAAKulC,KAAOvlC,KAAK4lC,cAEjB,IAAIhrB,EAAM5a,KAAK0lC,gBAAgB/kC,OAC3BklC,EAAa7lC,KAAK8lC,GAAK9lC,KAAK6gC,GAAK7gC,KAAK4S,KAAK1R,EAC/C,IAAKgH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB29B,EAAa7lC,KAAK0lC,gBAAgBx9B,GAAG29B,GAEvC7lC,KAAKolC,UAAUS,GACf7lC,KAAK4lC,eAAgB,EACrB5lC,KAAK2lC,MAAO,EACZ3lC,KAAKylC,QAAUzlC,KAAK42B,KAAKnG,WAAWgV,OAZxC,CAaA,CACE,SAASM,UAAUC,GACjBhmC,KAAK0lC,gBAAgBr7B,KAAK27B,GAC1BhmC,KAAKqwB,UAAU4V,mBAAmBjmC,KACtC,CACE,SAASkmC,cAActP,EAAMhkB,EAAM0yB,EAAMjV,GACvCrwB,KAAK4gC,SAAW,iBAChB5gC,KAAKslC,KAAOA,GAAQ,EACpBtlC,KAAK4S,KAAOA,EACZ5S,KAAKkK,EAAIo7B,EAAO1yB,EAAK1R,EAAIokC,EAAO1yB,EAAK1R,EACrClB,KAAK6gC,GAAKjuB,EAAK1R,EACflB,KAAKulC,MAAO,EACZvlC,KAAK42B,KAAOA,EACZ52B,KAAKqwB,UAAYA,EACjBrwB,KAAKukB,KAAOqS,EAAKrS,KACjBvkB,KAAKkB,GAAI,EACTlB,KAAK8lC,IAAK,EACV9lC,KAAKmmC,IAAM,EACXnmC,KAAK0lC,gBAAkB,GACvB1lC,KAAK4lC,eAAgB,EACrB5lC,KAAKomC,SAAWZ,uBAChBxlC,KAAKolC,UAAYA,UACjBplC,KAAK+lC,UAAYA,SACrB,CACE,SAASM,yBAAyBzP,EAAMhkB,EAAM0yB,EAAMjV,GAWlD,IAAInoB,EAVJlI,KAAK4gC,SAAW,mBAChB5gC,KAAKslC,KAAOA,GAAQ,EACpBtlC,KAAK4S,KAAOA,EACZ5S,KAAKulC,MAAO,EACZvlC,KAAK42B,KAAOA,EACZ52B,KAAKqwB,UAAYA,EACjBrwB,KAAKukB,KAAOqS,EAAKrS,KACjBvkB,KAAKkB,GAAI,EACTlB,KAAK8lC,IAAK,EACV9lC,KAAKylC,SAAU,EAEf,IAAI7qB,EAAMhI,EAAK1R,EAAEP,OAIjB,IAHAX,KAAKkK,EAAI2S,iBAAiB,UAAWjC,GACrC5a,KAAK6gC,GAAKhkB,iBAAiB,UAAWjC,GACtC5a,KAAKmmC,IAAMtpB,iBAAiB,UAAWjC,GAClC1S,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAKkK,EAAEhC,GAAK0K,EAAK1R,EAAEgH,GAAKlI,KAAKslC,KAC7BtlC,KAAK6gC,GAAG34B,GAAK0K,EAAK1R,EAAEgH,GAEtBlI,KAAK4lC,eAAgB,EACrB5lC,KAAK0lC,gBAAkB,GACvB1lC,KAAKomC,SAAWZ,uBAChBxlC,KAAKolC,UAAYA,UACjBplC,KAAK+lC,UAAYA,SACrB,CACE,SAASO,uBAAuB1P,EAAMhkB,EAAM0yB,EAAMjV,GAChDrwB,KAAK4gC,SAAW,iBAChB5gC,KAAKohC,UAAYxuB,EAAK1R,EACtBlB,KAAKqhC,kBAAoB,GACzBrhC,KAAK2gC,WAAa/J,EAAKhkB,KAAKmT,GAC5B/lB,KAAKylC,SAAU,EACfzlC,KAAKklC,SAAW,CACdlD,UAAW3B,UACXc,UAAW,EACXjiC,MAAO,EACP+iC,oBAAoB,GAEtBjiC,KAAKkB,GAAI,EACTlB,KAAK8lC,IAAK,EACV9lC,KAAK4S,KAAOA,EACZ5S,KAAKslC,KAAOA,GAAQ,EACpBtlC,KAAK42B,KAAOA,EACZ52B,KAAKqwB,UAAYA,EACjBrwB,KAAKukB,KAAOqS,EAAKrS,KACjBvkB,KAAKkK,EAAIm2B,UACTrgC,KAAK6gC,GAAKR,UACVrgC,KAAK4lC,eAAgB,EACrB5lC,KAAKomC,SAAWZ,uBAChBxlC,KAAKolC,UAAYA,UACjBplC,KAAKugC,iBAAmBA,iBACxBvgC,KAAK0lC,gBAAkB,CAACX,sBAAsB3hC,KAAKpD,OACnDA,KAAK+lC,UAAYA,SACrB,CACE,SAASQ,kCAAkC3P,EAAMhkB,EAAM0yB,EAAMjV,GAE3D,IAAInoB,EADJlI,KAAK4gC,SAAW,mBAEhB,IACI34B,EACA5I,EACAoiC,EACAC,EAJA9mB,EAAMhI,EAAK1R,EAAEP,OAKjB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAM,EAAG1S,GAAK,EACxB0K,EAAK1R,EAAEgH,GAAGu5B,IAAM7uB,EAAK1R,EAAEgH,GAAGD,GAAK2K,EAAK1R,EAAEgH,EAAI,IAAM0K,EAAK1R,EAAEgH,EAAI,GAAGD,IAChEA,EAAI2K,EAAK1R,EAAEgH,GAAGD,EACd5I,EAAIuT,EAAK1R,EAAEgH,EAAI,GAAGD,EAClBw5B,EAAK7uB,EAAK1R,EAAEgH,GAAGu5B,GACfC,EAAK9uB,EAAK1R,EAAEgH,GAAGw5B,IACE,IAAbz5B,EAAEtH,SAAkBsH,EAAE,KAAO5I,EAAE,IAAM4I,EAAE,KAAO5I,EAAE,KAAO+gC,IAAI1E,cAAczzB,EAAE,GAAIA,EAAE,GAAI5I,EAAE,GAAIA,EAAE,GAAI4I,EAAE,GAAKw5B,EAAG,GAAIx5B,EAAE,GAAKw5B,EAAG,KAAOrB,IAAI1E,cAAczzB,EAAE,GAAIA,EAAE,GAAI5I,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAKqiC,EAAG,GAAIriC,EAAE,GAAKqiC,EAAG,KAAoB,IAAbz5B,EAAEtH,SAAkBsH,EAAE,KAAO5I,EAAE,IAAM4I,EAAE,KAAO5I,EAAE,IAAM4I,EAAE,KAAO5I,EAAE,KAAO+gC,IAAIR,cAAc33B,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAI5I,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAI4I,EAAE,GAAKw5B,EAAG,GAAIx5B,EAAE,GAAKw5B,EAAG,GAAIx5B,EAAE,GAAKw5B,EAAG,KAAOrB,IAAIR,cAAc33B,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAI5I,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAKqiC,EAAG,GAAIriC,EAAE,GAAKqiC,EAAG,GAAIriC,EAAE,GAAKqiC,EAAG,OACld9uB,EAAK1R,EAAEgH,GAAGu5B,GAAK,KACf7uB,EAAK1R,EAAEgH,GAAGw5B,GAAK,MAEbz5B,EAAE,KAAO5I,EAAE,IAAM4I,EAAE,KAAO5I,EAAE,IAAgB,IAAVoiC,EAAG,IAAsB,IAAVA,EAAG,IAAsB,IAAVC,EAAG,IAAsB,IAAVA,EAAG,KACnE,IAAbz5B,EAAEtH,QAAgBsH,EAAE,KAAO5I,EAAE,IAAgB,IAAVoiC,EAAG,IAAsB,IAAVC,EAAG,MACvD9uB,EAAK1R,EAAEgH,GAAGu5B,GAAK,KACf7uB,EAAK1R,EAAEgH,GAAGw5B,GAAK,OAKvB1hC,KAAK0lC,gBAAkB,CAACX,sBAAsB3hC,KAAKpD,OACnDA,KAAK4S,KAAOA,EACZ5S,KAAKohC,UAAYxuB,EAAK1R,EACtBlB,KAAKqhC,kBAAoB,GACzBrhC,KAAK2gC,WAAa/J,EAAKhkB,KAAKmT,GAC5B/lB,KAAKkB,GAAI,EACTlB,KAAK8lC,IAAK,EACV9lC,KAAK4lC,eAAgB,EACrB5lC,KAAKslC,KAAOA,GAAQ,EACpBtlC,KAAK42B,KAAOA,EACZ52B,KAAKqwB,UAAYA,EACjBrwB,KAAKukB,KAAOqS,EAAKrS,KACjBvkB,KAAKomC,SAAWZ,uBAChBxlC,KAAKolC,UAAYA,UACjBplC,KAAKugC,iBAAmBA,iBACxBvgC,KAAKylC,SAAU,EACf,IAAIe,EAAS5zB,EAAK1R,EAAE,GAAG+G,EAAEtH,OAGzB,IAFAX,KAAKkK,EAAI2S,iBAAiB,UAAW2pB,GACrCxmC,KAAK6gC,GAAKhkB,iBAAiB,UAAW2pB,GACjCt+B,EAAI,EAAGA,EAAIs+B,EAAQt+B,GAAK,EAC3BlI,KAAKkK,EAAEhC,GAAKm4B,UACZrgC,KAAK6gC,GAAG34B,GAAKm4B,UAEfrgC,KAAKklC,SAAW,CACdlD,UAAW3B,UACXc,UAAW,EACXjiC,MAAO2d,iBAAiB,UAAW2pB,IAErCxmC,KAAK+lC,UAAYA,SACrB,CACE,IAAIU,gBA2BO,CACPC,QA3BF,SAAiB9P,EAAMhkB,EAAMlW,EAAM4oC,EAAMjV,GAIvC,IAAI7oB,EACJ,GAJIoL,EAAK+zB,MACP/zB,EAAOgkB,EAAKnG,WAAWmW,YAAYF,QAAQ9zB,IAGxCA,EAAK1R,EAAEP,OAEL,GAAyB,iBAAdiS,EAAK1R,EAAE,GACvBsG,EAAI,IAAI6+B,yBAAyBzP,EAAMhkB,EAAM0yB,EAAMjV,QAEnD,OAAQ3zB,GACN,KAAK,EACH8K,EAAI,IAAI8+B,uBAAuB1P,EAAMhkB,EAAM0yB,EAAMjV,GACjD,MACF,KAAK,EACH7oB,EAAI,IAAI++B,kCAAkC3P,EAAMhkB,EAAM0yB,EAAMjV,QAThE7oB,EAAI,IAAI0+B,cAActP,EAAMhkB,EAAM0yB,EAAMjV,GAkB1C,OAHI7oB,EAAEk+B,gBAAgB/kC,QACpB0vB,EAAU4V,mBAAmBz+B,GAExBA,CACb,GAOE,SAASq/B,2BAA2B,CACpCA,yBAAyBhkC,UAAY,CACnCojC,mBAAoB,SAA4B1xB,IACD,IAAzCvU,KAAK8mC,kBAAkBvf,QAAQhT,KACjCvU,KAAK8mC,kBAAkBz8B,KAAKkK,GAC5BvU,KAAKqwB,UAAU4V,mBAAmBjmC,MAClCA,KAAK+mC,aAAc,EAE3B,EACIC,yBAA0B,WAExB,IAAI9+B,EADJlI,KAAKulC,MAAO,EAEZ,IAAI3qB,EAAM5a,KAAK8mC,kBAAkBnmC,OACjC,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAK8mC,kBAAkB5+B,GAAGk+B,WACtBpmC,KAAK8mC,kBAAkB5+B,GAAGq9B,OAC5BvlC,KAAKulC,MAAO,EAGtB,EACI0B,6BAA8B,SAAsC5W,GAClErwB,KAAKqwB,UAAYA,EACjBrwB,KAAK8mC,kBAAoB,GACzB9mC,KAAKulC,MAAO,EACZvlC,KAAK+mC,aAAc,CACzB,GAGE,IAAIG,UAIKzM,YAAY,EAHnB,WACE,OAAO5d,iBAAiB,UAAW,EACzC,GAIE,SAASsqB,YACPnnC,KAAKwmB,GAAI,EACTxmB,KAAK66B,QAAU,EACf76B,KAAK86B,WAAa,EAClB96B,KAAKkK,EAAIiT,iBAAiBnd,KAAK86B,YAC/B96B,KAAKqd,EAAIF,iBAAiBnd,KAAK86B,YAC/B96B,KAAKkI,EAAIiV,iBAAiBnd,KAAK86B,WACnC,CACEqM,UAAUtkC,UAAUukC,YAAc,SAAUzgB,EAAQ/L,GAClD5a,KAAKwmB,EAAIG,EACT3mB,KAAKqnC,UAAUzsB,GAEf,IADA,IAAI1S,EAAI,EACDA,EAAI0S,GACT5a,KAAKkK,EAAEhC,GAAKg/B,UAAUlM,aACtBh7B,KAAKqd,EAAEnV,GAAKg/B,UAAUlM,aACtBh7B,KAAKkI,EAAEA,GAAKg/B,UAAUlM,aACtB9yB,GAAK,CAEX,EACEi/B,UAAUtkC,UAAUwkC,UAAY,SAAUzsB,GACxC,KAAO5a,KAAK86B,WAAalgB,GACvB5a,KAAKsnC,oBAEPtnC,KAAK66B,QAAUjgB,CACnB,EACEusB,UAAUtkC,UAAUykC,kBAAoB,WACtCtnC,KAAKkK,EAAIlK,KAAKkK,EAAErF,OAAOsY,iBAAiBnd,KAAK86B,aAC7C96B,KAAKkI,EAAIlI,KAAKkI,EAAErD,OAAOsY,iBAAiBnd,KAAK86B,aAC7C96B,KAAKqd,EAAIrd,KAAKqd,EAAExY,OAAOsY,iBAAiBnd,KAAK86B,aAC7C96B,KAAK86B,YAAc,CACvB,EACEqM,UAAUtkC,UAAU0kC,QAAU,SAAUvoC,EAAGwK,EAAG9M,EAAM8qC,EAAKlwB,GACvD,IAAIyF,EAKJ,OAJA/c,KAAK66B,QAAUxnB,KAAK6K,IAAIle,KAAK66B,QAAS2M,EAAM,GACxCxnC,KAAK66B,SAAW76B,KAAK86B,YACvB96B,KAAKsnC,oBAEC5qC,GACN,IAAK,IACHqgB,EAAM/c,KAAKkK,EACX,MACF,IAAK,IACH6S,EAAM/c,KAAKkI,EACX,MACF,IAAK,IACH6U,EAAM/c,KAAKqd,EACX,MACF,QACEN,EAAM,KAGLA,EAAIyqB,IAAQzqB,EAAIyqB,KAASlwB,KAC5ByF,EAAIyqB,GAAON,UAAUlM,cAEvBje,EAAIyqB,GAAK,GAAKxoC,EACd+d,EAAIyqB,GAAK,GAAKh+B,CAClB,EACE29B,UAAUtkC,UAAU4kC,YAAc,SAAUC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIP,EAAKlwB,GACvEtX,KAAKunC,QAAQG,EAAIC,EAAI,IAAKH,EAAKlwB,GAC/BtX,KAAKunC,QAAQK,EAAIC,EAAI,IAAKL,EAAKlwB,GAC/BtX,KAAKunC,QAAQO,EAAIC,EAAI,IAAKP,EAAKlwB,EACnC,EACE6vB,UAAUtkC,UAAUmlC,QAAU,WAC5B,IAAIC,EAAU,IAAId,UAClBc,EAAQb,YAAYpnC,KAAKwmB,EAAGxmB,KAAK66B,SACjC,IAAIqN,EAAWloC,KAAKkK,EAChBi+B,EAAYnoC,KAAKqd,EACjB+qB,EAAWpoC,KAAKkI,EAChB6sB,EAAO,EACP/0B,KAAKwmB,IACPyhB,EAAQR,YAAYS,EAAS,GAAG,GAAIA,EAAS,GAAG,GAAIE,EAAS,GAAG,GAAIA,EAAS,GAAG,GAAID,EAAU,GAAG,GAAIA,EAAU,GAAG,GAAI,GAAG,GACzHpT,EAAO,GAET,IAEI7sB,EAFAmgC,EAAMroC,KAAK66B,QAAU,EACrBjgB,EAAM5a,KAAK66B,QAEf,IAAK3yB,EAAI6sB,EAAM7sB,EAAI0S,EAAK1S,GAAK,EAC3B+/B,EAAQR,YAAYS,EAASG,GAAK,GAAIH,EAASG,GAAK,GAAID,EAASC,GAAK,GAAID,EAASC,GAAK,GAAIF,EAAUE,GAAK,GAAIF,EAAUE,GAAK,GAAIngC,GAAG,GACrImgC,GAAO,EAET,OAAOJ,CACX,EACEd,UAAUtkC,UAAUlC,OAAS,WAC3B,OAAOX,KAAK66B,OAChB,EAEE,IAAIyN,WA6BEzuB,QAAU4gB,YAAY,EA5B1B,WACE,OAAO,IAAI0M,SACjB,EACI,SAAiBoB,GACf,IACIrgC,EADA0S,EAAM2tB,EAAU1N,QAEpB,IAAK3yB,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBg/B,UAAUjM,QAAQsN,EAAUr+B,EAAEhC,IAC9Bg/B,UAAUjM,QAAQsN,EAAUrgC,EAAEA,IAC9Bg/B,UAAUjM,QAAQsN,EAAUlrB,EAAEnV,IAC9BqgC,EAAUr+B,EAAEhC,GAAK,KACjBqgC,EAAUrgC,EAAEA,GAAK,KACjBqgC,EAAUlrB,EAAEnV,GAAK,KAEnBqgC,EAAU1N,QAAU,EACpB0N,EAAU/hB,GAAI,CACpB,GAaI3M,QAAQ2uB,MAZR,SAAeC,GACb,IACIvgC,EADAwgC,EAAS7uB,QAAQmhB,aAEjBpgB,OAAwBvU,IAAlBoiC,EAAM5N,QAAwB4N,EAAMv+B,EAAEvJ,OAAS8nC,EAAM5N,QAG/D,IAFA6N,EAAOrB,UAAUzsB,GACjB8tB,EAAOliB,EAAIiiB,EAAMjiB,EACZte,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBwgC,EAAOjB,YAAYgB,EAAMv+B,EAAEhC,GAAG,GAAIugC,EAAMv+B,EAAEhC,GAAG,GAAIugC,EAAMprB,EAAEnV,GAAG,GAAIugC,EAAMprB,EAAEnV,GAAG,GAAIugC,EAAMvgC,EAAEA,GAAG,GAAIugC,EAAMvgC,EAAEA,GAAG,GAAIA,GAE/G,OAAOwgC,CACb,EAGW7uB,SAFHA,QAKN,SAAS8uB,kBACP3oC,KAAK66B,QAAU,EACf76B,KAAK86B,WAAa,EAClB96B,KAAKqkB,OAASlH,iBAAiBnd,KAAK86B,WACxC,CACE6N,gBAAgB9lC,UAAU+lC,SAAW,SAAU9K,GACzC99B,KAAK66B,UAAY76B,KAAK86B,aACxB96B,KAAKqkB,OAASrkB,KAAKqkB,OAAOxf,OAAOsY,iBAAiBnd,KAAK86B,aACvD96B,KAAK86B,YAAc,GAErB96B,KAAKqkB,OAAOrkB,KAAK66B,SAAWiD,EAC5B99B,KAAK66B,SAAW,CACpB,EACE8N,gBAAgB9lC,UAAUgmC,cAAgB,WACxC,IAAI3gC,EACJ,IAAKA,EAAI,EAAGA,EAAIlI,KAAK66B,QAAS3yB,GAAK,EACjCogC,UAAUrN,QAAQj7B,KAAKqkB,OAAOnc,IAEhClI,KAAK66B,QAAU,CACnB,EAEE,IAAIiO,qBACE/d,GAAK,CACPge,mBAMF,WAQE,OANIlO,QAEgBE,KADlBF,SAAW,GAGO,IAAI8N,eAG9B,EAdM1N,QAeF,SAAiB+N,GACf,IAAI9gC,EACA0S,EAAMouB,EAAgBnO,QAC1B,IAAK3yB,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBogC,UAAUrN,QAAQ+N,EAAgB3kB,OAAOnc,IAE3C8gC,EAAgBnO,QAAU,EACtBA,UAAYC,aACdC,KAAOR,QAAgB,OAAEQ,MACzBD,YAAc,GAEhBC,KAAKF,SAAWmO,EAChBnO,SAAW,CACjB,GA1BQA,QAAU,EACVC,WAAa,EACbC,KAAO5d,iBAAiB2d,YAyBrB/P,IA/BHA,GAIA8P,QACAC,WACAC,KA4BFkO,qBAAuB,WACzB,IAAI5I,GAAY,OAChB,SAAS6I,EAAiB1I,EAAU2I,EAAe1I,GACjD,IACI2I,EACAC,EACAC,EACA9lB,EACAtiB,EACAuiB,EACAC,EACA8Y,EACA+M,EATArI,EAAiBT,EAAQU,UAUzB2E,EAAK9lC,KAAKohC,UACd,GAAIZ,EAAWsF,EAAG,GAAG99B,EAAIhI,KAAK2gC,WAC5ByI,EAAWtD,EAAG,GAAG79B,EAAE,GACnBqhC,GAAS,EACTpI,EAAiB,OACZ,GAAIV,GAAYsF,EAAGA,EAAGnlC,OAAS,GAAGqH,EAAIhI,KAAK2gC,WAChDyI,EAAWtD,EAAGA,EAAGnlC,OAAS,GAAGsH,EAAI69B,EAAGA,EAAGnlC,OAAS,GAAGsH,EAAE,GAAK69B,EAAGA,EAAGnlC,OAAS,GAAGtB,EAAE,GAM9EiqC,GAAS,MACJ,CAOL,IANA,IAGIxI,EACAC,EACAC,EALA94B,EAAIg5B,EACJtmB,EAAMkrB,EAAGnlC,OAAS,EAClBwZ,GAAO,EAIJA,IACL2mB,EAAUgF,EAAG59B,MACb64B,EAAc+E,EAAG59B,EAAI,IACLF,EAAIhI,KAAK2gC,WAAaH,KAGlCt4B,EAAI0S,EAAM,EACZ1S,GAAK,EAELiS,GAAO,EAMX,GAHA6mB,EAAmBhhC,KAAKqhC,kBAAkBn5B,IAAM,CAAA,EAEhDg5B,EAAiBh5B,IADjBohC,EAAuB,IAAdxI,EAAQpgB,GAEJ,CACX,GAAI8f,GAAYO,EAAY/4B,EAAIhI,KAAK2gC,WACnCnE,EAAO,OACF,GAAIgE,EAAWM,EAAQ94B,EAAIhI,KAAK2gC,WACrCnE,EAAO,MACF,CACL,IAAIyE,EACAD,EAAiBY,OACnBX,EAAMD,EAAiBY,QAEvBX,EAAMnJ,cAAc+J,gBAAgBf,EAAQzjB,EAAEre,EAAG8hC,EAAQzjB,EAAE7T,EAAGs3B,EAAQ54B,EAAElJ,EAAG8hC,EAAQ54B,EAAEsB,GAAGjI,IACxFy/B,EAAiBY,OAASX,GAE5BzE,EAAOyE,GAAKT,GAAYM,EAAQ94B,EAAIhI,KAAK2gC,cAAgBI,EAAY/4B,EAAIhI,KAAK2gC,YAAcG,EAAQ94B,EAAIhI,KAAK2gC,aACzH,CACU0I,EAAWtI,EAAY94B,EAAI84B,EAAY94B,EAAE,GAAK64B,EAAQzhC,EAAE,EAClE,CACQ+pC,EAAWtI,EAAQ74B,EAAE,EAC7B,CAIM,IAHAwb,EAAO0lB,EAActO,QACrBnX,EAAO0lB,EAASlhC,EAAE,GAAGvH,OACrB8/B,EAAQU,UAAYD,EACf1d,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB,IAAKtiB,EAAI,EAAGA,EAAIwiB,EAAMxiB,GAAK,EACzBqoC,EAAcD,EAASF,EAASlhC,EAAEsb,GAAGtiB,GAAKkoC,EAASlhC,EAAEsb,GAAGtiB,IAAMmoC,EAASnhC,EAAEsb,GAAGtiB,GAAKkoC,EAASlhC,EAAEsb,GAAGtiB,IAAMs7B,EACrG2M,EAAcjhC,EAAEsb,GAAGtiB,GAAKqoC,EACxBA,EAAcD,EAASF,EAAS/rB,EAAEmG,GAAGtiB,GAAKkoC,EAAS/rB,EAAEmG,GAAGtiB,IAAMmoC,EAAShsB,EAAEmG,GAAGtiB,GAAKkoC,EAAS/rB,EAAEmG,GAAGtiB,IAAMs7B,EACrG2M,EAAc9rB,EAAEmG,GAAGtiB,GAAKqoC,EACxBA,EAAcD,EAASF,EAASl/B,EAAEsZ,GAAGtiB,GAAKkoC,EAASl/B,EAAEsZ,GAAGtiB,IAAMmoC,EAASn/B,EAAEsZ,GAAGtiB,GAAKkoC,EAASl/B,EAAEsZ,GAAGtiB,IAAMs7B,EACrG2M,EAAcj/B,EAAEsZ,GAAGtiB,GAAKqoC,CAGlC,CACI,SAASC,IACP,IAAIhJ,EAAWxgC,KAAKukB,KAAKygB,cAAgBhlC,KAAK2gC,WAC1CxK,EAAWn2B,KAAKohC,UAAU,GAAGp5B,EAAIhI,KAAK2gC,WACtCsE,EAAUjlC,KAAKohC,UAAUphC,KAAKohC,UAAUzgC,OAAS,GAAGqH,EAAIhI,KAAK2gC,WAC7DqB,EAAYhiC,KAAKklC,SAASlD,UAQ9B,OAPMA,IAAc3B,IAAc2B,EAAY7L,GAAYqK,EAAWrK,GAAY6L,EAAYiD,GAAWzE,EAAWyE,KAEjHjlC,KAAKklC,SAAS/D,UAAYa,EAAYxB,EAAWxgC,KAAKklC,SAAS/D,UAAY,EAC3EnhC,KAAKkpC,iBAAiB1I,EAAUxgC,KAAK6gC,GAAI7gC,KAAKklC,WAGhDllC,KAAKklC,SAASlD,UAAYxB,EACnBxgC,KAAK6gC,EAClB,CACI,SAAS4I,IACPzpC,KAAK0pC,MAAQ1pC,KAAK2pC,oBACxB,CAcI,SAASvE,EAAU6C,IAbnB,SAAqB2B,EAAQC,GAC3B,GAAID,EAAO/O,UAAYgP,EAAOhP,SAAW+O,EAAOpjB,IAAMqjB,EAAOrjB,EAC3D,OAAO,EAET,IAAIte,EACA0S,EAAMgvB,EAAO/O,QACjB,IAAK3yB,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB,GAAI0hC,EAAO1/B,EAAEhC,GAAG,KAAO2hC,EAAO3/B,EAAEhC,GAAG,IAAM0hC,EAAO1/B,EAAEhC,GAAG,KAAO2hC,EAAO3/B,EAAEhC,GAAG,IAAM0hC,EAAOvsB,EAAEnV,GAAG,KAAO2hC,EAAOxsB,EAAEnV,GAAG,IAAM0hC,EAAOvsB,EAAEnV,GAAG,KAAO2hC,EAAOxsB,EAAEnV,GAAG,IAAM0hC,EAAO1hC,EAAEA,GAAG,KAAO2hC,EAAO3hC,EAAEA,GAAG,IAAM0hC,EAAO1hC,EAAEA,GAAG,KAAO2hC,EAAO3hC,EAAEA,GAAG,GAC1N,OAAO,EAGX,OAAO,CACb,EAEW4hC,CAAY9pC,KAAKkK,EAAG+9B,KACvBjoC,KAAKkK,EAAIo+B,UAAUE,MAAMP,GACzBjoC,KAAK2pC,qBAAqBd,gBAC1B7oC,KAAK2pC,qBAAqBf,SAAS5oC,KAAKkK,GACxClK,KAAKulC,MAAO,EACZvlC,KAAK0pC,MAAQ1pC,KAAK2pC,qBAE1B,CACI,SAASnE,IACP,GAAIxlC,KAAK42B,KAAKnG,WAAWgV,UAAYzlC,KAAKylC,QAG1C,GAAKzlC,KAAK0lC,gBAAgB/kC,OAI1B,GAAIX,KAAK2lC,KACP3lC,KAAKolC,UAAUplC,KAAK6gC,QADtB,CAMA,IAAIgF,EAQA39B,EAVJlI,KAAK2lC,MAAO,EACZ3lC,KAAKulC,MAAO,EAGVM,EADE7lC,KAAK8lC,GACM9lC,KAAK6gC,GACT7gC,KAAK4S,KAAKiS,GACN7kB,KAAK4S,KAAKiS,GAAG3jB,EAEblB,KAAK4S,KAAKmR,GAAG7iB,EAG5B,IAAI0Z,EAAM5a,KAAK0lC,gBAAgB/kC,OAC/B,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB29B,EAAa7lC,KAAK0lC,gBAAgBx9B,GAAG29B,GAEvC7lC,KAAKolC,UAAUS,GACf7lC,KAAK2lC,MAAO,EACZ3lC,KAAKylC,QAAUzlC,KAAK42B,KAAKnG,WAAWgV,OAlB1C,MANQzlC,KAAKulC,MAAO,CAyBpB,CACI,SAASwE,EAAcnT,EAAMhkB,EAAMlW,GACjCsD,KAAK4gC,SAAW,QAChB5gC,KAAKukB,KAAOqS,EAAKrS,KACjBvkB,KAAKqwB,UAAYuG,EACjB52B,KAAK42B,KAAOA,EACZ52B,KAAK4S,KAAOA,EACZ5S,KAAKkB,GAAI,EACTlB,KAAK8lC,IAAK,EACV9lC,KAAKulC,MAAO,EACZ,IAAIlf,EAAoB,IAAT3pB,EAAakW,EAAKmR,GAAG7iB,EAAI0R,EAAKiS,GAAG3jB,EAChDlB,KAAKkK,EAAIo+B,UAAUE,MAAMniB,GACzBrmB,KAAK6gC,GAAKyH,UAAUE,MAAMxoC,KAAKkK,GAC/BlK,KAAK2pC,qBAAuBb,oBAAoBC,qBAChD/oC,KAAK0pC,MAAQ1pC,KAAK2pC,qBAClB3pC,KAAK0pC,MAAMd,SAAS5oC,KAAKkK,GACzBlK,KAAKgqC,MAAQP,EACbzpC,KAAK0lC,gBAAkB,EAC7B,CACI,SAASK,EAAUC,GACjBhmC,KAAK0lC,gBAAgBr7B,KAAK27B,GAC1BhmC,KAAKqwB,UAAU4V,mBAAmBjmC,KACxC,CAKI,SAASiqC,EAAuBrT,EAAMhkB,EAAMlW,GAC1CsD,KAAK4gC,SAAW,QAChB5gC,KAAKukB,KAAOqS,EAAKrS,KACjBvkB,KAAK42B,KAAOA,EACZ52B,KAAKqwB,UAAYuG,EACjB52B,KAAK2gC,WAAa/J,EAAKhkB,KAAKmT,GAC5B/lB,KAAKohC,UAAqB,IAAT1kC,EAAakW,EAAKmR,GAAG7iB,EAAI0R,EAAKiS,GAAG3jB,EAClDlB,KAAKqhC,kBAAoB,GACzBrhC,KAAKkB,GAAI,EACTlB,KAAK8lC,IAAK,EACV,IAAIlrB,EAAM5a,KAAKohC,UAAU,GAAGn5B,EAAE,GAAGC,EAAEvH,OACnCX,KAAKkK,EAAIo+B,UAAUtN,aACnBh7B,KAAKkK,EAAEk9B,YAAYpnC,KAAKohC,UAAU,GAAGn5B,EAAE,GAAGue,EAAG5L,GAC7C5a,KAAK6gC,GAAKyH,UAAUE,MAAMxoC,KAAKkK,GAC/BlK,KAAK2pC,qBAAuBb,oBAAoBC,qBAChD/oC,KAAK0pC,MAAQ1pC,KAAK2pC,qBAClB3pC,KAAK0pC,MAAMd,SAAS5oC,KAAKkK,GACzBlK,KAAKgiC,UAAY3B,EACjBrgC,KAAKgqC,MAAQP,EACbzpC,KAAKklC,SAAW,CACdlD,UAAW3B,EACXc,UAAW,GAEbnhC,KAAK0lC,gBAAkB,CAAC8D,EAA4BpmC,KAAKpD,MAC/D,CA5BI+pC,EAAclnC,UAAUqmC,iBAAmBA,EAC3Ca,EAAclnC,UAAUujC,SAAWZ,EACnCuE,EAAclnC,UAAUuiC,UAAYA,EACpC2E,EAAclnC,UAAUkjC,UAAYA,EA0BpCkE,EAAuBpnC,UAAUujC,SAAWZ,EAC5CyE,EAAuBpnC,UAAUqmC,iBAAmBA,EACpDe,EAAuBpnC,UAAUuiC,UAAYA,EAC7C6E,EAAuBpnC,UAAUkjC,UAAYA,EAC7C,IAAImE,EAAmB,WACrB,IAAIC,EAASrrB,YACb,SAASsrB,EAAwBxT,EAAMhkB,GACrC5S,KAAKkK,EAAIo+B,UAAUtN,aACnBh7B,KAAKkK,EAAEk9B,aAAY,EAAM,GACzBpnC,KAAK2pC,qBAAuBb,oBAAoBC,qBAChD/oC,KAAK0pC,MAAQ1pC,KAAK2pC,qBAClB3pC,KAAK2pC,qBAAqBf,SAAS5oC,KAAKkK,GACxClK,KAAKoH,EAAIwL,EAAKxL,EACdpH,KAAK42B,KAAOA,EACZ52B,KAAKukB,KAAOqS,EAAKrS,KACjBvkB,KAAKylC,SAAU,EACfzlC,KAAKinC,6BAA6BrQ,GAClC52B,KAAKwH,EAAIi/B,gBAAgBC,QAAQ9P,EAAMhkB,EAAKpL,EAAG,EAAG,EAAGxH,MACrDA,KAAKiI,EAAIw+B,gBAAgBC,QAAQ9P,EAAMhkB,EAAK3K,EAAG,EAAG,EAAGjI,MACjDA,KAAK8mC,kBAAkBnmC,OACzBX,KAAKkB,GAAI,GAETlB,KAAKkB,GAAI,EACTlB,KAAKqqC,mBAEf,CA+CM,OA9CAD,EAAwBvnC,UAAY,CAClCmnC,MAAOP,EACPrD,SAAU,WACJpmC,KAAK42B,KAAKnG,WAAWgV,UAAYzlC,KAAKylC,UAG1CzlC,KAAKylC,QAAUzlC,KAAK42B,KAAKnG,WAAWgV,QACpCzlC,KAAKgnC,2BACDhnC,KAAKulC,MACPvlC,KAAKqqC,mBAEjB,EACQA,iBAAkB,WAChB,IAAIC,EAAKtqC,KAAKwH,EAAE0C,EAAE,GACdqgC,EAAKvqC,KAAKwH,EAAE0C,EAAE,GACdsgC,EAAKxqC,KAAKiI,EAAEiC,EAAE,GAAK,EACnB06B,EAAK5kC,KAAKiI,EAAEiC,EAAE,GAAK,EACnBugC,EAAiB,IAAXzqC,KAAKoH,EACXsjC,EAAK1qC,KAAKkK,EACdwgC,EAAGxgC,EAAE,GAAG,GAAKogC,EACbI,EAAGxgC,EAAE,GAAG,GAAKqgC,EAAK3F,EAClB8F,EAAGxgC,EAAE,GAAG,GAAKugC,EAAMH,EAAKE,EAAKF,EAAKE,EAClCE,EAAGxgC,EAAE,GAAG,GAAKqgC,EACbG,EAAGxgC,EAAE,GAAG,GAAKogC,EACbI,EAAGxgC,EAAE,GAAG,GAAKqgC,EAAK3F,EAClB8F,EAAGxgC,EAAE,GAAG,GAAKugC,EAAMH,EAAKE,EAAKF,EAAKE,EAClCE,EAAGxgC,EAAE,GAAG,GAAKqgC,EACbG,EAAGxiC,EAAE,GAAG,GAAKuiC,EAAMH,EAAKE,EAAKL,EAASG,EAAKE,EAAKL,EAChDO,EAAGxiC,EAAE,GAAG,GAAKqiC,EAAK3F,EAClB8F,EAAGxiC,EAAE,GAAG,GAAKuiC,EAAMH,EAAKE,EAAKF,EAAKE,EAClCE,EAAGxiC,EAAE,GAAG,GAAKqiC,EAAK3F,EAAKuF,EACvBO,EAAGxiC,EAAE,GAAG,GAAKuiC,EAAMH,EAAKE,EAAKL,EAASG,EAAKE,EAAKL,EAChDO,EAAGxiC,EAAE,GAAG,GAAKqiC,EAAK3F,EAClB8F,EAAGxiC,EAAE,GAAG,GAAKuiC,EAAMH,EAAKE,EAAKF,EAAKE,EAClCE,EAAGxiC,EAAE,GAAG,GAAKqiC,EAAK3F,EAAKuF,EACvBO,EAAGrtB,EAAE,GAAG,GAAKotB,EAAMH,EAAKE,EAAKL,EAASG,EAAKE,EAAKL,EAChDO,EAAGrtB,EAAE,GAAG,GAAKktB,EAAK3F,EAClB8F,EAAGrtB,EAAE,GAAG,GAAKotB,EAAMH,EAAKE,EAAKF,EAAKE,EAClCE,EAAGrtB,EAAE,GAAG,GAAKktB,EAAK3F,EAAKuF,EACvBO,EAAGrtB,EAAE,GAAG,GAAKotB,EAAMH,EAAKE,EAAKL,EAASG,EAAKE,EAAKL,EAChDO,EAAGrtB,EAAE,GAAG,GAAKktB,EAAK3F,EAClB8F,EAAGrtB,EAAE,GAAG,GAAKotB,EAAMH,EAAKE,EAAKF,EAAKE,EAClCE,EAAGrtB,EAAE,GAAG,GAAKktB,EAAK3F,EAAKuF,CACjC,GAEM3vB,gBAAgB,CAACqsB,0BAA2BuD,GACrCA,CACb,CArE2B,GAsEnBO,EAAoB,WACtB,SAASC,EAAyBhU,EAAMhkB,GACtC5S,KAAKkK,EAAIo+B,UAAUtN,aACnBh7B,KAAKkK,EAAEk9B,aAAY,EAAM,GACzBpnC,KAAK42B,KAAOA,EACZ52B,KAAKukB,KAAOqS,EAAKrS,KACjBvkB,KAAK4S,KAAOA,EACZ5S,KAAKylC,SAAU,EACfzlC,KAAKoH,EAAIwL,EAAKxL,EACdpH,KAAKinC,6BAA6BrQ,GAClB,IAAZhkB,EAAKi4B,IACP7qC,KAAK8qC,GAAKrE,gBAAgBC,QAAQ9P,EAAMhkB,EAAKk4B,GAAI,EAAG,EAAG9qC,MACvDA,KAAK+qC,GAAKtE,gBAAgBC,QAAQ9P,EAAMhkB,EAAKm4B,GAAI,EAAG,IAAM/qC,MAC1DA,KAAKgrC,cAAgBhrC,KAAKirC,mBAE1BjrC,KAAKgrC,cAAgBhrC,KAAKkrC,qBAE5BlrC,KAAK+jB,GAAK0iB,gBAAgBC,QAAQ9P,EAAMhkB,EAAKmR,GAAI,EAAG,EAAG/jB,MACvDA,KAAKwH,EAAIi/B,gBAAgBC,QAAQ9P,EAAMhkB,EAAKpL,EAAG,EAAG,EAAGxH,MACrDA,KAAK2gB,EAAI8lB,gBAAgBC,QAAQ9P,EAAMhkB,EAAK+N,EAAG,EAAG/B,UAAW5e,MAC7DA,KAAKmrC,GAAK1E,gBAAgBC,QAAQ9P,EAAMhkB,EAAKu4B,GAAI,EAAG,EAAGnrC,MACvDA,KAAKorC,GAAK3E,gBAAgBC,QAAQ9P,EAAMhkB,EAAKw4B,GAAI,EAAG,IAAMprC,MAC1DA,KAAK2pC,qBAAuBb,oBAAoBC,qBAChD/oC,KAAK2pC,qBAAqBf,SAAS5oC,KAAKkK,GACxClK,KAAK0pC,MAAQ1pC,KAAK2pC,qBACd3pC,KAAK8mC,kBAAkBnmC,OACzBX,KAAKkB,GAAI,GAETlB,KAAKkB,GAAI,EACTlB,KAAKgrC,gBAEf,CAgFM,OA/EAJ,EAAyB/nC,UAAY,CACnCmnC,MAAOP,EACPrD,SAAU,WACJpmC,KAAK42B,KAAKnG,WAAWgV,UAAYzlC,KAAKylC,UAG1CzlC,KAAKylC,QAAUzlC,KAAK42B,KAAKnG,WAAWgV,QACpCzlC,KAAKgnC,2BACDhnC,KAAKulC,MACPvlC,KAAKgrC,gBAEjB,EACQC,kBAAmB,WACjB,IAYI/iC,EACAmjC,EACAC,EACAC,EAfAC,EAAiC,EAAxBn4B,KAAK2K,MAAMhe,KAAK+jB,GAAG7Z,GAC5BuhC,EAAkB,EAAVp4B,KAAKwL,GAAS2sB,EAItBE,GAAW,EACXC,EAAU3rC,KAAKmrC,GAAGjhC,EAClB0hC,EAAW5rC,KAAK8qC,GAAG5gC,EACnB2hC,EAAY7rC,KAAKorC,GAAGlhC,EACpB4hC,EAAa9rC,KAAK+qC,GAAG7gC,EACrB6hC,EAAmB,EAAI14B,KAAKwL,GAAK8sB,GAAoB,EAATH,GAC5CQ,EAAoB,EAAI34B,KAAKwL,GAAK+sB,GAAqB,EAATJ,GAK9CS,GAAc54B,KAAKwL,GAAK,EAC5BotB,GAAcjsC,KAAK2gB,EAAEzW,EACrB,IAAIyzB,EAAsB,IAAhB39B,KAAK4S,KAAKxL,GAAU,EAAK,EAEnC,IADApH,KAAKkK,EAAE2wB,QAAU,EACZ3yB,EAAI,EAAGA,EAAIsjC,EAAQtjC,GAAK,EAAG,CAE9BojC,EAAYI,EAAWG,EAAYC,EACnCP,EAAeG,EAAWK,EAAmBC,EAC7C,IAAIhtC,GAHJqsC,EAAMK,EAAWC,EAAUC,GAGbv4B,KAAKoxB,IAAIwH,GACnBziC,EAAI6hC,EAAMh4B,KAAKuwB,IAAIqI,GACnBC,EAAW,IAANltC,GAAiB,IAANwK,EAAU,EAAIA,EAAI6J,KAAKyK,KAAK9e,EAAIA,EAAIwK,EAAIA,GACxD2iC,EAAW,IAANntC,GAAiB,IAANwK,EAAU,GAAKxK,EAAIqU,KAAKyK,KAAK9e,EAAIA,EAAIwK,EAAIA,GAC7DxK,IAAMgB,KAAKwH,EAAE0C,EAAE,GACfV,IAAMxJ,KAAKwH,EAAE0C,EAAE,GACflK,KAAKkK,EAAEu9B,YAAYzoC,EAAGwK,EAAGxK,EAAIktC,EAAKX,EAAeD,EAAY3N,EAAKn0B,EAAI2iC,EAAKZ,EAAeD,EAAY3N,EAAK3+B,EAAIktC,EAAKX,EAAeD,EAAY3N,EAAKn0B,EAAI2iC,EAAKZ,EAAeD,EAAY3N,EAAKz1B,GAAG,GAMhMwjC,GAAYA,EACZO,GAAcR,EAAQ9N,CAClC,CACA,EACQuN,qBAAsB,WACpB,IAKIhjC,EALAsjC,EAASn4B,KAAK2K,MAAMhe,KAAK+jB,GAAG7Z,GAC5BuhC,EAAkB,EAAVp4B,KAAKwL,GAAS2sB,EACtBH,EAAMrrC,KAAKmrC,GAAGjhC,EACdohC,EAAYtrC,KAAKorC,GAAGlhC,EACpBqhC,EAAe,EAAIl4B,KAAKwL,GAAKwsB,GAAgB,EAATG,GAEpCS,EAAwB,IAAV54B,KAAKwL,GACnB8e,EAAsB,IAAhB39B,KAAK4S,KAAKxL,GAAU,EAAK,EAGnC,IAFA6kC,GAAcjsC,KAAK2gB,EAAEzW,EACrBlK,KAAKkK,EAAE2wB,QAAU,EACZ3yB,EAAI,EAAGA,EAAIsjC,EAAQtjC,GAAK,EAAG,CAC9B,IAAIlJ,EAAIqsC,EAAMh4B,KAAKoxB,IAAIwH,GACnBziC,EAAI6hC,EAAMh4B,KAAKuwB,IAAIqI,GACnBC,EAAW,IAANltC,GAAiB,IAANwK,EAAU,EAAIA,EAAI6J,KAAKyK,KAAK9e,EAAIA,EAAIwK,EAAIA,GACxD2iC,EAAW,IAANntC,GAAiB,IAANwK,EAAU,GAAKxK,EAAIqU,KAAKyK,KAAK9e,EAAIA,EAAIwK,EAAIA,GAC7DxK,IAAMgB,KAAKwH,EAAE0C,EAAE,GACfV,IAAMxJ,KAAKwH,EAAE0C,EAAE,GACflK,KAAKkK,EAAEu9B,YAAYzoC,EAAGwK,EAAGxK,EAAIktC,EAAKX,EAAeD,EAAY3N,EAAKn0B,EAAI2iC,EAAKZ,EAAeD,EAAY3N,EAAK3+B,EAAIktC,EAAKX,EAAeD,EAAY3N,EAAKn0B,EAAI2iC,EAAKZ,EAAeD,EAAY3N,EAAKz1B,GAAG,GAChM+jC,GAAcR,EAAQ9N,CAClC,CACU39B,KAAK0pC,MAAM/oC,OAAS,EACpBX,KAAK0pC,MAAM,GAAK1pC,KAAKkK,CAC/B,GAEMsQ,gBAAgB,CAACqsB,0BAA2B+D,GACrCA,CACb,CAhH4B,GAiHpBwB,EAAoB,WACtB,SAASC,EAAyBzV,EAAMhkB,GACtC5S,KAAKkK,EAAIo+B,UAAUtN,aACnBh7B,KAAKkK,EAAEsc,GAAI,EACXxmB,KAAK2pC,qBAAuBb,oBAAoBC,qBAChD/oC,KAAK2pC,qBAAqBf,SAAS5oC,KAAKkK,GACxClK,KAAK0pC,MAAQ1pC,KAAK2pC,qBAClB3pC,KAAK42B,KAAOA,EACZ52B,KAAKukB,KAAOqS,EAAKrS,KACjBvkB,KAAKylC,SAAU,EACfzlC,KAAKoH,EAAIwL,EAAKxL,EACdpH,KAAKinC,6BAA6BrQ,GAClC52B,KAAKwH,EAAIi/B,gBAAgBC,QAAQ9P,EAAMhkB,EAAKpL,EAAG,EAAG,EAAGxH,MACrDA,KAAKiI,EAAIw+B,gBAAgBC,QAAQ9P,EAAMhkB,EAAK3K,EAAG,EAAG,EAAGjI,MACrDA,KAAK2gB,EAAI8lB,gBAAgBC,QAAQ9P,EAAMhkB,EAAK+N,EAAG,EAAG,EAAG3gB,MACjDA,KAAK8mC,kBAAkBnmC,OACzBX,KAAKkB,GAAI,GAETlB,KAAKkB,GAAI,EACTlB,KAAKssC,oBAEf,CAsDM,OArDAD,EAAyBxpC,UAAY,CACnCypC,kBAAmB,WACjB,IAAIhC,EAAKtqC,KAAKwH,EAAE0C,EAAE,GACdqgC,EAAKvqC,KAAKwH,EAAE0C,EAAE,GACdqiC,EAAKvsC,KAAKiI,EAAEiC,EAAE,GAAK,EACnBsiC,EAAKxsC,KAAKiI,EAAEiC,EAAE,GAAK,EACnBoJ,EAAQ6K,MAAMouB,EAAIC,EAAIxsC,KAAK2gB,EAAEzW,GAC7BigC,EAAS72B,GAAS,EAAIwL,aAC1B9e,KAAKkK,EAAE2wB,QAAU,EACF,IAAX76B,KAAKoH,GAAsB,IAAXpH,KAAKoH,GACvBpH,KAAKkK,EAAEu9B,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKl5B,EAAOg3B,EAAKiC,EAAIhC,EAAKiC,EAAKl5B,EAAOg3B,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQ,GAAG,GACrGnqC,KAAKkK,EAAEu9B,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKl5B,EAAOg3B,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQG,EAAKiC,EAAIhC,EAAKiC,EAAKl5B,EAAO,GAAG,GACvF,IAAVA,GACFtT,KAAKkK,EAAEu9B,YAAY6C,EAAKiC,EAAKj5B,EAAOi3B,EAAKiC,EAAIlC,EAAKiC,EAAKj5B,EAAOi3B,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAI,GAAG,GACrGxsC,KAAKkK,EAAEu9B,YAAY6C,EAAKiC,EAAKj5B,EAAOi3B,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAIlC,EAAKiC,EAAKj5B,EAAOi3B,EAAKiC,EAAI,GAAG,GACrGxsC,KAAKkK,EAAEu9B,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKl5B,EAAOg3B,EAAKiC,EAAIhC,EAAKiC,EAAKl5B,EAAOg3B,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQ,GAAG,GACrGnqC,KAAKkK,EAAEu9B,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKl5B,EAAOg3B,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQG,EAAKiC,EAAIhC,EAAKiC,EAAKl5B,EAAO,GAAG,GACrGtT,KAAKkK,EAAEu9B,YAAY6C,EAAKiC,EAAKj5B,EAAOi3B,EAAKiC,EAAIlC,EAAKiC,EAAKj5B,EAAOi3B,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAI,GAAG,GACrGxsC,KAAKkK,EAAEu9B,YAAY6C,EAAKiC,EAAKj5B,EAAOi3B,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAIlC,EAAKiC,EAAKj5B,EAAOi3B,EAAKiC,EAAI,GAAG,KAErGxsC,KAAKkK,EAAEu9B,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAIlC,EAAKiC,EAAIhC,EAAKiC,EAAI,GAClFxsC,KAAKkK,EAAEu9B,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAIlC,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQG,EAAKiC,EAAIhC,EAAKiC,EAAI,MAGpFxsC,KAAKkK,EAAEu9B,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKl5B,EAAOg3B,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQG,EAAKiC,EAAIhC,EAAKiC,EAAKl5B,EAAO,GAAG,GACvF,IAAVA,GACFtT,KAAKkK,EAAEu9B,YAAY6C,EAAKiC,EAAKj5B,EAAOi3B,EAAKiC,EAAIlC,EAAKiC,EAAKj5B,EAAOi3B,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAI,GAAG,GACrGxsC,KAAKkK,EAAEu9B,YAAY6C,EAAKiC,EAAKj5B,EAAOi3B,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAIlC,EAAKiC,EAAKj5B,EAAOi3B,EAAKiC,EAAI,GAAG,GACrGxsC,KAAKkK,EAAEu9B,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKl5B,EAAOg3B,EAAKiC,EAAIhC,EAAKiC,EAAKl5B,EAAOg3B,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQ,GAAG,GACrGnqC,KAAKkK,EAAEu9B,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKl5B,EAAOg3B,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQG,EAAKiC,EAAIhC,EAAKiC,EAAKl5B,EAAO,GAAG,GACrGtT,KAAKkK,EAAEu9B,YAAY6C,EAAKiC,EAAKj5B,EAAOi3B,EAAKiC,EAAIlC,EAAKiC,EAAKj5B,EAAOi3B,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAI,GAAG,GACrGxsC,KAAKkK,EAAEu9B,YAAY6C,EAAKiC,EAAKj5B,EAAOi3B,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAIlC,EAAKiC,EAAKj5B,EAAOi3B,EAAKiC,EAAI,GAAG,GACrGxsC,KAAKkK,EAAEu9B,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKl5B,EAAOg3B,EAAKiC,EAAIhC,EAAKiC,EAAKl5B,EAAOg3B,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQ,GAAG,KAErGnqC,KAAKkK,EAAEu9B,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAIlC,EAAKiC,EAAIhC,EAAKiC,EAAI,GAAG,GACrFxsC,KAAKkK,EAAEu9B,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAIlC,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQG,EAAKiC,EAAIhC,EAAKiC,EAAI,GAAG,GACrFxsC,KAAKkK,EAAEu9B,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAIlC,EAAKiC,EAAIhC,EAAKiC,EAAI,GAAG,IAGnG,EACQpG,SAAU,WACJpmC,KAAK42B,KAAKnG,WAAWgV,UAAYzlC,KAAKylC,UAG1CzlC,KAAKylC,QAAUzlC,KAAK42B,KAAKnG,WAAWgV,QACpCzlC,KAAKgnC,2BACDhnC,KAAKulC,MACPvlC,KAAKssC,oBAEjB,EACQtC,MAAOP,GAETjvB,gBAAgB,CAACqsB,0BAA2BwF,GACrCA,CACb,CA5E4B,GAyGpBthB,EAAK,CACTA,aA7BA,SAAsB6L,EAAMhkB,EAAMlW,GAChC,IAAI6X,EAmBJ,OAlBa,IAAT7X,GAAuB,IAATA,EAId6X,GAHsB,IAAT7X,EAAakW,EAAKmR,GAAKnR,EAAKiS,IACvB3jB,EACXP,OACA,IAAIspC,EAAuBrT,EAAMhkB,EAAMlW,GAEvC,IAAIqtC,EAAcnT,EAAMhkB,EAAMlW,GAErB,IAATA,EACT6X,EAAO,IAAI63B,EAAkBxV,EAAMhkB,GACjB,IAATlW,EACT6X,EAAO,IAAI21B,EAAiBtT,EAAMhkB,GAChB,IAATlW,IACT6X,EAAO,IAAIo2B,EAAkB/T,EAAMhkB,IAEjC2B,EAAKrT,GACP01B,EAAKqP,mBAAmB1xB,GAEnBA,CACb,EASIwW,uBARA,WACE,OAAOgf,CACb,EAOIhf,gCANA,WACE,OAAOkf,CACb,GAKI,OAAOlf,CACX,CAnf6B,GAkhBvB0hB,OAAS,WACX,IAAIC,EAAOr5B,KAAKoxB,IACZkI,EAAOt5B,KAAKuwB,IACZgJ,EAAOv5B,KAAKw5B,IACZC,EAAOz5B,KAAKC,MAChB,SAAS02B,IAiBP,OAhBAhqC,KAAK/C,MAAM,GAAK,EAChB+C,KAAK/C,MAAM,GAAK,EAChB+C,KAAK/C,MAAM,GAAK,EAChB+C,KAAK/C,MAAM,GAAK,EAChB+C,KAAK/C,MAAM,GAAK,EAChB+C,KAAK/C,MAAM,GAAK,EAChB+C,KAAK/C,MAAM,GAAK,EAChB+C,KAAK/C,MAAM,GAAK,EAChB+C,KAAK/C,MAAM,GAAK,EAChB+C,KAAK/C,MAAM,GAAK,EAChB+C,KAAK/C,MAAM,IAAM,EACjB+C,KAAK/C,MAAM,IAAM,EACjB+C,KAAK/C,MAAM,IAAM,EACjB+C,KAAK/C,MAAM,IAAM,EACjB+C,KAAK/C,MAAM,IAAM,EACjB+C,KAAK/C,MAAM,IAAM,EACV+C,IACb,CACI,SAAS+sC,EAAOtB,GACd,GAAc,IAAVA,EACF,OAAOzrC,KAET,IAAIgtC,EAAON,EAAKjB,GACZwB,EAAON,EAAKlB,GAChB,OAAOzrC,KAAKktC,GAAGF,GAAOC,EAAM,EAAG,EAAGA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC/E,CACI,SAASG,EAAQ1B,GACf,GAAc,IAAVA,EACF,OAAOzrC,KAET,IAAIgtC,EAAON,EAAKjB,GACZwB,EAAON,EAAKlB,GAChB,OAAOzrC,KAAKktC,GAAG,EAAG,EAAG,EAAG,EAAG,EAAGF,GAAOC,EAAM,EAAG,EAAGA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,EAC/E,CACI,SAASI,EAAQ3B,GACf,GAAc,IAAVA,EACF,OAAOzrC,KAET,IAAIgtC,EAAON,EAAKjB,GACZwB,EAAON,EAAKlB,GAChB,OAAOzrC,KAAKktC,GAAGF,EAAM,EAAGC,EAAM,EAAG,EAAG,EAAG,EAAG,GAAIA,EAAM,EAAGD,EAAM,EAAG,EAAG,EAAG,EAAG,EAC/E,CACI,SAASK,EAAQ5B,GACf,GAAc,IAAVA,EACF,OAAOzrC,KAET,IAAIgtC,EAAON,EAAKjB,GACZwB,EAAON,EAAKlB,GAChB,OAAOzrC,KAAKktC,GAAGF,GAAOC,EAAM,EAAG,EAAGA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC/E,CACI,SAASM,EAAMC,EAAI1C,GACjB,OAAO7qC,KAAKktC,GAAG,EAAGrC,EAAI0C,EAAI,EAAG,EAAG,EACtC,CACI,SAASC,EAAKrK,EAAIC,GAChB,OAAOpjC,KAAKstC,MAAMV,EAAKzJ,GAAKyJ,EAAKxJ,GACvC,CACI,SAASqK,EAAatK,EAAIsI,GACxB,IAAIuB,EAAON,EAAKjB,GACZwB,EAAON,EAAKlB,GAChB,OAAOzrC,KAAKktC,GAAGF,EAAMC,EAAM,EAAG,GAAIA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAGE,GAAG,EAAG,EAAG,EAAG,EAAGN,EAAKzJ,GAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAG+J,GAAGF,GAAOC,EAAM,EAAG,EAAGA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAEzM,CACI,SAASU,EAAMH,EAAI1C,EAAI8C,GAIrB,OAHKA,GAAa,IAAPA,IACTA,EAAK,GAEI,IAAPJ,GAAmB,IAAP1C,GAAmB,IAAP8C,EACnB3tC,KAEFA,KAAKktC,GAAGK,EAAI,EAAG,EAAG,EAAG,EAAG1C,EAAI,EAAG,EAAG,EAAG,EAAG8C,EAAI,EAAG,EAAG,EAAG,EAAG,EACrE,CACI,SAASC,EAAa3nB,EAAG5e,EAAGmf,EAAGpf,EAAG/H,EAAGkK,EAAGO,EAAG4W,EAAGxY,EAAGsb,EAAGtiB,EAAG2sC,EAAGC,EAAG3lC,EAAGkV,EAAG7V,GAiBjE,OAhBAxH,KAAK/C,MAAM,GAAKgpB,EAChBjmB,KAAK/C,MAAM,GAAKoK,EAChBrH,KAAK/C,MAAM,GAAKupB,EAChBxmB,KAAK/C,MAAM,GAAKmK,EAChBpH,KAAK/C,MAAM,GAAKoC,EAChBW,KAAK/C,MAAM,GAAKsM,EAChBvJ,KAAK/C,MAAM,GAAK6M,EAChB9J,KAAK/C,MAAM,GAAKyjB,EAChB1gB,KAAK/C,MAAM,GAAKiL,EAChBlI,KAAK/C,MAAM,GAAKumB,EAChBxjB,KAAK/C,MAAM,IAAMiE,EACjBlB,KAAK/C,MAAM,IAAM4wC,EACjB7tC,KAAK/C,MAAM,IAAM6wC,EACjB9tC,KAAK/C,MAAM,IAAMkL,EACjBnI,KAAK/C,MAAM,IAAMogB,EACjBrd,KAAK/C,MAAM,IAAMuK,EACVxH,IACb,CACI,SAAS+tC,EAAUC,EAAI/pB,EAAIgqB,GAEzB,OADAA,EAAKA,GAAM,EACA,IAAPD,GAAmB,IAAP/pB,GAAmB,IAAPgqB,EACnBjuC,KAAKktC,GAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAGc,EAAI/pB,EAAIgqB,EAAI,GAE1DjuC,IACb,CACI,SAAS4W,EAAUs3B,EAAIC,EAAIzJ,EAAI0J,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAC7E,IAAIlW,EAAK94B,KAAK/C,MACd,GAAW,IAAPixC,GAAmB,IAAPC,GAAmB,IAAPzJ,GAAmB,IAAP0J,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,EAStI,OANA9V,EAAG,IAAMA,EAAG,IAAMoV,EAAKpV,EAAG,IAAM+V,EAChC/V,EAAG,IAAMA,EAAG,IAAMwV,EAAKxV,EAAG,IAAMgW,EAChChW,EAAG,IAAMA,EAAG,IAAM6V,EAAK7V,EAAG,IAAMiW,EAChCjW,EAAG,KAAOkW,EAEVhvC,KAAKivC,qBAAsB,EACpBjvC,KAET,IAAIkvC,EAAKpW,EAAG,GACRqW,EAAKrW,EAAG,GACR0L,EAAK1L,EAAG,GACRsW,EAAKtW,EAAG,GACRuW,EAAKvW,EAAG,GACRwW,EAAKxW,EAAG,GACRyW,EAAKzW,EAAG,GACR0W,EAAK1W,EAAG,GACR2W,EAAK3W,EAAG,GACR4W,EAAK5W,EAAG,GACR6W,EAAK7W,EAAG,IACR8W,EAAK9W,EAAG,IACR+W,EAAK/W,EAAG,IACRgX,EAAKhX,EAAG,IACRiX,EAAKjX,EAAG,IACRyR,EAAKzR,EAAG,IAwBZ,OAjBAA,EAAG,GAAKoW,EAAKhB,EAAKiB,EAAKd,EAAK7J,EAAKiK,EAAKW,EAAKP,EAC3C/V,EAAG,GAAKoW,EAAKf,EAAKgB,EAAKb,EAAK9J,EAAKkK,EAAKU,EAAKN,EAC3ChW,EAAG,GAAKoW,EAAKxK,EAAKyK,EAAKZ,EAAK/J,EAAKmK,EAAKS,EAAKL,EAC3CjW,EAAG,GAAKoW,EAAKd,EAAKe,EAAKX,EAAKhK,EAAKoK,EAAKQ,EAAKJ,EAC3ClW,EAAG,GAAKuW,EAAKnB,EAAKoB,EAAKjB,EAAKkB,EAAKd,EAAKe,EAAKX,EAC3C/V,EAAG,GAAKuW,EAAKlB,EAAKmB,EAAKhB,EAAKiB,EAAKb,EAAKc,EAAKV,EAC3ChW,EAAG,GAAKuW,EAAK3K,EAAK4K,EAAKf,EAAKgB,EAAKZ,EAAKa,EAAKT,EAC3CjW,EAAG,GAAKuW,EAAKjB,EAAKkB,EAAKd,EAAKe,EAAKX,EAAKY,EAAKR,EAC3ClW,EAAG,GAAK2W,EAAKvB,EAAKwB,EAAKrB,EAAKsB,EAAKlB,EAAKmB,EAAKf,EAC3C/V,EAAG,GAAK2W,EAAKtB,EAAKuB,EAAKpB,EAAKqB,EAAKjB,EAAKkB,EAAKd,EAC3ChW,EAAG,IAAM2W,EAAK/K,EAAKgL,EAAKnB,EAAKoB,EAAKhB,EAAKiB,EAAKb,EAC5CjW,EAAG,IAAM2W,EAAKrB,EAAKsB,EAAKlB,EAAKmB,EAAKf,EAAKgB,EAAKZ,EAC5ClW,EAAG,IAAM+W,EAAK3B,EAAK4B,EAAKzB,EAAK0B,EAAKtB,EAAKlE,EAAKsE,EAC5C/V,EAAG,IAAM+W,EAAK1B,EAAK2B,EAAKxB,EAAKyB,EAAKrB,EAAKnE,EAAKuE,EAC5ChW,EAAG,IAAM+W,EAAKnL,EAAKoL,EAAKvB,EAAKwB,EAAKpB,EAAKpE,EAAKwE,EAC5CjW,EAAG,IAAM+W,EAAKzB,EAAK0B,EAAKtB,EAAKuB,EAAKnB,EAAKrE,EAAKyE,EAC5ChvC,KAAKivC,qBAAsB,EACpBjvC,IACb,CACI,SAASgwC,EAASC,GAChB,IAAIC,EAAcD,EAAOhzC,MACzB,OAAO+C,KAAK4W,UAAUs5B,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,IAAKA,EAAY,IAAKA,EAAY,IAAKA,EAAY,IAAKA,EAAY,IAAKA,EAAY,IAC7R,CACI,SAASC,IAKP,OAJKnwC,KAAKivC,sBACRjvC,KAAKowC,YAAgC,IAAlBpwC,KAAK/C,MAAM,IAA8B,IAAlB+C,KAAK/C,MAAM,IAA8B,IAAlB+C,KAAK/C,MAAM,IAA8B,IAAlB+C,KAAK/C,MAAM,IAA8B,IAAlB+C,KAAK/C,MAAM,IAA8B,IAAlB+C,KAAK/C,MAAM,IAA8B,IAAlB+C,KAAK/C,MAAM,IAA8B,IAAlB+C,KAAK/C,MAAM,IAA8B,IAAlB+C,KAAK/C,MAAM,IAA8B,IAAlB+C,KAAK/C,MAAM,IAA+B,IAAnB+C,KAAK/C,MAAM,KAAgC,IAAnB+C,KAAK/C,MAAM,KAAgC,IAAnB+C,KAAK/C,MAAM,KAAgC,IAAnB+C,KAAK/C,MAAM,KAAgC,IAAnB+C,KAAK/C,MAAM,KAAgC,IAAnB+C,KAAK/C,MAAM,KAC5X+C,KAAKivC,qBAAsB,GAEtBjvC,KAAKowC,SAClB,CACI,SAASC,EAAOC,GAEd,IADA,IAAIpoC,EAAI,EACDA,EAAI,IAAI,CACb,GAAIooC,EAAKrzC,MAAMiL,KAAOlI,KAAK/C,MAAMiL,GAC/B,OAAO,EAETA,GAAK,CACb,CACM,OAAO,CACb,CACI,SAASsgC,EAAM8H,GACb,IAAIpoC,EACJ,IAAKA,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBooC,EAAKrzC,MAAMiL,GAAKlI,KAAK/C,MAAMiL,GAE7B,OAAOooC,CACb,CACI,SAASC,EAAetzC,GACtB,IAAIiL,EACJ,IAAKA,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBlI,KAAK/C,MAAMiL,GAAKjL,EAAMiL,EAE9B,CACI,SAASsoC,EAAaxxC,EAAGwK,EAAGinC,GAC1B,MAAO,CACLzxC,EAAGA,EAAIgB,KAAK/C,MAAM,GAAKuM,EAAIxJ,KAAK/C,MAAM,GAAKwzC,EAAIzwC,KAAK/C,MAAM,GAAK+C,KAAK/C,MAAM,IAC1EuM,EAAGxK,EAAIgB,KAAK/C,MAAM,GAAKuM,EAAIxJ,KAAK/C,MAAM,GAAKwzC,EAAIzwC,KAAK/C,MAAM,GAAK+C,KAAK/C,MAAM,IAC1EwzC,EAAGzxC,EAAIgB,KAAK/C,MAAM,GAAKuM,EAAIxJ,KAAK/C,MAAM,GAAKwzC,EAAIzwC,KAAK/C,MAAM,IAAM+C,KAAK/C,MAAM,IAMnF,CACI,SAASyzC,EAAS1xC,EAAGwK,EAAGinC,GACtB,OAAOzxC,EAAIgB,KAAK/C,MAAM,GAAKuM,EAAIxJ,KAAK/C,MAAM,GAAKwzC,EAAIzwC,KAAK/C,MAAM,GAAK+C,KAAK/C,MAAM,GACpF,CACI,SAAS0zC,EAAS3xC,EAAGwK,EAAGinC,GACtB,OAAOzxC,EAAIgB,KAAK/C,MAAM,GAAKuM,EAAIxJ,KAAK/C,MAAM,GAAKwzC,EAAIzwC,KAAK/C,MAAM,GAAK+C,KAAK/C,MAAM,GACpF,CACI,SAAS2zC,EAAS5xC,EAAGwK,EAAGinC,GACtB,OAAOzxC,EAAIgB,KAAK/C,MAAM,GAAKuM,EAAIxJ,KAAK/C,MAAM,GAAKwzC,EAAIzwC,KAAK/C,MAAM,IAAM+C,KAAK/C,MAAM,GACrF,CACI,SAAS4zC,IACP,IAAIC,EAAc9wC,KAAK/C,MAAM,GAAK+C,KAAK/C,MAAM,GAAK+C,KAAK/C,MAAM,GAAK+C,KAAK/C,MAAM,GACzEgpB,EAAIjmB,KAAK/C,MAAM,GAAK6zC,EACpBzpC,GAAKrH,KAAK/C,MAAM,GAAK6zC,EACrBtqB,GAAKxmB,KAAK/C,MAAM,GAAK6zC,EACrB1pC,EAAIpH,KAAK/C,MAAM,GAAK6zC,EACpBzxC,GAAKW,KAAK/C,MAAM,GAAK+C,KAAK/C,MAAM,IAAM+C,KAAK/C,MAAM,GAAK+C,KAAK/C,MAAM,KAAO6zC,EACxEvnC,IAAMvJ,KAAK/C,MAAM,GAAK+C,KAAK/C,MAAM,IAAM+C,KAAK/C,MAAM,GAAK+C,KAAK/C,MAAM,KAAO6zC,EACzEC,EAAgB,IAAItE,OAOxB,OANAsE,EAAc9zC,MAAM,GAAKgpB,EACzB8qB,EAAc9zC,MAAM,GAAKoK,EACzB0pC,EAAc9zC,MAAM,GAAKupB,EACzBuqB,EAAc9zC,MAAM,GAAKmK,EACzB2pC,EAAc9zC,MAAM,IAAMoC,EAC1B0xC,EAAc9zC,MAAM,IAAMsM,EACnBwnC,CACb,CACI,SAASC,EAAajtB,GAEpB,OADoB/jB,KAAK6wC,mBACJI,kBAAkBltB,EAAG,GAAIA,EAAG,GAAIA,EAAG,IAAM,EACpE,CACI,SAASmtB,EAAcC,GACrB,IAAIjpC,EACA0S,EAAMu2B,EAAIxwC,OACVywC,EAAS,GACb,IAAKlpC,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBkpC,EAAOlpC,GAAK8oC,EAAaG,EAAIjpC,IAE/B,OAAOkpC,CACb,CACI,SAASC,EAAoBlV,EAAKC,EAAKC,GACrC,IAAItf,EAAMF,iBAAiB,UAAW,GACtC,GAAI7c,KAAKmwC,aACPpzB,EAAI,GAAKof,EAAI,GACbpf,EAAI,GAAKof,EAAI,GACbpf,EAAI,GAAKqf,EAAI,GACbrf,EAAI,GAAKqf,EAAI,GACbrf,EAAI,GAAKsf,EAAI,GACbtf,EAAI,GAAKsf,EAAI,OACR,CACL,IAAIiO,EAAKtqC,KAAK/C,MAAM,GAChBstC,EAAKvqC,KAAK/C,MAAM,GAChBq0C,EAAKtxC,KAAK/C,MAAM,GAChBs0C,EAAKvxC,KAAK/C,MAAM,GAChBu0C,EAAMxxC,KAAK/C,MAAM,IACjBw0C,EAAMzxC,KAAK/C,MAAM,IACrB8f,EAAI,GAAKof,EAAI,GAAKmO,EAAKnO,EAAI,GAAKmV,EAAKE,EACrCz0B,EAAI,GAAKof,EAAI,GAAKoO,EAAKpO,EAAI,GAAKoV,EAAKE,EACrC10B,EAAI,GAAKqf,EAAI,GAAKkO,EAAKlO,EAAI,GAAKkV,EAAKE,EACrCz0B,EAAI,GAAKqf,EAAI,GAAKmO,EAAKnO,EAAI,GAAKmV,EAAKE,EACrC10B,EAAI,GAAKsf,EAAI,GAAKiO,EAAKjO,EAAI,GAAKiV,EAAKE,EACrCz0B,EAAI,GAAKsf,EAAI,GAAKkO,EAAKlO,EAAI,GAAKkV,EAAKE,CAC7C,CACM,OAAO10B,CACb,CACI,SAASk0B,EAAkBjyC,EAAGwK,EAAGinC,GAO/B,OALIzwC,KAAKmwC,aACD,CAACnxC,EAAGwK,EAAGinC,GAEP,CAACzxC,EAAIgB,KAAK/C,MAAM,GAAKuM,EAAIxJ,KAAK/C,MAAM,GAAKwzC,EAAIzwC,KAAK/C,MAAM,GAAK+C,KAAK/C,MAAM,IAAK+B,EAAIgB,KAAK/C,MAAM,GAAKuM,EAAIxJ,KAAK/C,MAAM,GAAKwzC,EAAIzwC,KAAK/C,MAAM,GAAK+C,KAAK/C,MAAM,IAAK+B,EAAIgB,KAAK/C,MAAM,GAAKuM,EAAIxJ,KAAK/C,MAAM,GAAKwzC,EAAIzwC,KAAK/C,MAAM,IAAM+C,KAAK/C,MAAM,IAG/O,CACI,SAASy0C,EAAwB1yC,EAAGwK,GAClC,GAAIxJ,KAAKmwC,aACP,OAAOnxC,EAAI,IAAMwK,EAEnB,IAAIsvB,EAAK94B,KAAK/C,MACd,OAAOoW,KAAKC,MAAyC,KAAlCtU,EAAI85B,EAAG,GAAKtvB,EAAIsvB,EAAG,GAAKA,EAAG,MAAc,IAAM,IAAMzlB,KAAKC,MAAyC,KAAlCtU,EAAI85B,EAAG,GAAKtvB,EAAIsvB,EAAG,GAAKA,EAAG,MAAc,GACnI,CACI,SAAS6Y,IASP,IAJA,IAAIzpC,EAAI,EACJjL,EAAQ+C,KAAK/C,MACb20C,EAAW,YAER1pC,EAAI,IACT0pC,GAAY9E,EAFN,IAEW7vC,EAAMiL,IAFjB,IAGN0pC,GAAkB,KAAN1pC,EAAW,IAAM,IAC7BA,GAAK,EAEP,OAAO0pC,CACb,CACI,SAASC,EAAoBpzB,GAE3B,OAAIA,EAAM,MAAYA,EAAM,GAAKA,GAAM,MAAaA,EAAM,EACjDquB,EAFD,IAEMruB,GAFN,IAIDA,CACb,CACI,SAASqzB,IAKP,IAAI70C,EAAQ+C,KAAK/C,MAOjB,MAAO,UANE40C,EAAoB50C,EAAM,IAMX,IALf40C,EAAoB50C,EAAM,IAKA,IAJ1B40C,EAAoB50C,EAAM,IAIW,IAHrC40C,EAAoB50C,EAAM,IAGsB,IAFhD40C,EAAoB50C,EAAM,KAEiC,IAD3D40C,EAAoB50C,EAAM,KAC4C,GACrF,CACI,OAAO,WACL+C,KAAKgqC,MAAQA,EACbhqC,KAAK+sC,OAASA,EACd/sC,KAAKmtC,QAAUA,EACfntC,KAAKotC,QAAUA,EACfptC,KAAKqtC,QAAUA,EACfrtC,KAAKwtC,KAAOA,EACZxtC,KAAKytC,aAAeA,EACpBztC,KAAKstC,MAAQA,EACbttC,KAAK0tC,MAAQA,EACb1tC,KAAK4tC,aAAeA,EACpB5tC,KAAK+tC,UAAYA,EACjB/tC,KAAK4W,UAAYA,EACjB5W,KAAKgwC,SAAWA,EAChBhwC,KAAKwwC,aAAeA,EACpBxwC,KAAK0wC,SAAWA,EAChB1wC,KAAK2wC,SAAWA,EAChB3wC,KAAK4wC,SAAWA,EAChB5wC,KAAKixC,kBAAoBA,EACzBjxC,KAAKqxC,oBAAsBA,EAC3BrxC,KAAK0xC,wBAA0BA,EAC/B1xC,KAAK2xC,MAAQA,EACb3xC,KAAK8xC,QAAUA,EACf9xC,KAAKwoC,MAAQA,EACbxoC,KAAKuwC,eAAiBA,EACtBvwC,KAAKqwC,OAASA,EACdrwC,KAAKkxC,cAAgBA,EACrBlxC,KAAKgxC,aAAeA,EACpBhxC,KAAK6wC,iBAAmBA,EACxB7wC,KAAKktC,GAAKltC,KAAK4W,UACf5W,KAAKmwC,WAAaA,EAClBnwC,KAAKowC,WAAY,EACjBpwC,KAAKivC,qBAAsB,EAC3BjvC,KAAK/C,MAAQ4f,iBAAiB,UAAW,IACzC7c,KAAKgqC,OACX,CACA,CAnWe,GAqWb,SAAS+H,UAAU10B,GAAgC,OAAO00B,UAAY,mBAAqBz1C,QAAU,iBAAmBA,OAAO2N,SAAW,SAAUoT,GAAK,cAAcA,CAAE,EAAK,SAAUA,GAAK,OAAOA,GAAK,mBAAqB/gB,QAAU+gB,EAAE5d,cAAgBnD,QAAU+gB,IAAM/gB,OAAOuG,UAAY,gBAAkBwa,GAAM00B,UAAU10B,EAAG,CAClU,IAAI20B,OAAS,CAAA,EAIb,SAASC,YAAY5iC,GACnBgL,gBAAgBhL,EACpB,CACE,SAAS8nB,mBAILlB,iBAAiBkB,kBAEvB,CACE,SAAS+a,qBAAqB/3B,GAC5BoH,mBAAmBpH,EACvB,CACE,SAASg4B,UAAUC,GACjBrwB,YAAYqwB,EAChB,CACE,SAASxpB,cAAcuH,GAIrB,OAAO8F,iBAAiBrN,cAAcuH,EAC1C,CACE,SAASkiB,WAAWnzC,GAClB,GAAqB,iBAAVA,EACT,OAAQA,GACN,IAAK,OACH2iB,wBAAwB,KACxB,MACF,QACA,IAAK,SACHA,wBAAwB,IACxB,MACF,IAAK,MACHA,wBAAwB,SAGlBsS,MAAMj1B,IAAUA,EAAQ,GAClC2iB,wBAAwB3iB,EAO9B,CACE,SAASozC,YACP,MAA4B,oBAAd5/B,SAClB,CACE,SAAS6/B,cAAc71C,EAAM81C,GACd,gBAAT91C,GACF+kB,qBAAqB+wB,EAE3B,CACE,SAASC,WAAW70C,GAClB,OAAQA,GACN,IAAK,kBACH,OAAO6oC,gBACT,IAAK,uBACH,OAAOwC,qBACT,IAAK,SACH,OAAOwD,OACT,QACE,OAAO,KAEf,CA6BE,SAASiG,aACqB,aAAxB9iC,SAASqY,aACX4C,cAAc8nB,yBACdxb,mBAEN,CACE,SAASyb,iBAAiBC,GAExB,IADA,IAAIC,EAAOC,YAAYt7B,MAAM,KACpBvP,EAAI,EAAGA,EAAI4qC,EAAKnyC,OAAQuH,GAAK,EAAG,CACvC,IAAI8qC,EAAOF,EAAK5qC,GAAGuP,MAAM,KACzB,GAAIw7B,mBAAmBD,EAAK,KAAOH,EAEjC,OAAOI,mBAAmBD,EAAK,GAEvC,CACI,OAAO,IACX,CA5CEhB,OAAO91B,KAAO+Z,iBAAiB/Z,KAC/B81B,OAAOt2B,MAAQua,iBAAiBva,MAChCs2B,OAAO33B,gBAAkB43B,YACzBD,OAAOte,YAAcuC,iBAAiBvC,YACtCse,OAAOpd,SAAWqB,iBAAiBrB,SACnCod,OAAOnd,aAAeoB,iBAAiBpB,aACvCmd,OAAOre,KAAOsC,iBAAiBtC,KAC/Bqe,OAAO7a,iBAAmBA,iBAC1B6a,OAAOrb,kBAAoBV,iBAAiBU,kBAC5Cqb,OAAOppB,cAAgBA,cACvBopB,OAAOE,qBAAuBA,qBAC9BF,OAAO9e,OAAS+C,iBAAiB/C,OAEjC8e,OAAOhe,YAAciC,iBAAiBjC,YACtCge,OAAOtmB,QAAUuK,iBAAiBvK,QAClCsmB,OAAOK,WAAaA,WACpBL,OAAOM,UAAYA,UACnBN,OAAOO,cAAgBA,cACvBP,OAAOlxC,OAASm1B,iBAAiBn1B,OACjCkxC,OAAOra,SAAW1B,iBAAiB0B,SACnCqa,OAAO11B,UAAY2Z,iBAAiB3Z,UACpC01B,OAAOv1B,KAAOwZ,iBAAiBxZ,KAC/Bu1B,OAAOt1B,OAASuZ,iBAAiBvZ,OACjCs1B,OAAOpa,wBAA0B3B,iBAAiB2B,wBAClDoa,OAAOkB,aAAeh5B,aACtB83B,OAAOmB,YAAchB,UACrBH,OAAOoB,aAAeX,WACtBT,OAAOqB,QAAU,SAkBjB,IAAIN,YAAc,GAEZO,QAAU1jC,SAASE,qBAAqB,UACxCimB,MAAQud,QAAQ3yC,OAAS,EACzB4yC,SAAWD,QAAQvd,QAAU,CAC/BjkB,IAAK,IAEPihC,YAAcQ,SAASzhC,IAAMyhC,SAASzhC,IAAIwF,QAAQ,aAAc,IAAM,GAC3Ds7B,iBAAiB,YAE9B,IAAID,wBAA0BjoB,YAAYgoB,WAAY,KAGtD,IACgF,WAAxBX,UAAUruC,WAE9D4O,OAAOkhC,UAAYxB,OAEzB,CAAI,MAAOjqB,GAEX,CAEE,IAAI0rB,eAAiB,WACnB,IAAI1oB,EAAK,CAAA,EACL2oB,EAAY,CAAA,EAWhB,OAVA3oB,EAAG4oB,iBAEH,SAA0B3lB,EAAInU,GACvB65B,EAAU1lB,KACb0lB,EAAU1lB,GAAMnU,EAExB,EALIkR,EAAG6oB,YAMH,SAAqB5lB,EAAI4I,EAAMhkB,GAC7B,OAAO,IAAI8gC,EAAU1lB,GAAI4I,EAAMhkB,EACrC,EACWmY,CACX,CAduB,GAerB,SAAS8oB,gBAAgB,CA0CzB,SAASC,eAAe,CA+UxB,SAASC,yBAAyB,CAxXlCF,cAAchxC,UAAUmxC,uBAAyB,WAAY,EAC7DH,cAAchxC,UAAUoxC,mBAAqB,WAAY,EACzDJ,cAAchxC,UAAU+lC,SAAW,SAAUh2B,GAC3C,IAAK5S,KAAK2mB,OAAQ,CAEhB/T,EAAK6vB,GAAGpS,UAAU4V,mBAAmBrzB,EAAK6vB,IAC1C,IAAI3E,EAAY,CACd2K,MAAO71B,EAAK6vB,GACZ7vB,KAAMA,EACN+2B,qBAAsBb,oBAAoBC,sBAE5C/oC,KAAKqkB,OAAOha,KAAKyzB,GACjB99B,KAAKi0C,mBAAmBnW,GACpB99B,KAAK+mC,aACPn0B,EAAKshC,eAEb,CACA,EACEL,cAAchxC,UAAUkyB,KAAO,SAAU6B,EAAMhkB,GAC7C5S,KAAKqkB,OAAS,GACdrkB,KAAK42B,KAAOA,EACZ52B,KAAKinC,6BAA6BrQ,GAClC52B,KAAKg0C,uBAAuBpd,EAAMhkB,GAClC5S,KAAKylC,QAAUxrB,oBACfja,KAAK2mB,QAAS,EACd3mB,KAAKkB,GAAI,EACLlB,KAAK8mC,kBAAkBnmC,OACzBX,KAAKkB,GAAI,EAETlB,KAAKomC,UAAS,EAEpB,EACEyN,cAAchxC,UAAUsxC,YAAc,WAChCn0C,KAAK42B,KAAKnG,WAAWgV,UAAYzlC,KAAKylC,UAG1CzlC,KAAKylC,QAAUzlC,KAAK42B,KAAKnG,WAAWgV,QACpCzlC,KAAKgnC,2BACT,EACExsB,gBAAgB,CAACqsB,0BAA2BgN,eAG5Cr5B,gBAAgB,CAACq5B,eAAgBC,cACjCA,aAAajxC,UAAUmxC,uBAAyB,SAAUpd,EAAMhkB,GAC9D5S,KAAKiI,EAAIw+B,gBAAgBC,QAAQ9P,EAAMhkB,EAAK3K,EAAG,EAAG,IAAMjI,MACxDA,KAAKX,EAAIonC,gBAAgBC,QAAQ9P,EAAMhkB,EAAKvT,EAAG,EAAG,IAAMW,MACxDA,KAAKqd,EAAIopB,gBAAgBC,QAAQ9P,EAAMhkB,EAAKyK,EAAG,EAAG,EAAGrd,MACrDA,KAAKo0C,OAAS,EACdp0C,KAAKq0C,OAAS,EACdr0C,KAAKomC,SAAWpmC,KAAKm0C,YACrBn0C,KAAK8tC,EAAIl7B,EAAKk7B,EACd9tC,KAAK+mC,cAAgB/mC,KAAKiI,EAAEy9B,gBAAgB/kC,UAAYX,KAAKX,EAAEqmC,gBAAgB/kC,UAAYX,KAAKqd,EAAEqoB,gBAAgB/kC,MACtH,EACEmzC,aAAajxC,UAAUoxC,mBAAqB,SAAUnW,GACpDA,EAAUwW,UAAY,EAC1B,EACER,aAAajxC,UAAU0xC,oBAAsB,SAAUtsC,EAAG5I,EAAGm1C,EAAarZ,EAAasZ,GACrF,IAAIjlB,EAAW,GACXnwB,GAAK,EACPmwB,EAASnlB,KAAK,CACZpC,EAAGA,EACH5I,EAAGA,IAEI4I,GAAK,EACdunB,EAASnlB,KAAK,CACZpC,EAAGA,EAAI,EACP5I,EAAGA,EAAI,KAGTmwB,EAASnlB,KAAK,CACZpC,EAAGA,EACH5I,EAAG,IAELmwB,EAASnlB,KAAK,CACZpC,EAAG,EACH5I,EAAGA,EAAI,KAGX,IACI6I,EAEAwsC,EAHAC,EAAgB,GAEhB/5B,EAAM4U,EAAS7uB,OAEnB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAAG,CAGzB,IAAI0sC,EACAC,GAHNH,EAAYllB,EAAStnB,IACL7I,EAAIo1C,EAAsBtZ,GAAeuZ,EAAUzsC,EAAIwsC,EAAsBtZ,EAAcqZ,IAIvGI,EADEF,EAAUzsC,EAAIwsC,GAAuBtZ,EAC9B,GAECuZ,EAAUzsC,EAAIwsC,EAAsBtZ,GAAeqZ,EAG7DK,EADEH,EAAUr1C,EAAIo1C,GAAuBtZ,EAAcqZ,EAC5C,GAECE,EAAUr1C,EAAIo1C,EAAsBtZ,GAAeqZ,EAE/DG,EAActqC,KAAK,CAACuqC,EAAQC,IAEpC,CAII,OAHKF,EAAch0C,QACjBg0C,EAActqC,KAAK,CAAC,EAAG,IAElBsqC,CACX,EACEb,aAAajxC,UAAUiyC,iBAAmB,SAAUR,GAClD,IAAIpsC,EACA0S,EAAM05B,EAAU3zC,OACpB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBozB,mBAAmBL,QAAQqZ,EAAUpsC,IAGvC,OADAosC,EAAU3zC,OAAS,EACZ2zC,CACX,EACER,aAAajxC,UAAUkyC,cAAgB,SAAUnP,GAC/C,IAAI39B,EACA5I,EAiCA21C,EACA9sC,EAjCJ,GAAIlI,KAAKulC,MAAQK,EAAe,CAC9B,IAAIvoB,EAAIrd,KAAKqd,EAAEnT,EAAI,IAAM,IAkBzB,GAjBImT,EAAI,IACNA,GAAK,IAGLpV,EADEjI,KAAKiI,EAAEiC,EAAI,EACT,EAAImT,EACCrd,KAAKiI,EAAEiC,EAAI,EAChB,EAAImT,EAEJrd,KAAKiI,EAAEiC,EAAImT,IAGfhe,EADEW,KAAKX,EAAE6K,EAAI,EACT,EAAImT,EACCrd,KAAKX,EAAE6K,EAAI,EAChB,EAAImT,EAEJrd,KAAKX,EAAE6K,EAAImT,GAEN,CACT,IAAI43B,EAAKhtC,EACTA,EAAI5I,EACJA,EAAI41C,CACZ,CACMhtC,EAA4B,KAAxBoL,KAAKC,MAAU,IAAJrL,GACf5I,EAA4B,KAAxBgU,KAAKC,MAAU,IAAJjU,GACfW,KAAKo0C,OAASnsC,EACdjI,KAAKq0C,OAASh1C,CACpB,MACM4I,EAAIjI,KAAKo0C,OACT/0C,EAAIW,KAAKq0C,OAIX,IACI7wB,EACAC,EACA6wB,EACAjuB,EACA6uB,EALAt6B,EAAM5a,KAAKqkB,OAAO1jB,OAMlB8zC,EAAsB,EAC1B,GAAIp1C,IAAM4I,EACR,IAAKC,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAKqkB,OAAOnc,GAAGyhC,qBAAqBd,gBACpC7oC,KAAKqkB,OAAOnc,GAAGugC,MAAMlD,MAAO,EAC5BvlC,KAAKqkB,OAAOnc,GAAGugC,MAAMiB,MAAQ1pC,KAAKqkB,OAAOnc,GAAGyhC,qBACxC3pC,KAAKulC,OACPvlC,KAAKqkB,OAAOnc,GAAGosC,UAAU3zC,OAAS,QAGjC,GAAY,IAANtB,GAAiB,IAAN4I,GAAiB,IAAN5I,GAAiB,IAAN4I,GAyFvC,GAAIjI,KAAKulC,KACd,IAAKr9B,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAGxBlI,KAAKqkB,OAAOnc,GAAGosC,UAAU3zC,OAAS,EAClCX,KAAKqkB,OAAOnc,GAAGugC,MAAMlD,MAAO,MA9FwB,CACtD,IACIzH,EACA6L,EAFAna,EAAW,GAGf,IAAKtnB,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAGxB,IAFA41B,EAAY99B,KAAKqkB,OAAOnc,IAETugC,MAAMlD,MAASvlC,KAAKulC,MAASK,GAA4B,IAAX5lC,KAAK8tC,EAE3D,CAIL,GAFArqB,GADAuxB,EAAalX,EAAU2K,MAAMiB,OACX7O,QAClBqa,EAAmB,GACdpX,EAAU2K,MAAMlD,MAAQzH,EAAUwW,UAAU3zC,OAC/Cu0C,EAAmBpX,EAAUoX,qBACxB,CAEL,IADAZ,EAAYt0C,KAAK80C,iBAAiBhX,EAAUwW,WACvC9wB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB6C,EAAW+Z,IAAIvC,kBAAkBmX,EAAW3wB,OAAOb,IACnD8wB,EAAUjqC,KAAKgc,GACf6uB,GAAoB7uB,EAASkV,YAE/BuC,EAAUoX,iBAAmBA,EAC7BpX,EAAUwW,UAAYA,CAClC,CACUG,GAAuBS,EACvBpX,EAAU2K,MAAMlD,MAAO,CACjC,MAnBUzH,EAAU2K,MAAMiB,MAAQ5L,EAAU6L,qBAqBtC,IAGIwL,EAHAP,EAAS3sC,EACT4sC,EAASx1C,EACT87B,EAAc,EAElB,IAAKjzB,EAAI0S,EAAM,EAAG1S,GAAK,EAAGA,GAAK,EAE7B,IADA41B,EAAY99B,KAAKqkB,OAAOnc,IACVugC,MAAMlD,KAAM,CAWxB,KAVAoE,EAAuB7L,EAAU6L,sBACZd,gBAEN,IAAX7oC,KAAK8tC,GAAWlzB,EAAM,GACxBu6B,EAAQn1C,KAAKu0C,oBAAoBtsC,EAAG5I,EAAGy+B,EAAUoX,iBAAkB/Z,EAAasZ,GAChFtZ,GAAe2C,EAAUoX,kBAEzBC,EAAQ,CAAC,CAACP,EAAQC,IAEpBpxB,EAAO0xB,EAAMx0C,OACR6iB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAAG,CAC5BoxB,EAASO,EAAM3xB,GAAG,GAClBqxB,EAASM,EAAM3xB,GAAG,GAClBgM,EAAS7uB,OAAS,EACdk0C,GAAU,EACZrlB,EAASnlB,KAAK,CACZpC,EAAG61B,EAAUoX,iBAAmBN,EAChCv1C,EAAGy+B,EAAUoX,iBAAmBL,IAEzBD,GAAU,EACnBplB,EAASnlB,KAAK,CACZpC,EAAG61B,EAAUoX,kBAAoBN,EAAS,GAC1Cv1C,EAAGy+B,EAAUoX,kBAAoBL,EAAS,MAG5CrlB,EAASnlB,KAAK,CACZpC,EAAG61B,EAAUoX,iBAAmBN,EAChCv1C,EAAGy+B,EAAUoX,mBAEf1lB,EAASnlB,KAAK,CACZpC,EAAG,EACH5I,EAAGy+B,EAAUoX,kBAAoBL,EAAS,MAG9C,IAAIO,EAAgBp1C,KAAKq1C,UAAUvX,EAAWtO,EAAS,IACvD,GAAIA,EAAS,GAAGvnB,IAAMunB,EAAS,GAAGnwB,EAAG,CACnC,GAAImwB,EAAS7uB,OAAS,EAEpB,GAD4Bm9B,EAAU2K,MAAMiB,MAAMrlB,OAAOyZ,EAAU2K,MAAMiB,MAAM7O,QAAU,GAC/DrU,EAAG,CAC3B,IAAI8uB,EAAYF,EAAchrC,MAC9BpK,KAAKu1C,SAASH,EAAezL,GAC7ByL,EAAgBp1C,KAAKq1C,UAAUvX,EAAWtO,EAAS,GAAI8lB,EACzE,MACkBt1C,KAAKu1C,SAASH,EAAezL,GAC7ByL,EAAgBp1C,KAAKq1C,UAAUvX,EAAWtO,EAAS,IAGvDxvB,KAAKu1C,SAASH,EAAezL,EAC3C,CACA,CACU7L,EAAU2K,MAAMiB,MAAQC,CAClC,CAEA,CAQA,EACEmK,aAAajxC,UAAU0yC,SAAW,SAAUC,EAAU7L,GACpD,IAAIzhC,EACA0S,EAAM46B,EAAS70C,OACnB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxByhC,EAAqBf,SAAS4M,EAASttC,GAE7C,EACE4rC,aAAajxC,UAAU4yC,WAAa,SAAUtZ,EAAKC,EAAKC,EAAKC,EAAKiM,EAAWf,EAAKkO,GAChFnN,EAAUhB,QAAQnL,EAAI,GAAIA,EAAI,GAAI,IAAKoL,GACvCe,EAAUhB,QAAQlL,EAAI,GAAIA,EAAI,GAAI,IAAKmL,EAAM,GACzCkO,GACFnN,EAAUhB,QAAQpL,EAAI,GAAIA,EAAI,GAAI,IAAKqL,GAEzCe,EAAUhB,QAAQjL,EAAI,GAAIA,EAAI,GAAI,IAAKkL,EAAM,EACjD,EACEsM,aAAajxC,UAAU8yC,oBAAsB,SAAU9c,EAAQ0P,EAAWf,EAAKkO,GAC7EnN,EAAUhB,QAAQ1O,EAAO,GAAIA,EAAO,GAAI,IAAK2O,GAC7Ce,EAAUhB,QAAQ1O,EAAO,GAAIA,EAAO,GAAI,IAAK2O,EAAM,GAC/CkO,GACFnN,EAAUhB,QAAQ1O,EAAO,GAAIA,EAAO,GAAI,IAAK2O,GAE/Ce,EAAUhB,QAAQ1O,EAAO,GAAIA,EAAO,GAAI,IAAK2O,EAAM,EACvD,EACEsM,aAAajxC,UAAUwyC,UAAY,SAAUvX,EAAW8X,EAAcrN,GACpE,IAEIrgC,EAEAsb,EACAC,EAEAoyB,EACAC,EACAza,EACApJ,EAEAuL,EAZA8W,EAAYxW,EAAUwW,UACtBU,EAAalX,EAAU2K,MAAMiB,MAAMrlB,OAEnCzJ,EAAMkjB,EAAU2K,MAAMiB,MAAM7O,QAG5BM,EAAc,EAKd9W,EAAS,GAETqxB,GAAW,EAUf,IATKnN,GAKHuN,EAAevN,EAAU1N,QACzB2C,EAAU+K,EAAU1N,UALpB0N,EAAYD,UAAUtN,aACtB8a,EAAe,EACftY,EAAU,GAKZnZ,EAAOha,KAAKk+B,GACPrgC,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAAG,CAI3B,IAHAmzB,EAAUiZ,EAAUpsC,GAAGmzB,QACvBkN,EAAU/hB,EAAIwuB,EAAW9sC,GAAGse,EAC5B/C,EAAOuxB,EAAW9sC,GAAGse,EAAI6U,EAAQ16B,OAAS06B,EAAQ16B,OAAS,EACtD6iB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAEzB,GAAI2X,GADJ0a,EAAoBxa,EAAQ7X,EAAI,IACI2X,YAAcya,EAAa3tC,EAC7DkzB,GAAe0a,EAAkB1a,YACjCoN,EAAU/hB,GAAI,MACT,IAAI2U,EAAcya,EAAav2C,EAAG,CACvCkpC,EAAU/hB,GAAI,EACd,KACV,CACcovB,EAAa3tC,GAAKkzB,GAAeya,EAAav2C,GAAK87B,EAAc0a,EAAkB1a,aACrFn7B,KAAKy1C,WAAWT,EAAW9sC,GAAGgC,EAAEsZ,EAAI,GAAIwxB,EAAW9sC,GAAGmV,EAAEmG,EAAI,GAAIwxB,EAAW9sC,GAAGA,EAAEsb,GAAIwxB,EAAW9sC,GAAGgC,EAAEsZ,GAAI+kB,EAAWuN,EAAcJ,GACjIA,GAAW,IAEXzjB,EAAUmO,IAAIjC,cAAc6W,EAAW9sC,GAAGgC,EAAEsZ,EAAI,GAAIwxB,EAAW9sC,GAAGgC,EAAEsZ,GAAIwxB,EAAW9sC,GAAGmV,EAAEmG,EAAI,GAAIwxB,EAAW9sC,GAAGA,EAAEsb,IAAKoyB,EAAa3tC,EAAIkzB,GAAe0a,EAAkB1a,aAAcya,EAAav2C,EAAI87B,GAAe0a,EAAkB1a,YAAaE,EAAQ7X,EAAI,IAChQxjB,KAAK21C,oBAAoB1jB,EAASsW,EAAWuN,EAAcJ,GAE3DA,GAAW,EACXnN,EAAU/hB,GAAI,GAEhB2U,GAAe0a,EAAkB1a,YACjC2a,GAAgB,CAC1B,CAEM,GAAId,EAAW9sC,GAAGse,GAAK6U,EAAQ16B,OAAQ,CAErC,GADAk1C,EAAoBxa,EAAQ7X,EAAI,GAC5B2X,GAAeya,EAAav2C,EAAG,CACjC,IAAI09B,EAAgB1B,EAAQ7X,EAAI,GAAG2X,YAC/Bya,EAAa3tC,GAAKkzB,GAAeya,EAAav2C,GAAK87B,EAAc4B,GACnE/8B,KAAKy1C,WAAWT,EAAW9sC,GAAGgC,EAAEsZ,EAAI,GAAIwxB,EAAW9sC,GAAGmV,EAAEmG,EAAI,GAAIwxB,EAAW9sC,GAAGA,EAAE,GAAI8sC,EAAW9sC,GAAGgC,EAAE,GAAIq+B,EAAWuN,EAAcJ,GACjIA,GAAW,IAEXzjB,EAAUmO,IAAIjC,cAAc6W,EAAW9sC,GAAGgC,EAAEsZ,EAAI,GAAIwxB,EAAW9sC,GAAGgC,EAAE,GAAI8qC,EAAW9sC,GAAGmV,EAAEmG,EAAI,GAAIwxB,EAAW9sC,GAAGA,EAAE,IAAK0tC,EAAa3tC,EAAIkzB,GAAe4B,GAAgB6Y,EAAav2C,EAAI87B,GAAe4B,EAAe1B,EAAQ7X,EAAI,IAChOxjB,KAAK21C,oBAAoB1jB,EAASsW,EAAWuN,EAAcJ,GAE3DA,GAAW,EACXnN,EAAU/hB,GAAI,EAE1B,MACU+hB,EAAU/hB,GAAI,EAEhB2U,GAAe0a,EAAkB1a,YACjC2a,GAAgB,CACxB,CAKM,GAJIvN,EAAU1N,UACZ0N,EAAUhB,QAAQgB,EAAUr+B,EAAEszB,GAAS,GAAI+K,EAAUr+B,EAAEszB,GAAS,GAAI,IAAKA,GACzE+K,EAAUhB,QAAQgB,EAAUr+B,EAAEq+B,EAAU1N,QAAU,GAAG,GAAI0N,EAAUr+B,EAAEq+B,EAAU1N,QAAU,GAAG,GAAI,IAAK0N,EAAU1N,QAAU,IAEvHM,EAAcya,EAAav2C,EAC7B,MAEE6I,EAAI0S,EAAM,IACZ2tB,EAAYD,UAAUtN,aACtB0a,GAAW,EACXrxB,EAAOha,KAAKk+B,GACZuN,EAAe,EAEvB,CACI,OAAOzxB,CACX,EAGE7J,gBAAgB,CAACq5B,eAAgBE,wBACjCA,uBAAuBlxC,UAAUmxC,uBAAyB,SAAUpd,EAAMhkB,GACxE5S,KAAKomC,SAAWpmC,KAAKm0C,YACrBn0C,KAAK+1C,OAAStP,gBAAgBC,QAAQ9P,EAAMhkB,EAAKqT,EAAG,EAAG,KAAMjmB,MAC7DA,KAAK+mC,cAAgB/mC,KAAK+1C,OAAOrQ,gBAAgB/kC,MACrD,EACEozC,uBAAuBlxC,UAAUmzC,YAAc,SAAUrzB,EAAMozB,GAC7D,IAAIpW,EAAUoW,EAAS,IACnBE,EAAc,CAAC,EAAG,GAClBC,EAAavzB,EAAKkY,QAClB3yB,EAAI,EACR,IAAKA,EAAI,EAAGA,EAAIguC,EAAYhuC,GAAK,EAC/B+tC,EAAY,IAAMtzB,EAAKzY,EAAEhC,GAAG,GAC5B+tC,EAAY,IAAMtzB,EAAKzY,EAAEhC,GAAG,GAE9B+tC,EAAY,IAAMC,EAClBD,EAAY,IAAMC,EAClB,IAEIxO,EACAC,EACAC,EACAC,EACAC,EACAC,EAPAoO,EAAa7N,UAAUtN,aAQ3B,IAPAmb,EAAW3vB,EAAI7D,EAAK6D,EAOfte,EAAI,EAAGA,EAAIguC,EAAYhuC,GAAK,EAC/Bw/B,EAAK/kB,EAAKzY,EAAEhC,GAAG,IAAM+tC,EAAY,GAAKtzB,EAAKzY,EAAEhC,GAAG,IAAMy3B,EACtDgI,EAAKhlB,EAAKzY,EAAEhC,GAAG,IAAM+tC,EAAY,GAAKtzB,EAAKzY,EAAEhC,GAAG,IAAMy3B,EACtDiI,EAAKjlB,EAAKtF,EAAEnV,GAAG,IAAM+tC,EAAY,GAAKtzB,EAAKtF,EAAEnV,GAAG,KAAOy3B,EACvDkI,EAAKllB,EAAKtF,EAAEnV,GAAG,IAAM+tC,EAAY,GAAKtzB,EAAKtF,EAAEnV,GAAG,KAAOy3B,EACvDmI,EAAKnlB,EAAKza,EAAEA,GAAG,IAAM+tC,EAAY,GAAKtzB,EAAKza,EAAEA,GAAG,KAAOy3B,EACvDoI,EAAKplB,EAAKza,EAAEA,GAAG,IAAM+tC,EAAY,GAAKtzB,EAAKza,EAAEA,GAAG,KAAOy3B,EACvDwW,EAAW1O,YAAYC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAI7/B,GAEjD,OAAOiuC,CACX,EACEpC,uBAAuBlxC,UAAUkyC,cAAgB,SAAUnP,GACzD,IAAIoP,EACA9sC,EAEAsb,EACAC,EAGEqa,EACA6L,EANF/uB,EAAM5a,KAAKqkB,OAAO1jB,OAGlBo1C,EAAS/1C,KAAK+1C,OAAO7rC,EACzB,GAAe,IAAX6rC,EAGF,IAAK7tC,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAAG,CAG3B,GADAyhC,GADA7L,EAAY99B,KAAKqkB,OAAOnc,IACSyhC,qBAC1B7L,EAAU2K,MAAMlD,MAASvlC,KAAKulC,MAASK,EAK5C,IAJA+D,EAAqBd,gBACrB/K,EAAU2K,MAAMlD,MAAO,EACvByP,EAAalX,EAAU2K,MAAMiB,MAAMrlB,OACnCZ,EAAOqa,EAAU2K,MAAMiB,MAAM7O,QACxBrX,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBmmB,EAAqBf,SAAS5oC,KAAKg2C,YAAYhB,EAAWxxB,GAAIuyB,IAGlEjY,EAAU2K,MAAMiB,MAAQ5L,EAAU6L,oBAC1C,CAES3pC,KAAK8mC,kBAAkBnmC,SAC1BX,KAAKulC,MAAO,EAElB,EAEE,IAAI6Q,yBAA2B,WAC7B,IAAIC,EAAgB,CAAC,EAAG,GAsJxB,SAASC,EAAkB1f,EAAMhkB,EAAMyd,GAqBrC,GApBArwB,KAAK42B,KAAOA,EACZ52B,KAAKylC,SAAU,EACfzlC,KAAK4gC,SAAW,YAChB5gC,KAAK4S,KAAOA,EACZ5S,KAAKkK,EAAI,IAAIuiC,OAEbzsC,KAAKu2C,IAAM,IAAI9J,OACfzsC,KAAKw2C,uBAAyB,EAC9Bx2C,KAAKinC,6BAA6B5W,GAAauG,GAC3ChkB,EAAKpL,GAAKoL,EAAKpL,EAAES,GACnBjI,KAAKy2C,GAAKhQ,gBAAgBC,QAAQ9P,EAAMhkB,EAAKpL,EAAExI,EAAG,EAAG,EAAGgB,MACxDA,KAAK02C,GAAKjQ,gBAAgBC,QAAQ9P,EAAMhkB,EAAKpL,EAAEgC,EAAG,EAAG,EAAGxJ,MACpD4S,EAAKpL,EAAEipC,IACTzwC,KAAK22C,GAAKlQ,gBAAgBC,QAAQ9P,EAAMhkB,EAAKpL,EAAEipC,EAAG,EAAG,EAAGzwC,QAG1DA,KAAKwH,EAAIi/B,gBAAgBC,QAAQ9P,EAAMhkB,EAAKpL,GAAK,CAC/CtG,EAAG,CAAC,EAAG,EAAG,IACT,EAAG,EAAGlB,MAEP4S,EAAKgkC,GAAI,CAIX,GAHA52C,KAAK42C,GAAKnQ,gBAAgBC,QAAQ9P,EAAMhkB,EAAKgkC,GAAI,EAAGh4B,UAAW5e,MAC/DA,KAAK62C,GAAKpQ,gBAAgBC,QAAQ9P,EAAMhkB,EAAKikC,GAAI,EAAGj4B,UAAW5e,MAC/DA,KAAK82C,GAAKrQ,gBAAgBC,QAAQ9P,EAAMhkB,EAAKkkC,GAAI,EAAGl4B,UAAW5e,MAC3D4S,EAAKu4B,GAAGjqC,EAAE,GAAGwgC,GAAI,CACnB,IAAIx5B,EACA0S,EAAMhI,EAAKu4B,GAAGjqC,EAAEP,OACpB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB0K,EAAKu4B,GAAGjqC,EAAEgH,GAAGu5B,GAAK,KAClB7uB,EAAKu4B,GAAGjqC,EAAEgH,GAAGw5B,GAAK,IAE9B,CACQ1hC,KAAKmrC,GAAK1E,gBAAgBC,QAAQ9P,EAAMhkB,EAAKu4B,GAAI,EAAGvsB,UAAW5e,MAE/DA,KAAKmrC,GAAG1I,IAAK,CACrB,MACQziC,KAAK2gB,EAAI8lB,gBAAgBC,QAAQ9P,EAAMhkB,EAAK+N,GAAK,CAC/Czf,EAAG,GACF,EAAG0d,UAAW5e,MAEf4S,EAAKsT,KACPlmB,KAAKkmB,GAAKugB,gBAAgBC,QAAQ9P,EAAMhkB,EAAKsT,GAAI,EAAGtH,UAAW5e,MAC/DA,KAAKmmB,GAAKsgB,gBAAgBC,QAAQ9P,EAAMhkB,EAAKuT,GAAI,EAAGvH,UAAW5e,OAEjEA,KAAKimB,EAAIwgB,gBAAgBC,QAAQ9P,EAAMhkB,EAAKqT,GAAK,CAC/C/kB,EAAG,CAAC,EAAG,EAAG,IACT,EAAG,EAAGlB,MACTA,KAAKiI,EAAIw+B,gBAAgBC,QAAQ9P,EAAMhkB,EAAK3K,GAAK,CAC/C/G,EAAG,CAAC,IAAK,IAAK,MACb,EAAG,IAAMlB,MAER4S,EAAKyK,EACPrd,KAAKqd,EAAIopB,gBAAgBC,QAAQ9P,EAAMhkB,EAAKyK,EAAG,EAAG,IAAMuZ,GAExD52B,KAAKqd,EAAI,CACPkoB,MAAM,EACNr7B,EAAG,GAGPlK,KAAK+2C,UAAW,EACX/2C,KAAK8mC,kBAAkBnmC,QAC1BX,KAAKomC,UAAS,EAEtB,CAaI,OAZAkQ,EAAkBzzC,UAAY,CAC5Bm0C,cAvNF,SAAuBC,GACrB,IAAI1R,EAAOvlC,KAAKulC,KAChBvlC,KAAKgnC,2BACLhnC,KAAKulC,KAAOvlC,KAAKulC,MAAQA,EACrBvlC,KAAKimB,GACPgxB,EAAIlJ,WAAW/tC,KAAKimB,EAAE/b,EAAE,IAAKlK,KAAKimB,EAAE/b,EAAE,GAAIlK,KAAKimB,EAAE/b,EAAE,IAEjDlK,KAAKiI,GACPgvC,EAAIvJ,MAAM1tC,KAAKiI,EAAEiC,EAAE,GAAIlK,KAAKiI,EAAEiC,EAAE,GAAIlK,KAAKiI,EAAEiC,EAAE,IAE3ClK,KAAKkmB,IACP+wB,EAAIxJ,cAAcztC,KAAKkmB,GAAGhc,EAAGlK,KAAKmmB,GAAGjc,GAEnClK,KAAK2gB,EACPs2B,EAAIlK,QAAQ/sC,KAAK2gB,EAAEzW,GAEnB+sC,EAAI5J,SAASrtC,KAAK82C,GAAG5sC,GAAGkjC,QAAQptC,KAAK62C,GAAG3sC,GAAGijC,QAAQntC,KAAK42C,GAAG1sC,GAAGmjC,SAASrtC,KAAKmrC,GAAGjhC,EAAE,IAAIkjC,QAAQptC,KAAKmrC,GAAGjhC,EAAE,IAAIijC,QAAQntC,KAAKmrC,GAAGjhC,EAAE,IAE3HlK,KAAK4S,KAAKpL,EAAES,EACVjI,KAAK4S,KAAKpL,EAAEipC,EACdwG,EAAIlJ,UAAU/tC,KAAKy2C,GAAGvsC,EAAGlK,KAAK02C,GAAGxsC,GAAIlK,KAAK22C,GAAGzsC,GAE7C+sC,EAAIlJ,UAAU/tC,KAAKy2C,GAAGvsC,EAAGlK,KAAK02C,GAAGxsC,EAAG,GAGtC+sC,EAAIlJ,UAAU/tC,KAAKwH,EAAE0C,EAAE,GAAIlK,KAAKwH,EAAE0C,EAAE,IAAKlK,KAAKwH,EAAE0C,EAAE,GAE1D,EA6LMk8B,SA5LF,SAAqB8Q,GACnB,GAAIl3C,KAAK42B,KAAKnG,WAAWgV,UAAYzlC,KAAKylC,QAA1C,CAQA,GALIzlC,KAAK+2C,WACP/2C,KAAKm3C,qBACLn3C,KAAK+2C,UAAW,GAElB/2C,KAAKgnC,2BACDhnC,KAAKulC,MAAQ2R,EAAa,CAC5B,IAAIroB,EAgBJ,GAfA7uB,KAAKkK,EAAEqmC,eAAevwC,KAAKu2C,IAAIt5C,OAC3B+C,KAAKw2C,uBAAyB,GAChCx2C,KAAKkK,EAAE6jC,WAAW/tC,KAAKimB,EAAE/b,EAAE,IAAKlK,KAAKimB,EAAE/b,EAAE,GAAIlK,KAAKimB,EAAE/b,EAAE,IAEpDlK,KAAKw2C,uBAAyB,GAChCx2C,KAAKkK,EAAEwjC,MAAM1tC,KAAKiI,EAAEiC,EAAE,GAAIlK,KAAKiI,EAAEiC,EAAE,GAAIlK,KAAKiI,EAAEiC,EAAE,IAE9ClK,KAAKkmB,IAAMlmB,KAAKw2C,uBAAyB,GAC3Cx2C,KAAKkK,EAAEujC,cAAcztC,KAAKkmB,GAAGhc,EAAGlK,KAAKmmB,GAAGjc,GAEtClK,KAAK2gB,GAAK3gB,KAAKw2C,uBAAyB,EAC1Cx2C,KAAKkK,EAAE6iC,QAAQ/sC,KAAK2gB,EAAEzW,IACZlK,KAAK2gB,GAAK3gB,KAAKw2C,uBAAyB,GAClDx2C,KAAKkK,EAAEmjC,SAASrtC,KAAK82C,GAAG5sC,GAAGkjC,QAAQptC,KAAK62C,GAAG3sC,GAAGijC,QAAQntC,KAAK42C,GAAG1sC,GAAGmjC,SAASrtC,KAAKmrC,GAAGjhC,EAAE,IAAIkjC,QAAQptC,KAAKmrC,GAAGjhC,EAAE,IAAIijC,QAAQntC,KAAKmrC,GAAGjhC,EAAE,IAE9HlK,KAAKo3C,aAAc,CACrB,IAAI5K,EACA6K,EAEJ,GADAxoB,EAAY7uB,KAAK42B,KAAKnG,WAAW5B,UAC7B7uB,KAAKwH,GAAKxH,KAAKwH,EAAE45B,WAAaphC,KAAKwH,EAAE8vC,eACnCt3C,KAAKwH,EAAE09B,SAASlD,UAAYhiC,KAAKwH,EAAEm5B,YAAc3gC,KAAKwH,EAAE45B,UAAU,GAAGp5B,GACvEwkC,EAAKxsC,KAAKwH,EAAE8vC,gBAAgBt3C,KAAKwH,EAAE45B,UAAU,GAAGp5B,EAAI,KAAQ6mB,EAAW,GACvEwoB,EAAKr3C,KAAKwH,EAAE8vC,eAAet3C,KAAKwH,EAAE45B,UAAU,GAAGp5B,EAAI6mB,EAAW,IACrD7uB,KAAKwH,EAAE09B,SAASlD,UAAYhiC,KAAKwH,EAAEm5B,YAAc3gC,KAAKwH,EAAE45B,UAAUphC,KAAKwH,EAAE45B,UAAUzgC,OAAS,GAAGqH,GACxGwkC,EAAKxsC,KAAKwH,EAAE8vC,eAAet3C,KAAKwH,EAAE45B,UAAUphC,KAAKwH,EAAE45B,UAAUzgC,OAAS,GAAGqH,EAAI6mB,EAAW,GACxFwoB,EAAKr3C,KAAKwH,EAAE8vC,gBAAgBt3C,KAAKwH,EAAE45B,UAAUphC,KAAKwH,EAAE45B,UAAUzgC,OAAS,GAAGqH,EAAI,KAAQ6mB,EAAW,KAEjG2d,EAAKxsC,KAAKwH,EAAEq5B,GACZwW,EAAKr3C,KAAKwH,EAAE8vC,gBAAgBt3C,KAAKwH,EAAE09B,SAASlD,UAAYhiC,KAAKwH,EAAEm5B,WAAa,KAAQ9R,EAAW7uB,KAAKwH,EAAEm5B,kBAEnG,GAAI3gC,KAAKy2C,IAAMz2C,KAAKy2C,GAAGrV,WAAaphC,KAAK02C,GAAGtV,WAAaphC,KAAKy2C,GAAGa,gBAAkBt3C,KAAK02C,GAAGY,eAAgB,CAChH9K,EAAK,GACL6K,EAAK,GACL,IAAIZ,EAAKz2C,KAAKy2C,GACVC,EAAK12C,KAAK02C,GACVD,EAAGvR,SAASlD,UAAYyU,EAAG9V,YAAc8V,EAAGrV,UAAU,GAAGp5B,GAC3DwkC,EAAG,GAAKiK,EAAGa,gBAAgBb,EAAGrV,UAAU,GAAGp5B,EAAI,KAAQ6mB,EAAW,GAClE2d,EAAG,GAAKkK,EAAGY,gBAAgBZ,EAAGtV,UAAU,GAAGp5B,EAAI,KAAQ6mB,EAAW,GAClEwoB,EAAG,GAAKZ,EAAGa,eAAeb,EAAGrV,UAAU,GAAGp5B,EAAI6mB,EAAW,GACzDwoB,EAAG,GAAKX,EAAGY,eAAeZ,EAAGtV,UAAU,GAAGp5B,EAAI6mB,EAAW,IAChD4nB,EAAGvR,SAASlD,UAAYyU,EAAG9V,YAAc8V,EAAGrV,UAAUqV,EAAGrV,UAAUzgC,OAAS,GAAGqH,GACxFwkC,EAAG,GAAKiK,EAAGa,eAAeb,EAAGrV,UAAUqV,EAAGrV,UAAUzgC,OAAS,GAAGqH,EAAI6mB,EAAW,GAC/E2d,EAAG,GAAKkK,EAAGY,eAAeZ,EAAGtV,UAAUsV,EAAGtV,UAAUzgC,OAAS,GAAGqH,EAAI6mB,EAAW,GAC/EwoB,EAAG,GAAKZ,EAAGa,gBAAgBb,EAAGrV,UAAUqV,EAAGrV,UAAUzgC,OAAS,GAAGqH,EAAI,KAAQ6mB,EAAW,GACxFwoB,EAAG,GAAKX,EAAGY,gBAAgBZ,EAAGtV,UAAUsV,EAAGtV,UAAUzgC,OAAS,GAAGqH,EAAI,KAAQ6mB,EAAW,KAExF2d,EAAK,CAACiK,EAAG5V,GAAI6V,EAAG7V,IAChBwW,EAAG,GAAKZ,EAAGa,gBAAgBb,EAAGvR,SAASlD,UAAYyU,EAAG9V,WAAa,KAAQ9R,EAAW4nB,EAAG9V,YACzF0W,EAAG,GAAKX,EAAGY,gBAAgBZ,EAAGxR,SAASlD,UAAY0U,EAAG/V,WAAa,KAAQ9R,EAAW6nB,EAAG/V,YAEvG,MAEY6L,EADA6K,EAAKhB,EAGPr2C,KAAKkK,EAAE6iC,QAAQ15B,KAAK8wB,MAAMqI,EAAG,GAAK6K,EAAG,GAAI7K,EAAG,GAAK6K,EAAG,IAC9D,CACYr3C,KAAK4S,KAAKpL,GAAKxH,KAAK4S,KAAKpL,EAAES,EACzBjI,KAAK4S,KAAKpL,EAAEipC,EACdzwC,KAAKkK,EAAE6jC,UAAU/tC,KAAKy2C,GAAGvsC,EAAGlK,KAAK02C,GAAGxsC,GAAIlK,KAAK22C,GAAGzsC,GAEhDlK,KAAKkK,EAAE6jC,UAAU/tC,KAAKy2C,GAAGvsC,EAAGlK,KAAK02C,GAAGxsC,EAAG,GAGzClK,KAAKkK,EAAE6jC,UAAU/tC,KAAKwH,EAAE0C,EAAE,GAAIlK,KAAKwH,EAAE0C,EAAE,IAAKlK,KAAKwH,EAAE0C,EAAE,GAE/D,CACMlK,KAAKylC,QAAUzlC,KAAK42B,KAAKnG,WAAWgV,OA1E1C,CA2EA,EA+GM0R,mBA9GF,WAGE,GAFAn3C,KAAKw2C,uBAAyB,EAC9Bx2C,KAAKu2C,IAAIvM,SACJhqC,KAAKimB,EAAEyf,gBAAgB/kC,SAC1BX,KAAKu2C,IAAIxI,WAAW/tC,KAAKimB,EAAE/b,EAAE,IAAKlK,KAAKimB,EAAE/b,EAAE,GAAIlK,KAAKimB,EAAE/b,EAAE,IACxDlK,KAAKw2C,uBAAyB,GAI3Bx2C,KAAKiI,EAAEy9B,gBAAgB/kC,QAA5B,CAMA,GALEX,KAAKu2C,IAAI7I,MAAM1tC,KAAKiI,EAAEiC,EAAE,GAAIlK,KAAKiI,EAAEiC,EAAE,GAAIlK,KAAKiI,EAAEiC,EAAE,IAClDlK,KAAKw2C,uBAAyB,EAI5Bx2C,KAAKkmB,GAAI,CACX,GAAKlmB,KAAKkmB,GAAGwf,gBAAgB/kC,QAAWX,KAAKmmB,GAAGuf,gBAAgB/kC,OAI9D,OAHAX,KAAKu2C,IAAI9I,cAAcztC,KAAKkmB,GAAGhc,EAAGlK,KAAKmmB,GAAGjc,GAC1ClK,KAAKw2C,uBAAyB,CAIxC,CACUx2C,KAAK2gB,EACF3gB,KAAK2gB,EAAE+kB,gBAAgB/kC,SAC1BX,KAAKu2C,IAAIxJ,QAAQ/sC,KAAK2gB,EAAEzW,GACxBlK,KAAKw2C,uBAAyB,GAEtBx2C,KAAK82C,GAAGpR,gBAAgB/kC,QAAWX,KAAK62C,GAAGnR,gBAAgB/kC,QAAWX,KAAK42C,GAAGlR,gBAAgB/kC,QAAWX,KAAKmrC,GAAGzF,gBAAgB/kC,SAC3IX,KAAKu2C,IAAIlJ,SAASrtC,KAAK82C,GAAG5sC,GAAGkjC,QAAQptC,KAAK62C,GAAG3sC,GAAGijC,QAAQntC,KAAK42C,GAAG1sC,GAAGmjC,SAASrtC,KAAKmrC,GAAGjhC,EAAE,IAAIkjC,QAAQptC,KAAKmrC,GAAGjhC,EAAE,IAAIijC,QAAQntC,KAAKmrC,GAAGjhC,EAAE,IAClIlK,KAAKw2C,uBAAyB,EAhBtC,CAkBA,EA+EMe,WA9EF,WAGJ,GA6EI/8B,gBAAgB,CAACqsB,0BAA2ByP,GAC5CA,EAAkBzzC,UAAUojC,mBA7E5B,SAA4B1xB,GAC1BvU,KAAKw3C,oBAAoBjjC,GACzBvU,KAAK42B,KAAKqP,mBAAmB1xB,GAC7BvU,KAAK+2C,UAAW,CACtB,EA0EIT,EAAkBzzC,UAAU20C,oBAAsB3Q,yBAAyBhkC,UAAUojC,mBAI9E,CACLwR,qBAJF,SAA8B7gB,EAAMhkB,EAAMyd,GACxC,OAAO,IAAIimB,EAAkB1f,EAAMhkB,EAAMyd,EAC/C,EAIA,CAvOiC,GAyO/B,SAASqnB,mBAAmB,CA0P5B,SAASC,uBAAuB,CAyGhC,SAASC,WAAW3xB,EAAG5e,GACrB,OAAyB,IAAlBgM,KAAKmL,IAAIyH,EAAI5e,IAAegM,KAAK+K,IAAI/K,KAAKmL,IAAIyH,GAAI5S,KAAKmL,IAAInX,GACtE,CACE,SAASwwC,UAAUtuC,GACjB,OAAO8J,KAAKmL,IAAIjV,IAAM,IAC1B,CACE,SAASuuC,KAAKxN,EAAIC,EAAIwL,GACpB,OAAOzL,GAAM,EAAIyL,GAAUxL,EAAKwL,CACpC,CACE,SAASgC,UAAUzN,EAAIC,EAAIwL,GACzB,MAAO,CAAC+B,KAAKxN,EAAG,GAAIC,EAAG,GAAIwL,GAAS+B,KAAKxN,EAAG,GAAIC,EAAG,GAAIwL,GAC3D,CACE,SAASiC,UAAU/xB,EAAG5e,EAAGmf,GAEvB,GAAU,IAANP,EAAS,MAAO,GACpB,IAAIhe,EAAIZ,EAAIA,EAAI,EAAI4e,EAAIO,EAExB,GAAIve,EAAI,EAAG,MAAO,GAClB,IAAIgwC,GAAc5wC,GAAK,EAAI4e,GAE3B,GAAU,IAANhe,EAAS,MAAO,CAACgwC,GACrB,IAAIC,EAAQ7kC,KAAKyK,KAAK7V,IAAM,EAAIge,GAEhC,MAAO,CAACgyB,EAAaC,EAAOD,EAAaC,EAC7C,CACE,SAASC,uBAAuB7N,EAAIC,EAAIyE,EAAIoJ,GAC1C,MAAO,CAAO,EAAI7N,EAATD,EAAc,EAAI0E,EAAKoJ,EAAI,EAAI9N,EAAK,EAAIC,EAAK,EAAIyE,GAAI,EAAK1E,EAAK,EAAIC,EAAID,EACpF,CACE,SAAS+N,YAAY7wC,GACnB,OAAO,IAAI8wC,iBAAiB9wC,EAAGA,EAAGA,EAAGA,GAAG,EAC5C,CACE,SAAS8wC,iBAAiBhO,EAAIC,EAAIyE,EAAIoJ,EAAIG,GACpCA,GAAaC,WAAWlO,EAAIC,KAC9BA,EAAKwN,UAAUzN,EAAI8N,EAAI,EAAI,IAEzBG,GAAaC,WAAWxJ,EAAIoJ,KAC9BpJ,EAAK+I,UAAUzN,EAAI8N,EAAI,EAAI,IAE7B,IAAIK,EAASN,uBAAuB7N,EAAG,GAAIC,EAAG,GAAIyE,EAAG,GAAIoJ,EAAG,IACxDM,EAASP,uBAAuB7N,EAAG,GAAIC,EAAG,GAAIyE,EAAG,GAAIoJ,EAAG,IAC5Dp4C,KAAKimB,EAAI,CAACwyB,EAAO,GAAIC,EAAO,IAC5B14C,KAAKqH,EAAI,CAACoxC,EAAO,GAAIC,EAAO,IAC5B14C,KAAKwmB,EAAI,CAACiyB,EAAO,GAAIC,EAAO,IAC5B14C,KAAKoH,EAAI,CAACqxC,EAAO,GAAIC,EAAO,IAC5B14C,KAAK64B,OAAS,CAACyR,EAAIC,EAAIyE,EAAIoJ,EAC/B,CAyCE,SAASO,QAAQvY,EAAK7b,GACpB,IAAInG,EAAMgiB,EAAIvH,OAAO,GAAGtU,GACpBrG,EAAMkiB,EAAIvH,OAAOuH,EAAIvH,OAAOl4B,OAAS,GAAG4jB,GAC5C,GAAInG,EAAMF,EAAK,CACb,IAAI7e,EAAI6e,EACRA,EAAME,EACNA,EAAM/e,CACZ,CAGI,IADA,IAAIkK,EAAIyuC,UAAU,EAAI5X,EAAIna,EAAE1B,GAAO,EAAI6b,EAAI/4B,EAAEkd,GAAO6b,EAAI5Z,EAAEjC,IACjDrc,EAAI,EAAGA,EAAIqB,EAAE5I,OAAQuH,GAAK,EACjC,GAAIqB,EAAErB,GAAK,GAAKqB,EAAErB,GAAK,EAAG,CACxB,IAAIuW,EAAM2hB,EAAIzD,MAAMpzB,EAAErB,IAAIqc,GACtB9F,EAAML,EAAKA,EAAMK,EAAaA,EAAMP,IAAKA,EAAMO,EAC3D,CAEI,MAAO,CACLL,IAAKA,EACLF,IAAKA,EAEX,CAoBE,SAAS06B,cAAcxY,EAAK7B,EAAIsa,GAC9B,IAAIC,EAAM1Y,EAAI2Y,cACd,MAAO,CACLC,GAAIF,EAAIE,GACRC,GAAIH,EAAIG,GACR/zC,MAAO4zC,EAAI5zC,MACXC,OAAQ2zC,EAAI3zC,OACZi7B,IAAKA,EACLp4B,GAAIu2B,EAAKsa,GAAM,EACfta,GAAIA,EACJsa,GAAIA,EAEV,CACE,SAASK,UAAUtmC,GACjB,IAAI6E,EAAQ7E,EAAKwtB,IAAI3oB,MAAM,IAC3B,MAAO,CAACmhC,cAAcnhC,EAAM,GAAI7E,EAAK2rB,GAAI3rB,EAAK5K,GAAI4wC,cAAcnhC,EAAM,GAAI7E,EAAK5K,EAAG4K,EAAKimC,IAC3F,CACE,SAASM,aAAahK,EAAIhB,GACxB,OAAiC,EAA1B96B,KAAKmL,IAAI2wB,EAAG6J,GAAK7K,EAAG6K,IAAU7J,EAAGjqC,MAAQipC,EAAGjpC,OAAmC,EAA1BmO,KAAKmL,IAAI2wB,EAAG8J,GAAK9K,EAAG8K,IAAU9J,EAAGhqC,OAASgpC,EAAGhpC,MAC7G,CACE,SAASi0C,eAAehK,EAAIhB,EAAIiL,EAAOC,EAAWC,EAAeC,GAC/D,GAAKL,aAAa/J,EAAIhB,GACtB,GAAIiL,GAASG,GAAgBpK,EAAGlqC,OAASo0C,GAAalK,EAAGjqC,QAAUm0C,GAAalL,EAAGlpC,OAASo0C,GAAalL,EAAGjpC,QAAUm0C,EACpHC,EAAclvC,KAAK,CAAC+kC,EAAGpnC,EAAGomC,EAAGpmC,QAD/B,CAIA,IAAIyxC,EAAMP,UAAU9J,GAChBsK,EAAMR,UAAU9K,GACpBgL,eAAeK,EAAI,GAAIC,EAAI,GAAIL,EAAQ,EAAGC,EAAWC,EAAeC,GACpEJ,eAAeK,EAAI,GAAIC,EAAI,GAAIL,EAAQ,EAAGC,EAAWC,EAAeC,GACpEJ,eAAeK,EAAI,GAAIC,EAAI,GAAIL,EAAQ,EAAGC,EAAWC,EAAeC,GACpEJ,eAAeK,EAAI,GAAIC,EAAI,GAAIL,EAAQ,EAAGC,EAAWC,EAAeC,EANxE,CAOA,CAgBE,SAASG,aAAa1zB,EAAG5e,GACvB,MAAO,CAAC4e,EAAE,GAAK5e,EAAE,GAAK4e,EAAE,GAAK5e,EAAE,GAAI4e,EAAE,GAAK5e,EAAE,GAAK4e,EAAE,GAAK5e,EAAE,GAAI4e,EAAE,GAAK5e,EAAE,GAAK4e,EAAE,GAAK5e,EAAE,GACzF,CACE,SAASuyC,iBAAiBC,EAAQC,EAAMC,EAAQC,GAC9C,IAAIxN,EAAK,CAACqN,EAAO,GAAIA,EAAO,GAAI,GAC5BxC,EAAK,CAACyC,EAAK,GAAIA,EAAK,GAAI,GACxBG,EAAK,CAACF,EAAO,GAAIA,EAAO,GAAI,GAC5BG,EAAK,CAACF,EAAK,GAAIA,EAAK,GAAI,GACxBr5B,EAAIg5B,aAAaA,aAAanN,EAAI6K,GAAKsC,aAAaM,EAAIC,IAC5D,OAAIrC,UAAUl3B,EAAE,IAAY,KACrB,CAACA,EAAE,GAAKA,EAAE,GAAIA,EAAE,GAAKA,EAAE,GAClC,CACE,SAASw5B,YAAY3yC,EAAGikC,EAAO9qC,GAC7B,MAAO,CAAC6G,EAAE,GAAK6L,KAAKoxB,IAAIgH,GAAS9qC,EAAQ6G,EAAE,GAAK6L,KAAKuwB,IAAI6H,GAAS9qC,EACtE,CACE,SAASy5C,cAAc7P,EAAIyE,GACzB,OAAO37B,KAAKgnC,MAAM9P,EAAG,GAAKyE,EAAG,GAAIzE,EAAG,GAAKyE,EAAG,GAChD,CACE,SAASwJ,WAAWjO,EAAIyE,GACtB,OAAO4I,WAAWrN,EAAG,GAAIyE,EAAG,KAAO4I,WAAWrN,EAAG,GAAIyE,EAAG,GAC5D,CAEE,SAASsL,iBAAiB,CAS1B,SAASC,SAASC,EAAc7d,EAAO8O,EAAO9rB,EAAW86B,EAAWC,EAAcC,GAChF,IAAIC,EAAOnP,EAAQp4B,KAAKwL,GAAK,EACzBg8B,EAAOpP,EAAQp4B,KAAKwL,GAAK,EACzB43B,EAAK9Z,EAAM,GAAKtpB,KAAKoxB,IAAIgH,GAAS9rB,EAAY86B,EAC9C/D,EAAK/Z,EAAM,GAAKtpB,KAAKuwB,IAAI6H,GAAS9rB,EAAY86B,EAClDD,EAAa/S,YAAYgP,EAAIC,EAAID,EAAKpjC,KAAKoxB,IAAImW,GAAQF,EAAchE,EAAKrjC,KAAKuwB,IAAIgX,GAAQF,EAAcjE,EAAKpjC,KAAKoxB,IAAIoW,GAAQF,EAAajE,EAAKrjC,KAAKuwB,IAAIiX,GAAQF,EAAaH,EAAa75C,SAChM,CACE,SAASm6C,uBAAuB3e,EAAKC,GACnC,IAAI2e,EAAS,CAAC3e,EAAI,GAAKD,EAAI,GAAIC,EAAI,GAAKD,EAAI,IACxC6e,EAAiB,IAAV3nC,KAAKwL,GAEhB,MADoB,CAACxL,KAAKoxB,IAAIuW,GAAOD,EAAO,GAAK1nC,KAAKuwB,IAAIoX,GAAOD,EAAO,GAAI1nC,KAAKuwB,IAAIoX,GAAOD,EAAO,GAAK1nC,KAAKoxB,IAAIuW,GAAOD,EAAO,GAEnI,CACE,SAASE,mBAAmBt4B,EAAMu4B,GAChC,IAAIC,EAAoB,IAARD,EAAYv4B,EAAKhiB,SAAW,EAAIu6C,EAAM,EAClDE,GAAaF,EAAM,GAAKv4B,EAAKhiB,SAG7B06C,EAAUP,uBAFEn4B,EAAKzY,EAAEixC,GACPx4B,EAAKzY,EAAEkxC,IAEvB,OAAO/nC,KAAK8wB,MAAM,EAAG,GAAK9wB,KAAK8wB,MAAMkX,EAAQ,GAAIA,EAAQ,GAC7D,CACE,SAASC,aAAad,EAAc73B,EAAMu4B,EAAKT,EAAWc,EAAWC,EAAW77B,GAC9E,IAAI8rB,EAAQwP,mBAAmBt4B,EAAMu4B,GACjCve,EAAQha,EAAKzY,EAAEgxC,EAAMv4B,EAAKkY,SAC1B4gB,EAAY94B,EAAKzY,EAAU,IAARgxC,EAAYv4B,EAAKkY,QAAU,EAAIqgB,EAAM,GACxDQ,EAAY/4B,EAAKzY,GAAGgxC,EAAM,GAAKv4B,EAAKkY,SACpC8gB,EAAyB,IAAdH,EAAkBnoC,KAAKyK,KAAKzK,KAAKuK,IAAI+e,EAAM,GAAK8e,EAAU,GAAI,GAAKpoC,KAAKuK,IAAI+e,EAAM,GAAK8e,EAAU,GAAI,IAAM,EACtHG,EAAyB,IAAdJ,EAAkBnoC,KAAKyK,KAAKzK,KAAKuK,IAAI+e,EAAM,GAAK+e,EAAU,GAAI,GAAKroC,KAAKuK,IAAI+e,EAAM,GAAK+e,EAAU,GAAI,IAAM,EAC1HnB,SAASC,EAAc73B,EAAKzY,EAAEgxC,EAAMv4B,EAAKkY,SAAU4Q,EAAO9rB,EAAW86B,EAAWmB,GAA8B,GAAjBL,EAAY,IAASI,GAA8B,GAAjBJ,EAAY,IAC/I,CACE,SAASM,cAAcrB,EAAcvoB,EAASwoB,EAAWc,EAAWC,EAAW77B,GAC7E,IAAK,IAAIzX,EAAI,EAAGA,EAAIqzC,EAAWrzC,GAAK,EAAG,CACrC,IAAIF,GAAKE,EAAI,IAAMqzC,EAAY,GAC3BO,EAAqB,IAAdN,EAAkBnoC,KAAKyK,KAAKzK,KAAKuK,IAAIqU,EAAQ4G,OAAO,GAAG,GAAK5G,EAAQ4G,OAAO,GAAG,GAAI,GAAKxlB,KAAKuK,IAAIqU,EAAQ4G,OAAO,GAAG,GAAK5G,EAAQ4G,OAAO,GAAG,GAAI,IAAM,EAC1J4S,EAAQxZ,EAAQ8pB,YAAY/zC,GAEhCuyC,SAASC,EADGvoB,EAAQ0K,MAAM30B,GACIyjC,EAAO9rB,EAAW86B,EAAWqB,GAA0B,GAAjBP,EAAY,IAASO,GAA0B,GAAjBP,EAAY,KAC9G57B,GAAaA,CACnB,CACI,OAAOA,CACX,CAuDE,SAASq8B,aAAazR,EAAIyE,EAAI+G,GAC5B,IAAItK,EAAQp4B,KAAK8wB,MAAM6K,EAAG,GAAKzE,EAAG,GAAIyE,EAAG,GAAKzE,EAAG,IACjD,MAAO,CAAC4P,YAAY5P,EAAIkB,EAAOsK,GAASoE,YAAYnL,EAAIvD,EAAOsK,GACnE,CACE,SAASkG,cAAchqB,EAAS8jB,GAC9B,IAAIzL,EACA4R,EACAC,EACAC,EACAC,EACAjE,EACA/4C,EAEJirC,GADAjrC,EAAI28C,aAAa/pB,EAAQ4G,OAAO,GAAI5G,EAAQ4G,OAAO,GAAIkd,IAChD,GACPmG,EAAM78C,EAAE,GAER88C,GADA98C,EAAI28C,aAAa/pB,EAAQ4G,OAAO,GAAI5G,EAAQ4G,OAAO,GAAIkd,IAC/C,GACRqG,EAAM/8C,EAAE,GAERg9C,GADAh9C,EAAI28C,aAAa/pB,EAAQ4G,OAAO,GAAI5G,EAAQ4G,OAAO,GAAIkd,IAC/C,GACRqC,EAAK/4C,EAAE,GACP,IAAIkrC,EAAKqP,iBAAiBtP,EAAI4R,EAAKC,EAAKC,GAC7B,OAAP7R,IAAaA,EAAK2R,GACtB,IAAIlN,EAAK4K,iBAAiByC,EAAKjE,EAAI+D,EAAKC,GAExC,OADW,OAAPpN,IAAaA,EAAKqN,GACf,IAAI/D,iBAAiBhO,EAAIC,EAAIyE,EAAIoJ,EAC5C,CACE,SAASkE,UAAU9B,EAAc+B,EAAMC,EAAMC,EAAUC,GACrD,IAAIpS,EAAKiS,EAAK1jB,OAAO,GACjB0R,EAAKiS,EAAK3jB,OAAO,GAGrB,GAAiB,IAAb4jB,EAAgB,OAAOnS,EAG3B,GAAIkO,WAAWlO,EAAIC,GAAK,OAAOD,EAG/B,GAAiB,IAAbmS,EAAgB,CAClB,IAAIE,GAAYJ,EAAKK,aAAa,GAC9BC,GAAWL,EAAKI,aAAa,GAAKvpC,KAAKwL,GACvC/X,EAAS8yC,iBAAiBtP,EAAI6P,YAAY7P,EAAIqS,EAAWtpC,KAAKwL,GAAK,EAAG,KAAM0rB,EAAI4P,YAAY5P,EAAIoS,EAAWtpC,KAAKwL,GAAK,EAAG,MACxHhZ,EAASiB,EAASszC,cAActzC,EAAQwjC,GAAM8P,cAAc9P,EAAIC,GAAM,EACtEsC,EAAMsN,YAAY7P,EAAIqS,EAAU,EAAI92C,EAASiZ,aAIjD,OAHA07B,EAAajT,QAAQsF,EAAI,GAAIA,EAAI,GAAI,IAAK2N,EAAa75C,SAAW,GAClEksC,EAAMsN,YAAY5P,EAAIsS,EAAS,EAAIh3C,EAASiZ,aAC5C07B,EAAa/S,YAAY8C,EAAG,GAAIA,EAAG,GAAIA,EAAG,GAAIA,EAAG,GAAIsC,EAAI,GAAIA,EAAI,GAAI2N,EAAa75C,UAC3E4pC,CACb,CAGI,IAEIuS,EAAelD,iBAFVpB,WAAWlO,EAAIiS,EAAK1jB,OAAO,IAAM0jB,EAAK1jB,OAAO,GAAK0jB,EAAK1jB,OAAO,GAE/ByR,EAAIC,EADnCiO,WAAWjO,EAAIiS,EAAK3jB,OAAO,IAAM2jB,EAAK3jB,OAAO,GAAK2jB,EAAK3jB,OAAO,IAEvE,OAAIikB,GAAgB1C,cAAc0C,EAAcxS,GAAMoS,GACpDlC,EAAa/S,YAAYqV,EAAa,GAAIA,EAAa,GAAIA,EAAa,GAAIA,EAAa,GAAIA,EAAa,GAAIA,EAAa,GAAItC,EAAa75C,UACrIm8C,GAEFxS,CACX,CACE,SAASyS,gBAAgB92B,EAAG5e,GAC1B,IAAI21C,EAAY/2B,EAAEszB,cAAclyC,GAEhC,OADI21C,EAAUr8C,QAAUi3C,WAAWoF,EAAU,GAAG,GAAI,IAAIA,EAAU9qB,QAC9D8qB,EAAUr8C,OAAeq8C,EAAU,GAChC,IACX,CACE,SAASC,yBAAyBh3B,EAAG5e,GACnC,IAAI61C,EAAOj3B,EAAExP,QACT0mC,EAAO91C,EAAEoP,QACTumC,EAAYD,gBAAgB92B,EAAEA,EAAEtlB,OAAS,GAAI0G,EAAE,IAKnD,OAJI21C,IACFE,EAAKj3B,EAAEtlB,OAAS,GAAKslB,EAAEA,EAAEtlB,OAAS,GAAG8W,MAAMulC,EAAU,IAAI,GACzDG,EAAK,GAAK91C,EAAE,GAAGoQ,MAAMulC,EAAU,IAAI,IAEjC/2B,EAAEtlB,OAAS,GAAK0G,EAAE1G,OAAS,IAC7Bq8C,EAAYD,gBAAgB92B,EAAE,GAAI5e,EAAEA,EAAE1G,OAAS,KAEtC,CAAC,CAACslB,EAAE,GAAGxO,MAAMulC,EAAU,IAAI,IAAK,CAAC31C,EAAEA,EAAE1G,OAAS,GAAG8W,MAAMulC,EAAU,IAAI,KAGzE,CAACE,EAAMC,EAClB,CACE,SAASC,mBAAmB5tB,GAE1B,IADA,IAAInwB,EACK6I,EAAI,EAAGA,EAAIsnB,EAAS7uB,OAAQuH,GAAK,EACxC7I,EAAI49C,yBAAyBztB,EAAStnB,EAAI,GAAIsnB,EAAStnB,IACvDsnB,EAAStnB,EAAI,GAAK7I,EAAE,GACpBmwB,EAAStnB,GAAK7I,EAAE,GAOlB,OALImwB,EAAS7uB,OAAS,IACpBtB,EAAI49C,yBAAyBztB,EAASA,EAAS7uB,OAAS,GAAI6uB,EAAS,IACrEA,EAASA,EAAS7uB,OAAS,GAAKtB,EAAE,GAClCmwB,EAAS,GAAKnwB,EAAE,IAEXmwB,CACX,CACE,SAAS6tB,mBAAmBprB,EAAS8jB,GAOnC,IACItwC,EACAE,EACA8R,EACA6lC,EAJA/xC,EAAO0mB,EAAQsrB,mBAKnB,GAAoB,IAAhBhyC,EAAK5K,OACP,MAAO,CAACs7C,cAAchqB,EAAS8jB,IAEjC,GAAoB,IAAhBxqC,EAAK5K,QAAgBi3C,WAAWrsC,EAAK,GAAI,GAI3C,OAFA9F,GADAgS,EAAQwa,EAAQxa,MAAMlM,EAAK,KACd,GACb5F,EAAQ8R,EAAM,GACP,CAACwkC,cAAcx2C,EAAMswC,GAASkG,cAAct2C,EAAOowC,IAG5DtwC,GADAgS,EAAQwa,EAAQxa,MAAMlM,EAAK,KACd,GACb,IAAIvD,GAAKuD,EAAK,GAAKA,EAAK,KAAO,EAAIA,EAAK,IAIxC,OAFA+xC,GADA7lC,EAAQA,EAAM,GAAGA,MAAMzP,IACX,GACZrC,EAAQ8R,EAAM,GACP,CAACwkC,cAAcx2C,EAAMswC,GAASkG,cAAcqB,EAAKvH,GAASkG,cAAct2C,EAAOowC,GAC1F,CACE,SAASyH,qBAAqB,CAqF9B,SAASC,kBAAkBC,GAMzB,IALA,IAAIC,EAASD,EAASE,OAASF,EAASE,OAAOnmC,MAAM,KAAO,GACxDomC,EAAU,SACVD,EAAS,SACThjC,EAAM+iC,EAAOh9C,OAERuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAE5B,OADYy1C,EAAOz1C,GAAG41C,eAEpB,IAAK,SACHF,EAAS,SACT,MACF,IAAK,OACHC,EAAU,MACV,MACF,IAAK,QACHA,EAAU,MACV,MACF,IAAK,SACHA,EAAU,MACV,MACF,IAAK,UACL,IAAK,SACHA,EAAU,MACV,MACF,IAAK,QACL,IAAK,OACHA,EAAU,MAMhB,MAAO,CACLt5C,MAAOq5C,EACPG,OAAQL,EAASG,SAAWA,EAElC,CAr4BErjC,gBAAgB,CAACq5B,eAAgB6D,kBACjCA,iBAAiB70C,UAAUmxC,uBAAyB,SAAUpd,EAAMhkB,GAClE5S,KAAKomC,SAAWpmC,KAAKm0C,YACrBn0C,KAAKwmB,EAAIigB,gBAAgBC,QAAQ9P,EAAMhkB,EAAK4T,EAAG,EAAG,KAAMxmB,MACxDA,KAAKqd,EAAIopB,gBAAgBC,QAAQ9P,EAAMhkB,EAAKyK,EAAG,EAAG,KAAMrd,MACxDA,KAAKg+C,GAAK5H,yBAAyBqB,qBAAqB7gB,EAAMhkB,EAAKorC,GAAIh+C,MACvEA,KAAKi+C,GAAKxX,gBAAgBC,QAAQ9P,EAAMhkB,EAAKorC,GAAGC,GAAI,EAAG,IAAMj+C,MAC7DA,KAAKk+C,GAAKzX,gBAAgBC,QAAQ9P,EAAMhkB,EAAKorC,GAAGE,GAAI,EAAG,IAAMl+C,MAC7DA,KAAK4S,KAAOA,EACP5S,KAAK8mC,kBAAkBnmC,QAC1BX,KAAKomC,UAAS,GAEhBpmC,KAAK+mC,cAAgB/mC,KAAK8mC,kBAAkBnmC,OAC5CX,KAAKm+C,QAAU,IAAI1R,OACnBzsC,KAAKo+C,QAAU,IAAI3R,OACnBzsC,KAAKq+C,QAAU,IAAI5R,OACnBzsC,KAAKs+C,QAAU,IAAI7R,OACnBzsC,KAAKiwC,OAAS,IAAIxD,MACtB,EACEiL,iBAAiB70C,UAAU07C,gBAAkB,SAAUJ,EAASC,EAASC,EAASznC,EAAW4lB,EAAMgiB,GACjG,IAAI7gB,EAAM6gB,GAAM,EAAK,EACjBC,EAAS7nC,EAAU3O,EAAEiC,EAAE,IAAM,EAAI0M,EAAU3O,EAAEiC,EAAE,KAAO,EAAIsyB,GAC1DkiB,EAAS9nC,EAAU3O,EAAEiC,EAAE,IAAM,EAAI0M,EAAU3O,EAAEiC,EAAE,KAAO,EAAIsyB,GAC9D2hB,EAAQpQ,UAAUn3B,EAAUpP,EAAE0C,EAAE,GAAKyzB,EAAMnB,EAAM5lB,EAAUpP,EAAE0C,EAAE,GAAKyzB,EAAMnB,EAAM5lB,EAAUpP,EAAE0C,EAAE,IAC9Fk0C,EAAQrQ,WAAWn3B,EAAUqP,EAAE/b,EAAE,IAAK0M,EAAUqP,EAAE/b,EAAE,GAAI0M,EAAUqP,EAAE/b,EAAE,IACtEk0C,EAAQrR,QAAQn2B,EAAU+J,EAAEzW,EAAIyzB,EAAMnB,GACtC4hB,EAAQrQ,UAAUn3B,EAAUqP,EAAE/b,EAAE,GAAI0M,EAAUqP,EAAE/b,EAAE,GAAI0M,EAAUqP,EAAE/b,EAAE,IACpEm0C,EAAQtQ,WAAWn3B,EAAUqP,EAAE/b,EAAE,IAAK0M,EAAUqP,EAAE/b,EAAE,GAAI0M,EAAUqP,EAAE/b,EAAE,IACtEm0C,EAAQ3Q,MAAM8Q,EAAM,EAAIC,EAASA,EAAQD,EAAM,EAAIE,EAASA,GAC5DL,EAAQtQ,UAAUn3B,EAAUqP,EAAE/b,EAAE,GAAI0M,EAAUqP,EAAE/b,EAAE,GAAI0M,EAAUqP,EAAE/b,EAAE,GACxE,EACEwtC,iBAAiB70C,UAAUkyB,KAAO,SAAU6B,EAAM7Z,EAAKyqB,EAAKmX,GAW1D,IAVA3+C,KAAK42B,KAAOA,EACZ52B,KAAK+c,IAAMA,EACX/c,KAAKwnC,IAAMA,EACXxnC,KAAK2+C,UAAYA,EACjB3+C,KAAK4+C,eAAiB,EACtB5+C,KAAK6+C,UAAY,GACjB7+C,KAAK8+C,QAAU,GACf9+C,KAAKylC,SAAU,EACfzlC,KAAKinC,6BAA6BrQ,GAClC52B,KAAKg0C,uBAAuBpd,EAAM7Z,EAAIyqB,IAC/BA,EAAM,GACXA,GAAO,EAEPxnC,KAAK6+C,UAAUE,QAAQhiC,EAAIyqB,IAEzBxnC,KAAK8mC,kBAAkBnmC,OACzBX,KAAKkB,GAAI,EAETlB,KAAKomC,UAAS,EAEpB,EACEsR,iBAAiB70C,UAAUm8C,cAAgB,SAAUC,GACnD,IAAI/2C,EACA0S,EAAMqkC,EAASt+C,OACnB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB+2C,EAAS/2C,GAAGg3C,YAAa,EACF,OAAnBD,EAAS/2C,GAAG+b,IACdjkB,KAAKg/C,cAAcC,EAAS/2C,GAAG4c,GAGvC,EACE4yB,iBAAiB70C,UAAUs8C,cAAgB,SAAUF,GACnD,IAAIG,EAAc16B,KAAKC,MAAMD,KAAKE,UAAUq6B,IAE5C,OADAj/C,KAAKg/C,cAAcI,GACZA,CACX,EACE1H,iBAAiB70C,UAAUw8C,kBAAoB,SAAUJ,EAAUK,GACjE,IAAIp3C,EACA0S,EAAMqkC,EAASt+C,OACnB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB+2C,EAAS/2C,GAAGq3C,QAAUD,EACC,OAAnBL,EAAS/2C,GAAG+b,IACdjkB,KAAKq/C,kBAAkBJ,EAAS/2C,GAAG4c,GAAIw6B,EAG/C,EACE5H,iBAAiB70C,UAAUkyC,cAAgB,SAAUnP,GACnD,IAAI4Z,EACAC,EACAv3C,EACAy1B,EACA+hB,EACAC,GAAc,EAClB,GAAI3/C,KAAKulC,MAAQK,EAAe,CAC9B,IA8DI0Z,EA9DAM,EAASvsC,KAAKwsC,KAAK7/C,KAAKwmB,EAAEtc,GAC9B,GAAIlK,KAAK8+C,QAAQn+C,OAASi/C,EAAQ,CAChC,KAAO5/C,KAAK8+C,QAAQn+C,OAASi/C,GAAQ,CACnC,IAAIE,EAAQ,CACVh7B,GAAI9kB,KAAKm/C,cAAcn/C,KAAK6+C,WAC5B56B,GAAI,MAEN67B,EAAMh7B,GAAGza,KAAK,CACZ4b,EAAG,CACDA,EAAG,EACH85B,GAAI,EACJ7+C,EAAG,CAAC,EAAG,IAET8sB,GAAI,YACJ3Q,EAAG,CACD4I,EAAG,EACH85B,GAAI,EACJ7+C,EAAG,KAELsG,EAAG,CACDye,EAAG,EACH85B,GAAI,EACJ7+C,EAAG,CAAC,EAAG,IAETyf,EAAG,CACDsF,EAAG,EACH85B,GAAI,EACJ7+C,EAAG,CAAC,CACF+G,EAAG,EACH5I,EAAG,EACH2I,EAAG,GACF,CACDC,EAAG,EACH5I,EAAG,EACH2I,EAAG,KAGPC,EAAG,CACDge,EAAG,EACH85B,GAAI,EACJ7+C,EAAG,CAAC,IAAK,MAEXilB,GAAI,CACFF,EAAG,EACH85B,GAAI,EACJ7+C,EAAG,GAELglB,GAAI,CACFD,EAAG,EACH85B,GAAI,EACJ7+C,EAAG,GAEL+iB,GAAI,OAENjkB,KAAK+c,IAAI6P,OAAO,EAAG,EAAGkzB,GACtB9/C,KAAK8+C,QAAQlyB,OAAO,EAAG,EAAGkzB,GAC1B9/C,KAAK4+C,gBAAkB,CACjC,CACQ5+C,KAAK42B,KAAKopB,eACVL,GAAc,CACtB,CAGM,IAFAD,EAAO,EAEFx3C,EAAI,EAAGA,GAAKlI,KAAK8+C,QAAQn+C,OAAS,EAAGuH,GAAK,EAAG,CAIhD,GAHAo3C,EAAaI,EAAOE,EACpB5/C,KAAK8+C,QAAQ52C,GAAGq3C,QAAUD,EAC1Bt/C,KAAKq/C,kBAAkBr/C,KAAK8+C,QAAQ52C,GAAG4c,GAAIw6B,IACtCA,EAAY,CACf,IAAIW,EAAQjgD,KAAK2+C,UAAUz2C,GAAG4c,GAC1Bo7B,EAAgBD,EAAMA,EAAMt/C,OAAS,GACJ,IAAjCu/C,EAActpC,UAAUzM,GAAGD,GAC7Bg2C,EAActpC,UAAUzM,GAAGo7B,MAAO,EAClC2a,EAActpC,UAAUzM,GAAGD,EAAI,GAE/Bg2C,EAActpC,UAAUzM,GAAGo7B,MAAO,CAE9C,CACQma,GAAQ,CAChB,CACM1/C,KAAK4+C,eAAiBgB,EAGtB,IAAI7+B,EAAS/gB,KAAKqd,EAAEnT,EAChBi2C,EAAep/B,EAAS,EACxBq/B,EAAcr/B,EAAS,EAAI1N,KAAK2K,MAAM+C,GAAU1N,KAAKwsC,KAAK9+B,GAC1Ds/B,EAASrgD,KAAKm+C,QAAQlhD,MACtBqjD,EAAStgD,KAAKo+C,QAAQnhD,MACtBsjD,EAASvgD,KAAKq+C,QAAQphD,MAC1B+C,KAAKm+C,QAAQnU,QACbhqC,KAAKo+C,QAAQpU,QACbhqC,KAAKq+C,QAAQrU,QACbhqC,KAAKs+C,QAAQtU,QACbhqC,KAAKiwC,OAAOjG,QACZ,IAuBIxmB,EACAC,EAxBA+8B,EAAY,EAChB,GAAIz/B,EAAS,EAAG,CACd,KAAOy/B,EAAYJ,GACjBpgD,KAAKu+C,gBAAgBv+C,KAAKm+C,QAASn+C,KAAKo+C,QAASp+C,KAAKq+C,QAASr+C,KAAKg+C,GAAI,GAAG,GAC3EwC,GAAa,EAEXL,IACFngD,KAAKu+C,gBAAgBv+C,KAAKm+C,QAASn+C,KAAKo+C,QAASp+C,KAAKq+C,QAASr+C,KAAKg+C,GAAImC,GAAc,GACtFK,GAAaL,EAEvB,MAAa,GAAIp/B,EAAS,EAAG,CACrB,KAAOy/B,EAAYJ,GACjBpgD,KAAKu+C,gBAAgBv+C,KAAKm+C,QAASn+C,KAAKo+C,QAASp+C,KAAKq+C,QAASr+C,KAAKg+C,GAAI,GAAG,GAC3EwC,GAAa,EAEXL,IACFngD,KAAKu+C,gBAAgBv+C,KAAKm+C,QAASn+C,KAAKo+C,QAASp+C,KAAKq+C,QAASr+C,KAAKg+C,IAAKmC,GAAc,GACvFK,GAAaL,EAEvB,CAMM,IALAj4C,EAAoB,IAAhBlI,KAAK4S,KAAKk7B,EAAU,EAAI9tC,KAAK4+C,eAAiB,EAClDjhB,EAAsB,IAAhB39B,KAAK4S,KAAKk7B,EAAU,GAAI,EAC9B4R,EAAO1/C,KAAK4+C,eAGLc,GAAM,CAOX,GAJAj8B,GADAg8B,GADAD,EAAQx/C,KAAK2+C,UAAUz2C,GAAG4c,IACH06B,EAAM7+C,OAAS,GAAGiW,UAAU6pC,OAAOv2C,EAAEjN,OACtC0D,OACtB6+C,EAAMA,EAAM7+C,OAAS,GAAGiW,UAAU6pC,OAAOlb,MAAO,EAChDia,EAAMA,EAAM7+C,OAAS,GAAGiW,UAAUzM,GAAGo7B,MAAO,EAC5Cia,EAAMA,EAAM7+C,OAAS,GAAGiW,UAAUzM,GAAGD,EAA4B,IAAxBlK,KAAK4+C,eAAuB5+C,KAAKi+C,GAAG/zC,EAAIlK,KAAKi+C,GAAG/zC,GAAKlK,KAAKk+C,GAAGh0C,EAAIlK,KAAKi+C,GAAG/zC,IAAMhC,GAAKlI,KAAK4+C,eAAiB,IACjI,IAAd4B,EAAiB,CAOnB,KANU,IAANt4C,GAAmB,IAARy1B,GAAaz1B,IAAMlI,KAAK4+C,eAAiB,QAAKjhB,IAC3D39B,KAAKu+C,gBAAgBv+C,KAAKm+C,QAASn+C,KAAKo+C,QAASp+C,KAAKq+C,QAASr+C,KAAKg+C,GAAI,GAAG,GAE7Eh+C,KAAKiwC,OAAOr5B,UAAU0pC,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,KACvMtgD,KAAKiwC,OAAOr5B,UAAU2pC,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,KACvMvgD,KAAKiwC,OAAOr5B,UAAUypC,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,KAClM78B,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBi8B,EAAej8B,GAAKxjB,KAAKiwC,OAAOhzC,MAAMumB,GAExCxjB,KAAKiwC,OAAOjG,OACtB,MAEU,IADAhqC,KAAKiwC,OAAOjG,QACPxmB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBi8B,EAAej8B,GAAKxjB,KAAKiwC,OAAOhzC,MAAMumB,GAG1Cg9B,GAAa,EACbd,GAAQ,EACRx3C,GAAKy1B,CACb,CACA,MAIM,IAHA+hB,EAAO1/C,KAAK4+C,eACZ12C,EAAI,EACJy1B,EAAM,EACC+hB,GAELD,GADAD,EAAQx/C,KAAK2+C,UAAUz2C,GAAG4c,IACH06B,EAAM7+C,OAAS,GAAGiW,UAAU6pC,OAAOv2C,EAAEjN,MAC5DuiD,EAAMA,EAAM7+C,OAAS,GAAGiW,UAAU6pC,OAAOlb,MAAO,EAChDia,EAAMA,EAAM7+C,OAAS,GAAGiW,UAAUzM,GAAGo7B,MAAO,EAC5Cma,GAAQ,EACRx3C,GAAKy1B,EAGT,OAAOgiB,CACX,EACEjI,iBAAiB70C,UAAU+lC,SAAW,WAAY,EAGlDpuB,gBAAgB,CAACq5B,eAAgB8D,sBACjCA,qBAAqB90C,UAAUmxC,uBAAyB,SAAUpd,EAAMhkB,GACtE5S,KAAKomC,SAAWpmC,KAAKm0C,YACrBn0C,KAAK0gD,GAAKja,gBAAgBC,QAAQ9P,EAAMhkB,EAAK+N,EAAG,EAAG,KAAM3gB,MACzDA,KAAK+mC,cAAgB/mC,KAAK0gD,GAAGhb,gBAAgB/kC,MACjD,EACEg3C,qBAAqB90C,UAAUmzC,YAAc,SAAUrzB,EAAMrP,GAC3D,IAEIpL,EAFAiuC,EAAa7N,UAAUtN,aAC3Bmb,EAAW3vB,EAAI7D,EAAK6D,EAEpB,IACIm6B,EACAC,EACAC,EACAC,EACAC,EACAC,EAEAtZ,EACAC,EACAC,EACAC,EACAC,EACAC,EAbAntB,EAAM+H,EAAKkY,QAOX9E,EAAQ,EAOZ,IAAK7tB,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBy4C,EAAWh+B,EAAKzY,EAAEhC,GAClB24C,EAAWl+B,EAAKtF,EAAEnV,GAClB04C,EAAWj+B,EAAKza,EAAEA,GACdy4C,EAAS,KAAOE,EAAS,IAAMF,EAAS,KAAOE,EAAS,IAAMF,EAAS,KAAOC,EAAS,IAAMD,EAAS,KAAOC,EAAS,GAC7G,IAAN14C,GAAWA,IAAM0S,EAAM,GAAO+H,EAAK6D,GAQpCs6B,EADQ,IAAN54C,EACQya,EAAKzY,EAAE0Q,EAAM,GAEb+H,EAAKzY,EAAEhC,EAAI,GAGvB84C,GADAD,EAAW1tC,KAAKyK,KAAKzK,KAAKuK,IAAI+iC,EAAS,GAAKG,EAAQ,GAAI,GAAKztC,KAAKuK,IAAI+iC,EAAS,GAAKG,EAAQ,GAAI,KACxEztC,KAAK+K,IAAI2iC,EAAW,EAAGztC,GAASytC,EAAW,EAEnErZ,EADAI,EAAK6Y,EAAS,IAAMG,EAAQ,GAAKH,EAAS,IAAMK,EAGhDrZ,EADAI,EAAK4Y,EAAS,IAAMA,EAAS,GAAKG,EAAQ,IAAME,EAEhDpZ,EAAKF,GAAMA,EAAKiZ,EAAS,IAAM7hC,YAC/B+oB,EAAKF,GAAMA,EAAKgZ,EAAS,IAAM7hC,YAC/Bq3B,EAAW1O,YAAYC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIhS,GAC/CA,GAAS,EAEP+qB,EADE54C,IAAM0S,EAAM,EACJ+H,EAAKzY,EAAE,GAEPyY,EAAKzY,EAAEhC,EAAI,GAGvB84C,GADAD,EAAW1tC,KAAKyK,KAAKzK,KAAKuK,IAAI+iC,EAAS,GAAKG,EAAQ,GAAI,GAAKztC,KAAKuK,IAAI+iC,EAAS,GAAKG,EAAQ,GAAI,KACxEztC,KAAK+K,IAAI2iC,EAAW,EAAGztC,GAASytC,EAAW,EAEnErZ,EADAE,EAAK+Y,EAAS,IAAMG,EAAQ,GAAKH,EAAS,IAAMK,EAGhDrZ,EADAE,EAAK8Y,EAAS,IAAMG,EAAQ,GAAKH,EAAS,IAAMK,EAEhDlZ,EAAKJ,GAAMA,EAAKiZ,EAAS,IAAM7hC,YAC/BipB,EAAKJ,GAAMA,EAAKgZ,EAAS,IAAM7hC,YAC/Bq3B,EAAW1O,YAAYC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIhS,GAC/CA,GAAS,IAnCTogB,EAAW1O,YAAYkZ,EAAS,GAAIA,EAAS,GAAIE,EAAS,GAAIA,EAAS,GAAID,EAAS,GAAIA,EAAS,GAAI7qB,GAIrGA,GAAS,IAkCXogB,EAAW1O,YAAY9kB,EAAKzY,EAAEhC,GAAG,GAAIya,EAAKzY,EAAEhC,GAAG,GAAIya,EAAKtF,EAAEnV,GAAG,GAAIya,EAAKtF,EAAEnV,GAAG,GAAIya,EAAKza,EAAEA,GAAG,GAAIya,EAAKza,EAAEA,GAAG,GAAI6tB,GAC3GA,GAAS,GAGb,OAAOogB,CACX,EACEwB,qBAAqB90C,UAAUkyC,cAAgB,SAAUnP,GACvD,IAAIoP,EACA9sC,EAEAsb,EACAC,EAGEqa,EACA6L,EANF/uB,EAAM5a,KAAKqkB,OAAO1jB,OAGlB+/C,EAAK1gD,KAAK0gD,GAAGx2C,EACjB,GAAW,IAAPw2C,EAGF,IAAKx4C,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAAG,CAG3B,GADAyhC,GADA7L,EAAY99B,KAAKqkB,OAAOnc,IACSyhC,qBAC1B7L,EAAU2K,MAAMlD,MAASvlC,KAAKulC,MAASK,EAK5C,IAJA+D,EAAqBd,gBACrB/K,EAAU2K,MAAMlD,MAAO,EACvByP,EAAalX,EAAU2K,MAAMiB,MAAMrlB,OACnCZ,EAAOqa,EAAU2K,MAAMiB,MAAM7O,QACxBrX,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBmmB,EAAqBf,SAAS5oC,KAAKg2C,YAAYhB,EAAWxxB,GAAIk9B,IAGlE5iB,EAAU2K,MAAMiB,MAAQ5L,EAAU6L,oBAC1C,CAES3pC,KAAK8mC,kBAAkBnmC,SAC1BX,KAAKulC,MAAO,EAElB,EAgDE+S,iBAAiBz1C,UAAU85B,MAAQ,SAAU30B,GAC3C,MAAO,GAAGhI,KAAKimB,EAAE,GAAKje,EAAIhI,KAAKqH,EAAE,IAAMW,EAAIhI,KAAKwmB,EAAE,IAAMxe,EAAIhI,KAAKoH,EAAE,KAAMpH,KAAKimB,EAAE,GAAKje,EAAIhI,KAAKqH,EAAE,IAAMW,EAAIhI,KAAKwmB,EAAE,IAAMxe,EAAIhI,KAAKoH,EAAE,GACtI,EACEkxC,iBAAiBz1C,UAAUo+C,WAAa,SAAUj5C,GAChD,MAAO,EAAE,EAAIA,EAAIhI,KAAKimB,EAAE,GAAK,EAAIjmB,KAAKqH,EAAE,IAAMW,EAAIhI,KAAKwmB,EAAE,IAAK,EAAIxe,EAAIhI,KAAKimB,EAAE,GAAK,EAAIjmB,KAAKqH,EAAE,IAAMW,EAAIhI,KAAKwmB,EAAE,GAClH,EACE8xB,iBAAiBz1C,UAAU+5C,aAAe,SAAU50C,GAClD,IAAIR,EAAIxH,KAAKihD,WAAWj5C,GACxB,OAAOqL,KAAK8wB,MAAM38B,EAAE,GAAIA,EAAE,GAC9B,EACE8wC,iBAAiBz1C,UAAUk5C,YAAc,SAAU/zC,GACjD,IAAIR,EAAIxH,KAAKihD,WAAWj5C,GACxB,OAAOqL,KAAK8wB,MAAM38B,EAAE,GAAIA,EAAE,GAC9B,EACE8wC,iBAAiBz1C,UAAU06C,iBAAmB,WAC5C,IAAI2D,EAAQlhD,KAAKimB,EAAE,GAAKjmB,KAAKqH,EAAE,GAAKrH,KAAKimB,EAAE,GAAKjmB,KAAKqH,EAAE,GACvD,GAAIwwC,UAAUqJ,GAAQ,MAAO,GAC7B,IAAIC,GAAQ,IAAQnhD,KAAKimB,EAAE,GAAKjmB,KAAKwmB,EAAE,GAAKxmB,KAAKimB,EAAE,GAAKjmB,KAAKwmB,EAAE,IAAM06B,EACjEE,EAASD,EAAQA,EAAQ,EAAI,GAAKnhD,KAAKqH,EAAE,GAAKrH,KAAKwmB,EAAE,GAAKxmB,KAAKqH,EAAE,GAAKrH,KAAKwmB,EAAE,IAAM06B,EACvF,GAAIE,EAAS,EAAG,MAAO,GACvB,IAAIC,EAAOhuC,KAAKyK,KAAKsjC,GACrB,OAAIvJ,UAAUwJ,GACRA,EAAO,GAAKA,EAAO,EAAU,CAACF,GAC3B,GAEF,CAACA,EAAQE,EAAMF,EAAQE,GAAMpgD,OAAO,SAAU0f,GACnD,OAAOA,EAAI,GAAKA,EAAI,CAC1B,EACA,EACE23B,iBAAiBz1C,UAAU4U,MAAQ,SAAUzP,GAC3C,GAAIA,GAAK,EAAG,MAAO,CAACqwC,YAAYr4C,KAAK64B,OAAO,IAAK74B,MACjD,GAAIgI,GAAK,EAAG,MAAO,CAAChI,KAAMq4C,YAAYr4C,KAAK64B,OAAO74B,KAAK64B,OAAOl4B,OAAS,KACvE,IAAI2gD,EAAMvJ,UAAU/3C,KAAK64B,OAAO,GAAI74B,KAAK64B,OAAO,GAAI7wB,GAChDu5C,EAAMxJ,UAAU/3C,KAAK64B,OAAO,GAAI74B,KAAK64B,OAAO,GAAI7wB,GAChDwpC,EAAMuG,UAAU/3C,KAAK64B,OAAO,GAAI74B,KAAK64B,OAAO,GAAI7wB,GAChDw5C,EAAMzJ,UAAUuJ,EAAKC,EAAKv5C,GAC1By5C,EAAM1J,UAAUwJ,EAAK/P,EAAKxpC,GAC1BowC,EAAKL,UAAUyJ,EAAKC,EAAKz5C,GAC7B,MAAO,CAAC,IAAIswC,iBAAiBt4C,KAAK64B,OAAO,GAAIyoB,EAAKE,EAAKpJ,GAAI,GAAO,IAAIE,iBAAiBF,EAAIqJ,EAAKjQ,EAAKxxC,KAAK64B,OAAO,IAAI,GACzH,EAsBEyf,iBAAiBz1C,UAAU6+C,OAAS,WAClC,MAAO,CACL1iD,EAAG25C,QAAQ34C,KAAM,GACjBwJ,EAAGmvC,QAAQ34C,KAAM,GAEvB,EACEs4C,iBAAiBz1C,UAAUk2C,YAAc,WACvC,IAAI2I,EAAS1hD,KAAK0hD,SAClB,MAAO,CACLj8C,KAAMi8C,EAAO1iD,EAAEof,IACfzY,MAAO+7C,EAAO1iD,EAAEkf,IAChB7Y,IAAKq8C,EAAOl4C,EAAE4U,IACd7Y,OAAQm8C,EAAOl4C,EAAE0U,IACjBhZ,MAAOw8C,EAAO1iD,EAAEkf,IAAMwjC,EAAO1iD,EAAEof,IAC/BjZ,OAAQu8C,EAAOl4C,EAAE0U,IAAMwjC,EAAOl4C,EAAE4U,IAChC46B,IAAK0I,EAAO1iD,EAAEkf,IAAMwjC,EAAO1iD,EAAEof,KAAO,EACpC66B,IAAKyI,EAAOl4C,EAAE0U,IAAMwjC,EAAOl4C,EAAE4U,KAAO,EAE1C,EAkCEk6B,iBAAiBz1C,UAAU02C,cAAgB,SAAUoI,EAAOrI,EAAWE,QACnDnzC,IAAdizC,IAAyBA,EAAY,QACpBjzC,IAAjBmzC,IAA4BA,EAAe,GAC/C,IAAID,EAAgB,GAEpB,OADAH,eAAeR,cAAc54C,KAAM,EAAG,GAAI44C,cAAc+I,EAAO,EAAG,GAAI,EAAGrI,EAAWC,EAAeC,GAC5FD,CACX,EACEjB,iBAAiB1C,aAAe,SAAUrN,EAAWxS,GACnD,IAAIqlB,GAAarlB,EAAQ,GAAKwS,EAAU5nC,SACxC,OAAO,IAAI23C,iBAAiB/P,EAAUr+B,EAAE6rB,GAAQwS,EAAUlrB,EAAE0Y,GAAQwS,EAAUrgC,EAAEkzC,GAAY7S,EAAUr+B,EAAEkxC,IAAY,EACxH,EACE9C,iBAAiBsJ,qBAAuB,SAAUrZ,EAAWxS,GAC3D,IAAIqlB,GAAarlB,EAAQ,GAAKwS,EAAU5nC,SACxC,OAAO,IAAI23C,iBAAiB/P,EAAUr+B,EAAEkxC,GAAY7S,EAAUrgC,EAAEkzC,GAAY7S,EAAUlrB,EAAE0Y,GAAQwS,EAAUr+B,EAAE6rB,IAAQ,EACxH,EAwBEvb,gBAAgB,CAACq5B,eAAgByG,gBACjCA,eAAez3C,UAAUmxC,uBAAyB,SAAUpd,EAAMhkB,GAChE5S,KAAKomC,SAAWpmC,KAAKm0C,YACrBn0C,KAAKy6C,UAAYhU,gBAAgBC,QAAQ9P,EAAMhkB,EAAK3K,EAAG,EAAG,KAAMjI,MAChEA,KAAKu7C,UAAY9U,gBAAgBC,QAAQ9P,EAAMhkB,EAAK+N,EAAG,EAAG,KAAM3gB,MAChEA,KAAK6hD,WAAapb,gBAAgBC,QAAQ9P,EAAMhkB,EAAKmR,GAAI,EAAG,KAAM/jB,MAClEA,KAAK+mC,YAAwD,IAA1C/mC,KAAKy6C,UAAU/U,gBAAgB/kC,QAA0D,IAA1CX,KAAKu7C,UAAU7V,gBAAgB/kC,QAA2D,IAA3CX,KAAK6hD,WAAWnc,gBAAgB/kC,MACrJ,EA0CE25C,eAAez3C,UAAUmzC,YAAc,SAAUrzB,EAAM83B,EAAWc,EAAWC,GAC3E,IAAIsG,EAAQn/B,EAAKkY,QACbsb,EAAa7N,UAAUtN,aAK3B,GAJAmb,EAAW3vB,EAAI7D,EAAK6D,EACf7D,EAAK6D,IACRs7B,GAAS,GAEG,IAAVA,EAAa,OAAO3L,EACxB,IAAIx2B,GAAY,EACZsS,EAAUqmB,iBAAiB1C,aAAajzB,EAAM,GAClD24B,aAAanF,EAAYxzB,EAAM,EAAG83B,EAAWc,EAAWC,EAAW77B,GACnE,IAAK,IAAIzX,EAAI,EAAGA,EAAI45C,EAAO55C,GAAK,EAC9ByX,EAAYk8B,cAAc1F,EAAYlkB,EAASwoB,EAAWc,EAAWC,GAAY77B,GAI/EsS,EAHE/pB,IAAM45C,EAAQ,GAAMn/B,EAAK6D,EAGjB8xB,iBAAiB1C,aAAajzB,GAAOza,EAAI,GAAK45C,GAF9C,KAIZxG,aAAanF,EAAYxzB,EAAMza,EAAI,EAAGuyC,EAAWc,EAAWC,EAAW77B,GAEzE,OAAOw2B,CACX,EACEmE,eAAez3C,UAAUkyC,cAAgB,SAAUnP,GACjD,IAAIoP,EACA9sC,EAEAsb,EACAC,EAKEqa,EACA6L,EARF/uB,EAAM5a,KAAKqkB,OAAO1jB,OAGlB85C,EAAYz6C,KAAKy6C,UAAUvwC,EAC3BqxC,EAAYloC,KAAK6K,IAAI,EAAG7K,KAAKC,MAAMtT,KAAKu7C,UAAUrxC,IAClDsxC,EAAYx7C,KAAK6hD,WAAW33C,EAChC,GAAkB,IAAduwC,EAGF,IAAKvyC,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAAG,CAG3B,GADAyhC,GADA7L,EAAY99B,KAAKqkB,OAAOnc,IACSyhC,qBAC1B7L,EAAU2K,MAAMlD,MAASvlC,KAAKulC,MAASK,EAK5C,IAJA+D,EAAqBd,gBACrB/K,EAAU2K,MAAMlD,MAAO,EACvByP,EAAalX,EAAU2K,MAAMiB,MAAMrlB,OACnCZ,EAAOqa,EAAU2K,MAAMiB,MAAM7O,QACxBrX,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBmmB,EAAqBf,SAAS5oC,KAAKg2C,YAAYhB,EAAWxxB,GAAIi3B,EAAWc,EAAWC,IAGxF1d,EAAU2K,MAAMiB,MAAQ5L,EAAU6L,oBAC1C,CAES3pC,KAAK8mC,kBAAkBnmC,SAC1BX,KAAKulC,MAAO,EAElB,EAgIE/qB,gBAAgB,CAACq5B,eAAgB2J,oBACjCA,mBAAmB36C,UAAUmxC,uBAAyB,SAAUpd,EAAMhkB,GACpE5S,KAAKomC,SAAWpmC,KAAKm0C,YACrBn0C,KAAK+1C,OAAStP,gBAAgBC,QAAQ9P,EAAMhkB,EAAKqT,EAAG,EAAG,KAAMjmB,MAC7DA,KAAK08C,WAAajW,gBAAgBC,QAAQ9P,EAAMhkB,EAAKmvC,GAAI,EAAG,KAAM/hD,MAClEA,KAAKy8C,SAAW7pC,EAAKovC,GACrBhiD,KAAK+mC,YAAqD,IAAvC/mC,KAAK+1C,OAAOrQ,gBAAgB/kC,MACnD,EACE68C,mBAAmB36C,UAAUmzC,YAAc,SAAUiM,EAAalM,EAAQ0G,EAAUC,GAClF,IAAIlC,EAAelS,UAAUtN,aAC7Bwf,EAAah0B,EAAIy7B,EAAYz7B,EAC7B,IAIIte,EACAsb,EACAyO,EANA6vB,EAAQG,EAAYthD,SACnBshD,EAAYz7B,IACfs7B,GAAS,GAKX,IAAII,EAAgB,GACpB,IAAKh6C,EAAI,EAAGA,EAAI45C,EAAO55C,GAAK,EAC1B+pB,EAAUqmB,iBAAiB1C,aAAaqM,EAAa/5C,GACrDg6C,EAAc73C,KAAKgzC,mBAAmBprB,EAAS8jB,IAEjD,IAAKkM,EAAYz7B,EACf,IAAKte,EAAI45C,EAAQ,EAAG55C,GAAK,EAAGA,GAAK,EAC/B+pB,EAAUqmB,iBAAiBsJ,qBAAqBK,EAAa/5C,GAC7Dg6C,EAAc73C,KAAKgzC,mBAAmBprB,EAAS8jB,IAGnDmM,EAAgB9E,mBAAmB8E,GAGnC,IAAItlB,EAAY,KACZulB,EAAU,KACd,IAAKj6C,EAAI,EAAGA,EAAIg6C,EAAcvhD,OAAQuH,GAAK,EAAG,CAC5C,IAAIk6C,EAAeF,EAAch6C,GAGjC,IAFIi6C,IAASvlB,EAAY0f,UAAU9B,EAAc2H,EAASC,EAAa,GAAI3F,EAAUC,IACrFyF,EAAUC,EAAaA,EAAazhD,OAAS,GACxC6iB,EAAI,EAAGA,EAAI4+B,EAAazhD,OAAQ6iB,GAAK,EACxCyO,EAAUmwB,EAAa5+B,GACnBoZ,GAAa4b,WAAWvmB,EAAQ4G,OAAO,GAAI+D,GAC7C4d,EAAajT,QAAQtV,EAAQ4G,OAAO,GAAG,GAAI5G,EAAQ4G,OAAO,GAAG,GAAI,IAAK2hB,EAAa75C,SAAW,GAE9F65C,EAAa/S,YAAYxV,EAAQ4G,OAAO,GAAG,GAAI5G,EAAQ4G,OAAO,GAAG,GAAI5G,EAAQ4G,OAAO,GAAG,GAAI5G,EAAQ4G,OAAO,GAAG,GAAI5G,EAAQ4G,OAAO,GAAG,GAAI5G,EAAQ4G,OAAO,GAAG,GAAI2hB,EAAa75C,UAE5K65C,EAAa/S,YAAYxV,EAAQ4G,OAAO,GAAG,GAAI5G,EAAQ4G,OAAO,GAAG,GAAI5G,EAAQ4G,OAAO,GAAG,GAAI5G,EAAQ4G,OAAO,GAAG,GAAI5G,EAAQ4G,OAAO,GAAG,GAAI5G,EAAQ4G,OAAO,GAAG,GAAI2hB,EAAa75C,UAC1Ki8B,EAAY3K,EAAQ4G,OAAO,EAEnC,CAEI,OADIqpB,EAAcvhD,QAAQ27C,UAAU9B,EAAc2H,EAASD,EAAc,GAAG,GAAIzF,EAAUC,GACnFlC,CACX,EACEgD,mBAAmB36C,UAAUkyC,cAAgB,SAAUnP,GACrD,IAAIoP,EACA9sC,EAEAsb,EACAC,EAKEqa,EACA6L,EARF/uB,EAAM5a,KAAKqkB,OAAO1jB,OAGlBo1C,EAAS/1C,KAAK+1C,OAAO7rC,EACrBwyC,EAAa18C,KAAK08C,WAAWxyC,EAC7BuyC,EAAWz8C,KAAKy8C,SACpB,GAAe,IAAX1G,EAGF,IAAK7tC,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAAG,CAG3B,GADAyhC,GADA7L,EAAY99B,KAAKqkB,OAAOnc,IACSyhC,qBAC1B7L,EAAU2K,MAAMlD,MAASvlC,KAAKulC,MAASK,EAK5C,IAJA+D,EAAqBd,gBACrB/K,EAAU2K,MAAMlD,MAAO,EACvByP,EAAalX,EAAU2K,MAAMiB,MAAMrlB,OACnCZ,EAAOqa,EAAU2K,MAAMiB,MAAM7O,QACxBrX,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBmmB,EAAqBf,SAAS5oC,KAAKg2C,YAAYhB,EAAWxxB,GAAIuyB,EAAQ0G,EAAUC,IAGpF5e,EAAU2K,MAAMiB,MAAQ5L,EAAU6L,oBAC1C,CAES3pC,KAAK8mC,kBAAkBnmC,SAC1BX,KAAKulC,MAAO,EAElB,EAyCE,IAAI8c,YAAc,WAChB,IACIC,EAAY,CACdC,EAAG,EACHC,KAAM,EACNn+B,OAAQ,GACRzR,KAAM,CACJyR,OAAQ,KAGRo+B,EAAqB,GAEzBA,EAAqBA,EAAmB59C,OAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAChP,IAAI69C,EAAwB,OAQxBC,EAAqB,CAAC,WAAY,WAAY,WAAY,WAAY,YAa1E,SAASC,EAAUC,EAAMC,GACvB,IAAIC,EAAaxoC,UAAU,QAE3BwoC,EAAWvrB,aAAa,eAAe,GACvCurB,EAAWx+C,MAAMqJ,WAAak1C,EAC9B,IAAItgD,EAAO+X,UAAU,QAErB/X,EAAKi1B,UAAY,iBAEjBsrB,EAAWx+C,MAAM0B,SAAW,WAC5B88C,EAAWx+C,MAAMkB,KAAO,WACxBs9C,EAAWx+C,MAAMc,IAAM,WAEvB09C,EAAWx+C,MAAMwI,SAAW,QAE5Bg2C,EAAWx+C,MAAMy+C,YAAc,SAC/BD,EAAWx+C,MAAM0I,UAAY,SAC7B81C,EAAWx+C,MAAMyI,WAAa,SAC9B+1C,EAAWx+C,MAAM0+C,cAAgB,IACjCF,EAAW9yC,YAAYzN,GACvBoN,SAAStG,KAAK2G,YAAY8yC,GAG1B,IAAI79C,EAAQ1C,EAAK0gD,YAEjB,OADA1gD,EAAK+B,MAAMqJ,WApCb,SAAyBi1C,GACvB,IACI36C,EADAi7C,EAAcN,EAAKprC,MAAM,KAEzBmD,EAAMuoC,EAAYxiD,OAClByiD,EAAkB,GACtB,IAAKl7C,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACD,eAAnBi7C,EAAYj7C,IAA0C,cAAnBi7C,EAAYj7C,IACjDk7C,EAAgB/4C,KAAK84C,EAAYj7C,IAGrC,OAAOk7C,EAAgBjiD,KAAK,IAClC,CAyB8BkiD,CAAgBR,GAAQ,KAAOC,EAChD,CACLtgD,KAAMA,EACN+/C,EAAGr9C,EACHo+C,OAAQP,EAEhB,CAsCI,SAASQ,EAAa7F,EAAU8F,GAC9B,IACIC,EADAC,EAAS9zC,SAAStG,MAAQk6C,EAAM,MAAQ,SAExCG,EAAYlG,kBAAkBC,GAClC,GAAe,QAAXgG,EAAkB,CACpB,IAAIE,EAAU5hC,SAAS,QACvB4hC,EAAQr/C,MAAMwI,SAAW,QAEzB62C,EAAQpsB,aAAa,cAAekmB,EAASmG,SAC7CD,EAAQpsB,aAAa,aAAcmsB,EAAUp/C,OAC7Cq/C,EAAQpsB,aAAa,cAAemsB,EAAU5F,QAC9C6F,EAAQE,YAAc,IAClBpG,EAASqG,QACXH,EAAQr/C,MAAMqJ,WAAa,UAC3Bg2C,EAAQpsB,aAAa,QAASkmB,EAASqG,SAEvCH,EAAQr/C,MAAMqJ,WAAa8vC,EAASmG,QAEtCL,EAAIvzC,YAAY2zC,GAChBH,EAASG,CACjB,KAAa,CACL,IAAII,EAAgB,IAAIC,gBAAgB,IAAK,KAAK16B,WAAW,MAC7Dy6B,EAAcnB,KAAOc,EAAUp/C,MAAQ,IAAMo/C,EAAU5F,OAAS,UAAYL,EAASmG,QACrFJ,EAASO,CACjB,CAQM,MAAO,CACLE,YARF,SAAiBv3C,GACf,MAAe,QAAX+2C,GACFD,EAAOK,YAAcn3C,EACd82C,EAAOU,yBAETV,EAAOS,YAAYv3C,GAAMzH,KACxC,EAIA,CAqKI,SAASk/C,EAAaC,GACpB,IAAIC,EAAY,EACZptB,EAAQmtB,EAAOE,WAAW,GAC9B,GAAIrtB,GAAS,OAAUA,GAAS,MAAQ,CACtC,IAAIstB,EAASH,EAAOE,WAAW,GAC3BC,GAAU,OAAUA,GAAU,QAChCF,EAA+B,MAAlBptB,EAAQ,OAAkBstB,EAAS,MAAS,MAEnE,CACM,OAAOF,CACb,CAqBI,SAASG,EAAeJ,GACtB,IAAIC,EAAYF,EAAaC,GAC7B,OAAIC,GA5TgC,QA4TgBA,GA3ThB,MA+T1C,CAkCI,IAAII,EAAO,WACT1kD,KAAK2xB,MAAQ,GACb3xB,KAAK4lB,MAAQ,KACb5lB,KAAK2kD,cAAgB,EACrB3kD,KAAK2uB,UAAW,EAChB3uB,KAAK4kD,SAAU,EACf5kD,KAAKm2B,SAAW0uB,KAAKC,MACrB9kD,KAAK+kD,kBAAoB/kD,KAAKglD,YAAY5hD,KAAKpD,MAC/CA,KAAKilD,uBAAyBjlD,KAAKklD,iBAAiB9hD,KAAKpD,KAC/D,EACI0kD,EAAKS,WApEL,SAAoBC,EAAeC,GACjC,IAAIC,EAAMF,EAAc9jC,SAAS,IAAM+jC,EAAe/jC,SAAS,IAC/D,OAA2C,IAApCqhC,EAAmBp7B,QAAQ+9B,EACxC,EAkEIZ,EAAKa,kBAjEL,SAA2BC,GACzB,OA9SiC,OA8S1BA,CACb,EAgEId,EAAKe,YA1CL,SAAqBpB,GACnB,OAAOI,EAAeJ,EAAOpzB,OAAO,EAAG,KAAOwzB,EAAeJ,EAAOpzB,OAAO,EAAG,GACpF,EAyCIyzB,EAAKD,eAAiBA,EACtBC,EAAKgB,oBAzCL,SAA6BC,GAC3B,OAA8C,IAAvClD,EAAmBl7B,QAAQo+B,EACxC,EAwCIjB,EAAKkB,eAnCL,SAAwBj5C,EAAMopB,GAC5B,IAAIuuB,EAAYF,EAAaz3C,EAAKskB,OAAO8E,EAAO,IAChD,GAAIuuB,IAAc5B,EAChB,OAAO,EAET,IAAIZ,EAAQ,EAEZ,IADA/rB,GAAS,EACF+rB,EAAQ,GAAG,CAEhB,IADAwC,EAAYF,EAAaz3C,EAAKskB,OAAO8E,EAAO,KA1VzB,QA2ViBuuB,EA1VjB,OA2VjB,OAAO,EAETxC,GAAS,EACT/rB,GAAS,CACjB,CACM,OAlW0B,SAkWnBquB,EAAaz3C,EAAKskB,OAAO8E,EAAO,GAC7C,EAoBI2uB,EAAKmB,oBA/DL,SAA6BL,GAC3B,OAtTqC,QAsT9BA,CACb,EA8DId,EAAKhC,sBAAwBA,EAC7B,IAAIoD,EAAgB,CAClBj0B,SAjKF,SAAkBjM,GAChB,GAAKA,EAAL,CAMA,IAAI1d,EAHClI,KAAK4lB,QACR5lB,KAAK4lB,MAAQ,IAGf,IACIpC,EAEAuiC,EAHAnrC,EAAMgL,EAAMjlB,OAEZ8iB,EAAOzjB,KAAK4lB,MAAMjlB,OAEtB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAAG,CAG3B,IAFAsb,EAAI,EACJuiC,GAAQ,EACDviC,EAAIC,GACLzjB,KAAK4lB,MAAMpC,GAAGjf,QAAUqhB,EAAM1d,GAAG3D,OAASvE,KAAK4lB,MAAMpC,GAAGqgC,UAAYj+B,EAAM1d,GAAG27C,SAAW7jD,KAAK4lB,MAAMpC,GAAGwiC,KAAOpgC,EAAM1d,GAAG89C,KACxHD,GAAQ,GAEVviC,GAAK,EAEFuiC,IACH/lD,KAAK4lB,MAAMvb,KAAKub,EAAM1d,IACtBub,GAAQ,EAElB,CAtBA,CAuBA,EAwIMqO,SA/PF,SAAkB4rB,EAAUhtB,GAC1B,GAAKgtB,EAAL,CAIA,GAAI19C,KAAK4lB,MAGP,OAFA5lB,KAAK2uB,UAAW,OAChB3uB,KAAK2xB,MAAQ+rB,EAASuI,MAGxB,IAAKr2C,SAAStG,KAOZ,OANAtJ,KAAK2uB,UAAW,EAChB+uB,EAASuI,KAAKC,QAAQ,SAAUtzC,GAC9BA,EAAK6wC,OAASF,EAAa3wC,GAC3BA,EAAKuzC,MAAQ,CAAA,CACvB,QACQnmD,KAAK2xB,MAAQ+rB,EAASuI,MAGxB,IACI/9C,EADAk+C,EAAU1I,EAASuI,KAEnBrrC,EAAMwrC,EAAQzlD,OACd0lD,EAAgBzrC,EACpB,IAAK1S,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAAG,CAC3B,IACIo+C,EACA9iC,EAFA+iC,GAAiB,EAMrB,GAHAH,EAAQl+C,GAAGs+C,QAAS,EACpBJ,EAAQl+C,GAAGu+C,SAAW7D,EAAUwD,EAAQl+C,GAAG27C,QAAS,aACpDuC,EAAQl+C,GAAGw+C,SAAW9D,EAAUwD,EAAQl+C,GAAG27C,QAAS,cAC/CuC,EAAQl+C,GAAGy+C,OAGT,GAA2B,MAAvBP,EAAQl+C,GAAG0+C,SAAyC,IAAtBR,EAAQl+C,GAAG6gB,QAKlD,IAJAu9B,EAAiB12C,SAASi3C,iBAAiB,kCAAoCT,EAAQl+C,GAAG27C,QAAU,qCAAuCuC,EAAQl+C,GAAG27C,QAAU,OAC7IljD,OAAS,IAC1B4lD,GAAiB,GAEfA,EAAgB,CAClB,IAAIt+C,EAAIsS,UAAU,SAClBtS,EAAEuvB,aAAa,YAAa4uB,EAAQl+C,GAAG0+C,SACvC3+C,EAAEuvB,aAAa,WAAY4uB,EAAQl+C,GAAG6gB,QACtC9gB,EAAEuvB,aAAa,WAAY4uB,EAAQl+C,GAAG27C,SACtC57C,EAAEvL,KAAO,WACTuL,EAAEwvB,UAAY,4BAA8B2uB,EAAQl+C,GAAG27C,QAAU,mCAAqCuC,EAAQl+C,GAAGy+C,MAAQ,OACzHj2B,EAAKzgB,YAAYhI,EAC7B,OACe,GAA2B,MAAvBm+C,EAAQl+C,GAAG0+C,SAAyC,IAAtBR,EAAQl+C,GAAG6gB,OAAc,CAEhE,IADAu9B,EAAiB12C,SAASi3C,iBAAiB,2CACtCrjC,EAAI,EAAGA,EAAI8iC,EAAe3lD,OAAQ6iB,GAAK,OACtC8iC,EAAe9iC,GAAGnU,KAAKkY,QAAQ6+B,EAAQl+C,GAAGy+C,SAE5CJ,GAAiB,GAGrB,GAAIA,EAAgB,CAClB,IAAI1Y,EAAItzB,UAAU,QAClBszB,EAAErW,aAAa,YAAa4uB,EAAQl+C,GAAG0+C,SACvC/Y,EAAErW,aAAa,WAAY4uB,EAAQl+C,GAAG6gB,QACtC8kB,EAAEnxC,KAAO,WACTmxC,EAAE15B,IAAM,aACR05B,EAAEx+B,KAAO+2C,EAAQl+C,GAAGy+C,MACpB/2C,SAAStG,KAAK2G,YAAY49B,EACtC,CACA,MAAe,GAA2B,MAAvBuY,EAAQl+C,GAAG0+C,SAAyC,IAAtBR,EAAQl+C,GAAG6gB,OAAc,CAEhE,IADAu9B,EAAiB12C,SAASi3C,iBAAiB,+CACtCrjC,EAAI,EAAGA,EAAI8iC,EAAe3lD,OAAQ6iB,GAAK,EACtC4iC,EAAQl+C,GAAGy+C,QAAUL,EAAe9iC,GAAG1R,MAEzCy0C,GAAiB,GAGrB,GAAIA,EAAgB,CAClB,IAAIO,EAAKvsC,UAAU,QACnBusC,EAAGtvB,aAAa,YAAa4uB,EAAQl+C,GAAG0+C,SACxCE,EAAGtvB,aAAa,WAAY4uB,EAAQl+C,GAAG6gB,QACvC+9B,EAAGtvB,aAAa,MAAO,cACvBsvB,EAAGtvB,aAAa,OAAQ4uB,EAAQl+C,GAAGy+C,OACnCj2B,EAAKzgB,YAAY62C,EAC7B,CACA,OAjDUV,EAAQl+C,GAAGs+C,QAAS,EACpBH,GAAiB,EAiDnBD,EAAQl+C,GAAGu7C,OAASF,EAAa6C,EAAQl+C,GAAIwoB,GAC7C01B,EAAQl+C,GAAGi+C,MAAQ,CAAA,EACnBnmD,KAAK2xB,MAAMtnB,KAAK+7C,EAAQl+C,GAChC,CAC4B,IAAlBm+C,EACFrmD,KAAK2uB,UAAW,EAIhBmE,WAAW9yB,KAAKklD,iBAAiB9hD,KAAKpD,MAAO,IAtFrD,MAFQA,KAAK2uB,UAAW,CA0FxB,EAoKMo4B,YAxIF,SAAqBC,EAAOziD,EAAOs+C,GAGjC,IAFA,IAAI36C,EAAI,EACJ0S,EAAM5a,KAAK4lB,MAAMjlB,OACduH,EAAI0S,GAAK,CACd,GAAI5a,KAAK4lB,MAAM1d,GAAG89C,KAAOgB,GAAShnD,KAAK4lB,MAAM1d,GAAG3D,QAAUA,GAASvE,KAAK4lB,MAAM1d,GAAG27C,UAAYhB,EAC3F,OAAO7iD,KAAK4lB,MAAM1d,GAEpBA,GAAK,CACb,CAMM,OALsB,iBAAV8+C,GAA8C,KAAxBA,EAAMzC,WAAW,KAAcyC,IAAU7oD,SAAWA,QAAQiU,OAC1FpS,KAAK4kD,UACP5kD,KAAK4kD,SAAU,EACfzmD,QAAQiU,KAAK,oDAAqD40C,EAAOziD,EAAOs+C,IAE3EP,CACb,EA0HM2E,cAxGF,SAAuBrpD,GAGrB,IAFA,IAAIsK,EAAI,EACJ0S,EAAM5a,KAAK2xB,MAAMhxB,OACduH,EAAI0S,GAAK,CACd,GAAI5a,KAAK2xB,MAAMzpB,GAAGg/C,QAAUtpD,EAC1B,OAAOoC,KAAK2xB,MAAMzpB,GAEpBA,GAAK,CACb,CACM,OAAOlI,KAAK2xB,MAAM,EACxB,EA+FMuyB,YA1HF,SAAqBiD,EAAQC,EAAU5E,GACrC,IAAI9E,EAAW19C,KAAKinD,cAAcG,GAG9BrxB,EAAQoxB,EACZ,IAAKzJ,EAASyI,MAAMpwB,GAAQ,CAC1B,IAAI6tB,EAAUlG,EAAS+F,OACvB,GAAe,MAAX0D,EAAgB,CAClB,IAAIE,EAAazD,EAAQM,YAAY,IAAMiD,EAAS,KAChDG,EAAa1D,EAAQM,YAAY,MACrCxG,EAASyI,MAAMpwB,IAAUsxB,EAAaC,GAAc,GAC9D,MACU5J,EAASyI,MAAMpwB,GAAS6tB,EAAQM,YAAYiD,GAAU,GAEhE,CACM,OAAOzJ,EAASyI,MAAMpwB,GAASysB,CACrC,EA2GM0C,iBA5UF,WACE,IAAIh9C,EAEA1F,EACA+/C,EAFA3nC,EAAM5a,KAAK2xB,MAAMhxB,OAGjB4mD,EAAc3sC,EAClB,IAAK1S,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACpBlI,KAAK2xB,MAAMzpB,GAAGs+C,OAChBe,GAAe,EACoB,MAA1BvnD,KAAK2xB,MAAMzpB,GAAG0+C,SAA4C,IAAzB5mD,KAAK2xB,MAAMzpB,GAAG6gB,OACxD/oB,KAAK2xB,MAAMzpB,GAAGs+C,QAAS,GAEvBhkD,EAAOxC,KAAK2xB,MAAMzpB,GAAGu+C,SAASjkD,KAC9B+/C,EAAIviD,KAAK2xB,MAAMzpB,GAAGu+C,SAASlE,EACvB//C,EAAK0gD,cAAgBX,GACvBgF,GAAe,EACfvnD,KAAK2xB,MAAMzpB,GAAGs+C,QAAS,IAEvBhkD,EAAOxC,KAAK2xB,MAAMzpB,GAAGw+C,SAASlkD,KAC9B+/C,EAAIviD,KAAK2xB,MAAMzpB,GAAGw+C,SAASnE,EACvB//C,EAAK0gD,cAAgBX,IACvBgF,GAAe,EACfvnD,KAAK2xB,MAAMzpB,GAAGs+C,QAAS,IAGvBxmD,KAAK2xB,MAAMzpB,GAAGs+C,SAChBxmD,KAAK2xB,MAAMzpB,GAAGw+C,SAASpD,OAAOP,WAAWyE,YAAYxnD,KAAK2xB,MAAMzpB,GAAGw+C,SAASpD,QAC5EtjD,KAAK2xB,MAAMzpB,GAAGu+C,SAASnD,OAAOP,WAAWyE,YAAYxnD,KAAK2xB,MAAMzpB,GAAGu+C,SAASnD,UAI9D,IAAhBiE,GAAqB1C,KAAKC,MAAQ9kD,KAAKm2B,SA/FxB,IAgGjBrD,WAAW9yB,KAAKilD,uBAAwB,IAExCnyB,WAAW9yB,KAAK+kD,kBAAmB,GAE3C,EAySMC,YA5BF,WACEhlD,KAAK2uB,UAAW,CACtB,GA6BI,OADA+1B,EAAK7hD,UAAYijD,EACVpB,CACX,CAlZoB,GAoZlB,SAAS+C,YAAYhiC,GACnBzlB,KAAKylB,cAAgBA,CACzB,CAOE,SAASiiC,YAAYjiC,GACnB,OAAO,IAAIgiC,YAAYhiC,EAC3B,CAEE,SAASkiC,oBAAoB,CAV7BF,YAAY5kD,UAAU6jC,QAAU,SAAU9zB,GACxC,OAAI5S,KAAKylB,cAAcmiC,OAAS5nD,KAAKylB,cAAcmiC,MAAMh1C,EAAK+zB,KACrD9lC,OAAOkH,OAAO6K,EAAM5S,KAAKylB,cAAcmiC,MAAMh1C,EAAK+zB,KAAKn/B,GAEzDoL,CACX,EAME+0C,kBAAkB9kD,UAAY,CAC5BglD,eAAgB,WAEd7nD,KAAK8nD,WAAY,EAEjB9nD,KAAK+nD,QAAS,EAEd/nD,KAAKgoD,eAAgB,EAErBhoD,KAAKioD,qBAAuB,EAClC,EACIC,uBAAwB,SAAgCC,IACD,IAAjDnoD,KAAKioD,qBAAqB1gC,QAAQ4gC,IACpCnoD,KAAKioD,qBAAqB59C,KAAK89C,EAEvC,EACIC,0BAA2B,SAAmCD,IACP,IAAjDnoD,KAAKioD,qBAAqB1gC,QAAQ4gC,IACpCnoD,KAAKioD,qBAAqBr7B,OAAO5sB,KAAKioD,qBAAqB1gC,QAAQ4gC,GAAY,EAEvF,EACIE,uBAAwB,SAAgCC,GACtDtoD,KAAKuoD,iBAAiBD,EAC5B,EACIE,kBAAmB,WACbxoD,KAAKyoD,eAAeC,MAAMrrC,EAAEnT,GAAK,GAC9BlK,KAAKgoD,eAAiBhoD,KAAKywB,WAAWk4B,aAAaC,oBACtD5oD,KAAKgoD,eAAgB,EACrBhoD,KAAK21B,QAEE31B,KAAKgoD,gBACdhoD,KAAKgoD,eAAgB,EACrBhoD,KAAK41B,OAEb,EASI2yB,iBAAkB,SAA0BD,GACtCtoD,KAAK4S,KAAKkT,GAAK9lB,KAAK4S,KAAKmT,IAAMuiC,GAAOtoD,KAAK4S,KAAKzI,GAAKnK,KAAK4S,KAAKmT,GAAKuiC,GAC/C,IAAnBtoD,KAAK8nD,YACP9nD,KAAKywB,WAAW8U,MAAO,EACvBvlC,KAAKulC,MAAO,EACZvlC,KAAK8nD,WAAY,EACjB9nD,KAAK41B,SAEqB,IAAnB51B,KAAK8nD,YACd9nD,KAAKywB,WAAW8U,MAAO,EACvBvlC,KAAK8nD,WAAY,EACjB9nD,KAAK21B,OAEb,EACIkzB,iBAAkB,WAChB,IAAI3gD,EACA0S,EAAM5a,KAAKioD,qBAAqBtnD,OACpC,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAKioD,qBAAqB//C,GAAGqrB,YAAYvzB,KAAK4lC,cAItD,EACIkjB,iBAAkB,WAChB,MAAO,CACLzjD,IAAK,EACLI,KAAM,EACNP,MAAO,IACPC,OAAQ,IAEhB,EACI4jD,aAAc,WACZ,OAAqB,IAAjB/oD,KAAK4S,KAAKqR,GACL,CACLs+B,EAAGviD,KAAK4S,KAAKo2C,SAAS9jD,MACtBwb,EAAG1gB,KAAK4S,KAAKo2C,SAAS7jD,QAGnB,CACLo9C,EAAGviD,KAAK4S,KAAK1N,MACbwb,EAAG1gB,KAAK4S,KAAKzN,OAErB,GAGE,IAAI8jD,cACEC,eAAiB,CACnB,EAAG,cACH,EAAG,WACH,EAAG,SACH,EAAG,UACH,EAAG,SACH,EAAG,UACH,EAAG,cACH,EAAG,aACH,EAAG,aACH,EAAG,aACH,GAAI,aACJ,GAAI,YACJ,GAAI,MACJ,GAAI,aACJ,GAAI,QACJ,GAAI,cAEC,SAAU/kD,GACf,OAAO+kD,eAAe/kD,IAAS,EACrC,GApBQ+kD,eAuBN,SAASC,aAAav2C,EAAMgkB,EAAMvG,GAChCrwB,KAAKwH,EAAIi/B,gBAAgBC,QAAQ9P,EAAMhkB,EAAK1I,EAAG,EAAG,EAAGmmB,EACzD,CACE,SAAS+4B,YAAYx2C,EAAMgkB,EAAMvG,GAC/BrwB,KAAKwH,EAAIi/B,gBAAgBC,QAAQ9P,EAAMhkB,EAAK1I,EAAG,EAAG,EAAGmmB,EACzD,CACE,SAASg5B,YAAYz2C,EAAMgkB,EAAMvG,GAC/BrwB,KAAKwH,EAAIi/B,gBAAgBC,QAAQ9P,EAAMhkB,EAAK1I,EAAG,EAAG,EAAGmmB,EACzD,CACE,SAASi5B,YAAY12C,EAAMgkB,EAAMvG,GAC/BrwB,KAAKwH,EAAIi/B,gBAAgBC,QAAQ9P,EAAMhkB,EAAK1I,EAAG,EAAG,EAAGmmB,EACzD,CACE,SAASk5B,iBAAiB32C,EAAMgkB,EAAMvG,GACpCrwB,KAAKwH,EAAIi/B,gBAAgBC,QAAQ9P,EAAMhkB,EAAK1I,EAAG,EAAG,EAAGmmB,EACzD,CACE,SAASm5B,gBAAgB52C,EAAMgkB,EAAMvG,GACnCrwB,KAAKwH,EAAIi/B,gBAAgBC,QAAQ9P,EAAMhkB,EAAK1I,EAAG,EAAG,EAAGmmB,EACzD,CACE,SAASo5B,eAAe72C,EAAMgkB,EAAMvG,GAClCrwB,KAAKwH,EAAIi/B,gBAAgBC,QAAQ9P,EAAMhkB,EAAK1I,EAAG,EAAG,EAAGmmB,EACzD,CACE,SAASq5B,gBACP1pD,KAAKwH,EAAI,CAAA,CACb,CAEE,SAASmiD,eAAe/2C,EAAM3B,GAC5B,IAEI/I,EAFA0hD,EAAUh3C,EAAKi3C,IAAM,GACzB7pD,KAAK8pD,eAAiB,GAEtB,IACIC,EADAnvC,EAAMgvC,EAAQjpD,OAElB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB6hD,EAAa,IAAIC,YAAYJ,EAAQ1hD,GAAI+I,GACzCjR,KAAK8pD,eAAez/C,KAAK0/C,EAE/B,CACE,SAASC,YAAYp3C,EAAM3B,GACzBjR,KAAK+0B,KAAKniB,EAAM3B,EACpB,CAkDE,SAASg5C,cAAc,CAyEvB,SAASC,eAAe,CA6CxB,SAASC,eAAev3C,EAAM6d,EAAYlM,GACxCvkB,KAAKqgC,YACLrgC,KAAK6nD,iBACL7nD,KAAKkqB,UAAYuG,EAAWiF,aAAa9iB,EAAKuR,OAC9CnkB,KAAKgrB,YAAcyF,EAAW25B,YAAYz+B,SAAS3rB,KAAKkqB,WACxDlqB,KAAKqqD,aAAaz3C,EAAM6d,EAAYlM,EACxC,CAoBE,SAAS+lC,aAAa13C,EAAM6d,EAAYlM,GACtCvkB,KAAKqgC,YACLrgC,KAAK6nD,iBACL7nD,KAAKkqB,UAAYuG,EAAWiF,aAAa9iB,EAAKuR,OAC9CnkB,KAAKqqD,aAAaz3C,EAAM6d,EAAYlM,GACpCvkB,KAAKuqD,YAAa,EAClBvqD,KAAKwqD,UAAW,EAChB,IAAIzuC,EAAY/b,KAAKywB,WAAWxG,cAAcjqB,KAAKkqB,WACnDlqB,KAAKyb,MAAQzb,KAAKywB,WAAWZ,gBAAgB/T,YAAYC,GACzD/b,KAAKyqD,aAAe,EACpBzqD,KAAKywB,WAAWZ,gBAAgBrU,SAASxb,MACzCA,KAAK0qD,kBAAoB,EACzB1qD,KAAKsb,QAAU,EACftb,KAAK2qD,gBAAkB,KACvB3qD,KAAKwtB,GAAK5a,EAAK4a,GAAKiZ,gBAAgBC,QAAQ1mC,KAAM4S,EAAK4a,GAAI,EAAGiD,EAAW5B,UAAW7uB,MAAQ,CAC1F4qD,cAAc,GAEhB5qD,KAAK6qD,GAAKpkB,gBAAgBC,QAAQ1mC,KAAM4S,EAAKk4C,IAAMl4C,EAAKk4C,GAAGD,GAAKj4C,EAAKk4C,GAAGD,GAAK,CAC3E3pD,EAAG,CAAC,MACH,EAAG,IAAMlB,KAChB,CA2DE,SAAS+qD,eAAe,CAhRxBvwC,gBAAgB,CAACqsB,0BAA2BmjB,aAC5CA,YAAYnnD,UAAUujC,SAAW4jB,YAAYnnD,UAAUmkC,yBACvDgjB,YAAYnnD,UAAUkyB,KAAO,SAAUniB,EAAM3B,GAI3C,IAAI/I,EAHJlI,KAAK4S,KAAOA,EACZ5S,KAAK8pD,eAAiB,GACtB9pD,KAAKinC,6BAA6Bh2B,GAElC,IACI+5C,EADApwC,EAAM5a,KAAK4S,KAAKi3C,GAAGlpD,OAEnBipD,EAAU5pD,KAAK4S,KAAKi3C,GACxB,IAAK3hD,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAAG,CAE3B,OADA8iD,EAAM,KACEpB,EAAQ1hD,GAAG+b,IACjB,KAAK,EACH+mC,EAAM,IAAI7B,aAAaS,EAAQ1hD,GAAI+I,EAASjR,MAC5C,MACF,KAAK,EACHgrD,EAAM,IAAI5B,YAAYQ,EAAQ1hD,GAAI+I,EAASjR,MAC3C,MACF,KAAK,EACHgrD,EAAM,IAAI3B,YAAYO,EAAQ1hD,GAAI+I,EAASjR,MAC3C,MACF,KAAK,EACHgrD,EAAM,IAAI1B,YAAYM,EAAQ1hD,GAAI+I,EAASjR,MAC3C,MACF,KAAK,EACL,KAAK,EACHgrD,EAAM,IAAIvB,eAAeG,EAAQ1hD,GAAI+I,EAASjR,MAC9C,MACF,KAAK,GACHgrD,EAAM,IAAIzB,iBAAiBK,EAAQ1hD,GAAI+I,EAASjR,MAChD,MACF,KAAK,GACHgrD,EAAM,IAAIxB,gBAAgBI,EAAQ1hD,GAAI+I,EAASjR,MAC/C,MACF,KAAK,EACHgrD,EAAM,IAAIrB,eAAeC,EAAQ1hD,GAAI+I,GACrC,MAEF,QACE+5C,EAAM,IAAItB,cAAcE,EAAQ1hD,IAGhC8iD,GACFhrD,KAAK8pD,eAAez/C,KAAK2gD,EAEjC,CACA,EAGEf,YAAYpnD,UAAY,CACtBooD,WAAY,WACV,IAAKjrD,KAAK4S,KAAKgR,QACb,OAAO,EAIT,IAFA,IAAI1b,EAAI,EACJ0S,EAAM5a,KAAK4S,KAAKkR,gBAAgBnjB,OAC7BuH,EAAI0S,GAAK,CACd,GAA0C,MAAtC5a,KAAK4S,KAAKkR,gBAAgB5b,GAAG/D,OAAoD,IAApCnE,KAAK4S,KAAKkR,gBAAgB5b,GAAG0e,GAC5E,OAAO,EAET1e,GAAK,CACb,CACM,OAAO,CACb,EACI6pB,gBAAiB,WACf,IAAIvU,EAAwBoE,0BAC5B,GAAKpE,EAAL,CAGA,IAAI0tC,EAA2B1tC,EAAsB,SACjD2tC,EAA6B3tC,EAAsB,WACnD4tC,EAA2B5tC,EAAsB,SACjD6tC,EAA0B7tC,EAAsB,QAChD8tC,EAA0B9tC,EAAsB,QACpDxd,KAAKurD,eAAiBL,EAAyBlrD,MAC3CA,KAAK4S,KAAKgR,SAAW5jB,KAAKwrD,aAC5BxrD,KAAKurD,eAAeE,sBAAsBzrD,KAAKwrD,aAEjD,IAAIE,EAAmBP,EAA2BQ,uBAAuB3rD,KAAMA,KAAKurD,gBACpFvrD,KAAKurD,eAAeK,yBAAyBF,GACxB,IAAjB1rD,KAAK4S,KAAKqR,IAAYjkB,KAAK4S,KAAKsb,GAClCluB,KAAKouB,cAAgBk9B,EAAwBtrD,MACnB,IAAjBA,KAAK4S,KAAKqR,IACnBjkB,KAAKurD,eAAeM,eAAiBT,EAAyBprD,KAAK8rD,WAAY9rD,KAAK+rD,UAAW/rD,KAAKurD,gBACpGvrD,KAAKurD,eAAeS,QAAUhsD,KAAKurD,eAAeM,gBACxB,IAAjB7rD,KAAK4S,KAAKqR,KACnBjkB,KAAKurD,eAAeU,cAAgBZ,EAAwBrrD,MAC5DA,KAAKurD,eAAe5+C,KAAO3M,KAAKurD,eAAeU,cAnBvD,CAqBA,EACIC,aAAc,WACZ,IAAIC,EAAiBlD,aAAajpD,KAAK4S,KAAKw5C,KACjCpsD,KAAKqsD,aAAersD,KAAKssD,cAC/B/nD,MAAM,kBAAoB4nD,CACrC,EACI9B,aAAc,SAAsBz3C,EAAM6d,EAAYlM,GACpDvkB,KAAKywB,WAAaA,EAClBzwB,KAAKukB,KAAOA,EACZvkB,KAAK4S,KAAOA,EACZ5S,KAAKusD,QAAUhsC,kBAGVvgB,KAAK4S,KAAKoT,KACbhmB,KAAK4S,KAAKoT,GAAK,GAGjBhmB,KAAKwsD,eAAiB,IAAI7C,eAAe3pD,KAAK4S,KAAM5S,KAAMA,KAAK8mC,kBACrE,EACI2lB,QAAS,WACP,OAAOzsD,KAAKtD,IAClB,EACIosD,iBAAkB,WAA4B,GAWhDoB,aAAarnD,UAAY,CAMvBw9B,UAAW,WAETrgC,KAAK4lC,eAAgB,EAErB5lC,KAAK8mC,kBAAoB,GAEzB9mC,KAAKulC,MAAO,CAClB,EAWImnB,kBAAmB,SAA2BpE,EAAKjkD,GACjD,IAAI6D,EACA0S,EAAM5a,KAAK8mC,kBAAkBnmC,OACjC,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,GACpB7D,GAAarE,KAAK2sD,WAAoD,cAAvC3sD,KAAK8mC,kBAAkB5+B,GAAG04B,YAC3D5gC,KAAK8mC,kBAAkB5+B,GAAGk+B,WACtBpmC,KAAK8mC,kBAAkB5+B,GAAGq9B,OAC5BvlC,KAAKywB,WAAW8U,MAAO,EACvBvlC,KAAKulC,MAAO,GAIxB,EACIU,mBAAoB,SAA4B1xB,IACD,IAAzCvU,KAAK8mC,kBAAkBvf,QAAQhT,IACjCvU,KAAK8mC,kBAAkBz8B,KAAKkK,EAEpC,GAUE41C,eAAetnD,UAAUorB,aAAe,WAAY,EACpDzT,gBAAgB,CAACmtC,kBAAmBsC,YAAaC,cAAeC,gBAChEA,eAAetnD,UAAU+pD,eAAiB,WACxC,OAAO,IACX,EACEzC,eAAetnD,UAAU0wB,YAAc,WAAY,EACnD42B,eAAetnD,UAAU6oB,QAAU,WAAY,EAC/Cy+B,eAAetnD,UAAUkvB,gBAAkB,WACzC,IAAIvU,EAAwBoE,0BAC5B,GAAKpE,EAAL,CAGA,IAAIqvC,EAAmBrvC,EAAsB,WAC7Cxd,KAAKurD,eAAiBsB,EAAiB7sD,KAF3C,CAGA,EACEmqD,eAAetnD,UAAUiqD,eAAiB,WACxC,OAAO9sD,KAAKgrB,WAChB,EAuBEs/B,aAAaznD,UAAUorB,aAAe,SAAUq6B,GAG9C,GAFAtoD,KAAKqoD,uBAAuBC,GAAK,GACjCtoD,KAAK0sD,kBAAkBpE,GAAK,GACvBtoD,KAAKwtB,GAAGo9B,aAIX5qD,KAAKyqD,aAAenC,EAAMtoD,KAAK4S,KAAKoT,OAJX,CACzB,IAAI+mC,EAAe/sD,KAAKwtB,GAAGtjB,EAC3BlK,KAAKyqD,aAAesC,CAC1B,CAGI/sD,KAAKsb,QAAUtb,KAAK6qD,GAAG3gD,EAAE,GACzB,IAAI8iD,EAAchtD,KAAKsb,QAAUtb,KAAK0qD,kBAClC1qD,KAAK2qD,kBAAoBqC,IAC3BhtD,KAAK2qD,gBAAkBqC,EACvBhtD,KAAKyb,MAAMmB,OAAOowC,GAExB,EACExyC,gBAAgB,CAACmtC,kBAAmBsC,YAAaC,cAAeI,cAChEA,aAAaznD,UAAU0wB,YAAc,WAC/BvzB,KAAK8nD,WAAa9nD,KAAKwqD,WACpBxqD,KAAKuqD,aAIEvqD,KAAKyb,MAAMW,WAAa/I,KAAKmL,IAAIxe,KAAKyqD,aAAezqD,KAAKywB,WAAW5B,UAAY7uB,KAAKyb,MAAMU,QAAU,KAChHnc,KAAKyb,MAAMU,KAAKnc,KAAKyqD,aAAezqD,KAAKywB,WAAW5B,YAJpD7uB,KAAKyb,MAAMS,OACXlc,KAAKyb,MAAMU,KAAKnc,KAAKyqD,aAAezqD,KAAKywB,WAAW5B,WACpD7uB,KAAKuqD,YAAa,GAK1B,EACED,aAAaznD,UAAU+yB,KAAO,WAEhC,EACE00B,aAAaznD,UAAU8yB,KAAO,WAC5B31B,KAAKyb,MAAMC,QACX1b,KAAKuqD,YAAa,CACtB,EACED,aAAaznD,UAAU6Y,MAAQ,WAC7B1b,KAAKyb,MAAMC,QACX1b,KAAKuqD,YAAa,EAClBvqD,KAAKwqD,UAAW,CACpB,EACEF,aAAaznD,UAAU8Y,OAAS,WAC9B3b,KAAKwqD,UAAW,CACpB,EACEF,aAAaznD,UAAU+Y,QAAU,SAAUC,GACzC7b,KAAKyb,MAAMY,KAAKR,EACpB,EACEyuC,aAAaznD,UAAU+Z,OAAS,SAAUqwC,GACxCjtD,KAAK0qD,kBAAoBuC,EACzBjtD,KAAK2qD,gBAAkBsC,EAAcjtD,KAAKsb,QAC1Ctb,KAAKyb,MAAMmB,OAAO5c,KAAK2qD,gBAC3B,EACEL,aAAaznD,UAAU+pD,eAAiB,WACtC,OAAO,IACX,EACEtC,aAAaznD,UAAU6oB,QAAU,WAAY,EAC7C4+B,aAAaznD,UAAUimD,iBAAmB,WAAY,EACtDwB,aAAaznD,UAAUkvB,gBAAkB,WAAY,EAGrDg5B,aAAaloD,UAAUqqD,YAAc,SAAU5E,GAC7C,IAAIpgD,EAEA0K,EADAgI,EAAM5a,KAAKqjB,OAAO1iB,OAGtB,IADAX,KAAKojB,gBAAiB,EACjBlb,EAAI0S,EAAM,EAAG1S,GAAK,EAAGA,GAAK,EACxBlI,KAAKi/C,SAAS/2C,KACjB0K,EAAO5S,KAAKqjB,OAAOnb,IACV4d,GAAKlT,EAAKmT,IAAMuiC,EAAMtoD,KAAKqjB,OAAOnb,GAAG6d,IAAMnT,EAAKzI,GAAKyI,EAAKmT,GAAKuiC,EAAMtoD,KAAKqjB,OAAOnb,GAAG6d,IAC3F/lB,KAAKmtD,UAAUjlD,GAGnBlI,KAAKojB,iBAAiBpjB,KAAKi/C,SAAS/2C,IAAKlI,KAAKojB,eAEhDpjB,KAAKotD,sBACT,EACErC,aAAaloD,UAAUwqD,WAAa,SAAUC,GAC5C,OAAQA,EAAMrpC,IACZ,KAAK,EACH,OAAOjkB,KAAKutD,YAAYD,GAC1B,KAAK,EACH,OAAOttD,KAAKwtD,WAAWF,GACzB,KAAK,EACH,OAAOttD,KAAKytD,YAAYH,GAC1B,KAAK,EAYL,QACE,OAAOttD,KAAK0tD,WAAWJ,GAXzB,KAAK,EACH,OAAOttD,KAAK2tD,YAAYL,GAC1B,KAAK,EACH,OAAOttD,KAAK4tD,WAAWN,GACzB,KAAK,EACH,OAAOttD,KAAK8b,YAAYwxC,GAC1B,KAAK,GACH,OAAOttD,KAAK6tD,aAAaP,GAC3B,KAAK,GACH,OAAOttD,KAAK8tD,cAAcR,GAIlC,EACEvC,aAAaloD,UAAUgrD,aAAe,WACpC,MAAM,IAAIhuD,MAAM,mDACpB,EACEkrD,aAAaloD,UAAUiZ,YAAc,SAAUlJ,GAC7C,OAAO,IAAI03C,aAAa13C,EAAM5S,KAAKywB,WAAYzwB,KACnD,EACE+qD,aAAaloD,UAAUirD,cAAgB,SAAUl7C,GAC/C,OAAO,IAAIu3C,eAAev3C,EAAM5S,KAAKywB,WAAYzwB,KACrD,EACE+qD,aAAaloD,UAAUkrD,cAAgB,WACrC,IAAI7lD,EACA0S,EAAM5a,KAAKqjB,OAAO1iB,OACtB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAKmtD,UAAUjlD,GAEjBlI,KAAKotD,sBACT,EACErC,aAAaloD,UAAU4uB,cAAgB,SAAUC,GAE/C,IAAIxpB,EADJlI,KAAKojB,gBAAiB,EAEtB,IACII,EADA5I,EAAM8W,EAAU/wB,OAEhB8iB,EAAOzjB,KAAKqjB,OAAO1iB,OACvB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAExB,IADAsb,EAAI,EACGA,EAAIC,GAAM,CACf,GAAIzjB,KAAKqjB,OAAOG,GAAGvL,KAAOyZ,EAAUxpB,GAAG+P,GAAI,CACzCjY,KAAKqjB,OAAOG,GAAKkO,EAAUxpB,GAC3B,KACV,CACQsb,GAAK,CACb,CAEA,EACEunC,aAAaloD,UAAU8tB,oBAAsB,SAAUq9B,GACrDhuD,KAAKywB,WAAWd,iBAAmBq+B,CACvC,EACEjD,aAAaloD,UAAUmwB,UAAY,WAC5BhzB,KAAKywB,WAAWw9B,iBACnBjuD,KAAK+tD,eAEX,EACEhD,aAAaloD,UAAUqrD,sBAAwB,SAAUj9C,EAASk9C,EAAYC,GAK5E,IAJA,IAAInP,EAAWj/C,KAAKi/C,SAChB57B,EAASrjB,KAAKqjB,OACdnb,EAAI,EACJ0S,EAAMyI,EAAO1iB,OACVuH,EAAI0S,GACLyI,EAAOnb,GAAGy5B,KAAOwsB,IAEdlP,EAAS/2C,KAAsB,IAAhB+2C,EAAS/2C,IAI3BkmD,EAAU/jD,KAAK40C,EAAS/2C,IACxB+2C,EAAS/2C,GAAGmmD,mBACahoD,IAArBgd,EAAOnb,GAAGo7C,OACZtjD,KAAKkuD,sBAAsBj9C,EAASoS,EAAOnb,GAAGo7C,OAAQ8K,GAEtDn9C,EAAQq9C,aAAaF,KARvBpuD,KAAKmtD,UAAUjlD,GACflI,KAAKuuD,kBAAkBt9C,KAW3B/I,GAAK,CAEX,EACE6iD,aAAaloD,UAAU0rD,kBAAoB,SAAUt9C,GACnDjR,KAAKwuD,gBAAgBnkD,KAAK4G,EAC9B,EACE85C,aAAaloD,UAAU6vB,wBAA0B,SAAUhN,GACzD,IAAIxd,EACA0S,EAAM8K,EAAO/kB,OACjB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB,GAAIwd,EAAOxd,GAAGgmB,GAAI,CAChB,IAAI3J,EAAOvkB,KAAKwtD,WAAW9nC,EAAOxd,IAClCqc,EAAKwN,kBACL/xB,KAAKywB,WAAWd,iBAAiB9B,oBAAoBtJ,EAC7D,CAEA,EACEwmC,aAAaloD,UAAU4rD,eAAiB,SAAU9sB,GAChD,IAAIz5B,EACA0S,EAAM5a,KAAKi/C,SAASt+C,OACxB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB,GAAIlI,KAAKi/C,SAAS/2C,GAAG0K,KAAK+uB,MAAQA,EAChC,OAAO3hC,KAAKi/C,SAAS/2C,GAGzB,OAAO,IACX,EACE6iD,aAAaloD,UAAUmzB,iBAAmB,SAAUrT,GAClD,IACI1R,EADAy9C,EAAY/rC,EAAKuP,QAErB,GAAyB,iBAAdw8B,EACTz9C,EAAUjR,KAAKi/C,SAASyP,OACnB,CACL,IAAIxmD,EACA0S,EAAM5a,KAAKi/C,SAASt+C,OACxB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB,GAAIlI,KAAKi/C,SAAS/2C,GAAG0K,KAAKob,KAAO0gC,EAAW,CAC1Cz9C,EAAUjR,KAAKi/C,SAAS/2C,GACxB,KACV,CAEA,CACI,OAAoB,IAAhBya,EAAKhiB,OACAsQ,EAEFA,EAAQ+kB,iBAAiBrT,EACpC,EACEooC,aAAaloD,UAAU8rD,gBAAkB,SAAUn8B,EAAUo8B,GAC3D5uD,KAAKywB,WAAWmB,YAAc,IAAIywB,YAClCriD,KAAKywB,WAAWmW,YAAc8gB,YAAYl1B,GAC1CxyB,KAAKywB,WAAWmB,YAAYC,SAASW,EAAS5M,OAC9C5lB,KAAKywB,WAAWmB,YAAYE,SAASU,EAASb,MAAOi9B,GACrD5uD,KAAKywB,WAAWiF,aAAe11B,KAAK6uD,cAAcn5B,aAAatyB,KAAKpD,KAAK6uD,eACzE7uD,KAAKywB,WAAWxG,cAAgBjqB,KAAK6uD,cAAc5kC,cAAc7mB,KAAKpD,KAAK6uD,eAC3E7uD,KAAKywB,WAAW25B,YAAcpqD,KAAK6uD,cAAcj/B,eACjD5vB,KAAKywB,WAAWZ,gBAAkB7vB,KAAK6uD,cAAch/B,gBACrD7vB,KAAKywB,WAAWgV,QAAU,EAC1BzlC,KAAKywB,WAAW5B,UAAY2D,EAASC,GACrCzyB,KAAKywB,WAAWzC,GAAKwE,EAASxE,GAC9BhuB,KAAKywB,WAAWq+B,SAAW,CACzBvM,EAAG/vB,EAAS+vB,EACZ7hC,EAAG8R,EAAS9R,EAElB,EAEE,IAAIquC,YAAc,CAChBC,iBAAkB,mBAGpB,SAASC,mBAAmB,CAsI5B,SAASC,YAAYt8C,EAAM3B,EAASwf,GAClCzwB,KAAK4S,KAAOA,EACZ5S,KAAKiR,QAAUA,EACfjR,KAAKywB,WAAaA,EAClBzwB,KAAKm9B,WAAa,GAClBn9B,KAAK8jB,gBAAkB9jB,KAAK4S,KAAKkR,iBAAmB,GACpD9jB,KAAKmvD,YAAc,KACnB,IACIjnD,EAIAya,EALA+N,EAAO1wB,KAAKywB,WAAWC,KAEvB9V,EAAM5a,KAAK8jB,gBAAkB9jB,KAAK8jB,gBAAgBnjB,OAAS,EAC/DX,KAAKovD,SAAWjyC,iBAAiBvC,GACjC5a,KAAKqvD,UAAY,GAEjB,IAGI7rC,EACAC,EAEA6rC,EACAC,EACAC,EACAxwD,EATAywD,EAAazvD,KAAK8jB,gBAClBg+B,EAAQ,EACR4N,EAAe,GAGfnD,EAAUhsC,kBAKVovC,EAAW,WACXC,EAAU,YACd,IAAK1nD,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAexB,IAd2B,MAAvBunD,EAAWvnD,GAAG/D,MAAuC,MAAvBsrD,EAAWvnD,GAAG/D,MAAgBsrD,EAAWvnD,GAAGs2C,KAA6B,MAAtBiR,EAAWvnD,GAAGmV,EAAEnc,GAAauuD,EAAWvnD,GAAGmV,EAAEre,KAChI2wD,EAAW,OACXC,EAAU,QAEgB,MAAvBH,EAAWvnD,GAAG/D,MAAuC,MAAvBsrD,EAAWvnD,GAAG/D,MAA2B,IAAV29C,EAOhEwN,EAAO,OANPA,EAAOttC,SAAS,SACXwV,aAAa,OAAQ,WAC1B83B,EAAK93B,aAAa,QAASx3B,KAAKiR,QAAQsT,KAAK3R,KAAK2vC,GAAK,GACvD+M,EAAK93B,aAAa,SAAUx3B,KAAKiR,QAAQsT,KAAK3R,KAAK8N,GAAK,GACxDgvC,EAAarlD,KAAKilD,IAIpB3sC,EAAOX,SAAS,QACW,MAAvBytC,EAAWvnD,GAAG/D,KAEhBnE,KAAKovD,SAASlnD,GAAK,CACjBiC,GAAIs8B,gBAAgBC,QAAQ1mC,KAAKiR,QAASw+C,EAAWvnD,GAAGmV,EAAG,EAAG,IAAMrd,KAAKiR,SACzEsD,KAAM00B,qBAAqB4mB,aAAa7vD,KAAKiR,QAASw+C,EAAWvnD,GAAI,GACrE0uB,KAAMjU,EACNmtC,SAAU,IAEZp/B,EAAKzgB,YAAY0S,OACZ,CAIL,IAAIotC,EA8BJ,GAjCAjO,GAAS,EACTn/B,EAAK6U,aAAa,OAA+B,MAAvBi4B,EAAWvnD,GAAG/D,KAAe,UAAY,WACnEwe,EAAK6U,aAAa,YAAa,WAEL,IAAtBi4B,EAAWvnD,GAAGlJ,EAAEkC,GAClByuD,EAAW,OACXC,EAAU,OACV5wD,EAAIynC,gBAAgBC,QAAQ1mC,KAAKiR,QAASw+C,EAAWvnD,GAAGlJ,EAAG,EAAG,KAAMgB,KAAKiR,SACzE8+C,EAAWxvC,mBACXgvC,EAAWvtC,SAAS,WACXwV,aAAa,KAAMu4B,IAC5BP,EAAUxtC,SAAS,iBACXwV,aAAa,WAAY,SACjCg4B,EAAQh4B,aAAa,KAAM,iBAC3Bg4B,EAAQh4B,aAAa,SAAU,KAC/B+3B,EAASt/C,YAAYu/C,GACrB9+B,EAAKzgB,YAAYs/C,GACjB5sC,EAAK6U,aAAa,SAAiC,MAAvBi4B,EAAWvnD,GAAG/D,KAAe,UAAY,aAErEqrD,EAAU,KACVxwD,EAAI,MAINgB,KAAKm9B,WAAWj1B,GAAK,CACnB0uB,KAAMjU,EACN3jB,EAAGA,EACHgxD,MAAOR,EACPM,SAAU,GACVG,aAAc,GACdC,SAAUH,EACVI,WAAY,GAEa,MAAvBV,EAAWvnD,GAAG/D,KAAc,CAC9Bsf,EAAOisC,EAAa/uD,OACpB,IAAImJ,EAAIkY,SAAS,KACjB,IAAKwB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB1Z,EAAEmG,YAAYy/C,EAAalsC,IAE7B,IAAI4sC,EAAOpuC,SAAS,QACpBouC,EAAK54B,aAAa,YAAa,SAC/B44B,EAAK54B,aAAa,KAAM+0B,EAAU,IAAMzK,GACxCsO,EAAKngD,YAAY0S,GACjB+N,EAAKzgB,YAAYmgD,GACjBtmD,EAAE0tB,aAAa,OAAQ,OAASld,kBAAoB,IAAMiyC,EAAU,IAAMzK,EAAQ,KAClF4N,EAAa/uD,OAAS,EACtB+uD,EAAarlD,KAAKP,EAC5B,MACU4lD,EAAarlD,KAAKsY,GAEhB8sC,EAAWvnD,GAAGs2C,MAAQx+C,KAAKqvD,YAC7BrvD,KAAKqvD,UAAYrvD,KAAKqwD,wBAGxBrwD,KAAKovD,SAASlnD,GAAK,CACjB0uB,KAAMjU,EACNmtC,SAAU,GACV3lD,GAAIs8B,gBAAgBC,QAAQ1mC,KAAKiR,QAASw+C,EAAWvnD,GAAGmV,EAAG,EAAG,IAAMrd,KAAKiR,SACzEsD,KAAM00B,qBAAqB4mB,aAAa7vD,KAAKiR,QAASw+C,EAAWvnD,GAAI,GACrEooD,QAAShB,GAENtvD,KAAKovD,SAASlnD,GAAGqM,KAAKrT,GACzBlB,KAAKuwD,SAASd,EAAWvnD,GAAIlI,KAAKovD,SAASlnD,GAAGqM,KAAKrK,EAAGlK,KAAKovD,SAASlnD,GAE9E,CAII,IAFAlI,KAAKmvD,YAAcntC,SAAS2tC,GAC5B/0C,EAAM80C,EAAa/uD,OACduH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAKmvD,YAAYl/C,YAAYy/C,EAAaxnD,IAExC45C,EAAQ,IACV9hD,KAAKmvD,YAAY33B,aAAa,KAAM+0B,GACpCvsD,KAAKiR,QAAQu/C,cAAch5B,aAAao4B,EAAS,OAASt1C,kBAAoB,IAAMiyC,EAAU,KAC9F77B,EAAKzgB,YAAYjQ,KAAKmvD,cAEpBnvD,KAAKovD,SAASzuD,QAChBX,KAAKiR,QAAQi3C,uBAAuBloD,KAE1C,CAtQEivD,iBAAiBpsD,UAAY,CAC3B4tD,cAAe,WACb,IAAIxZ,EAAM,IAAIxK,OACdzsC,KAAKyoD,eAAiB,CACpBC,MAAO1oD,KAAK4S,KAAKiS,GAAKuxB,yBAAyBqB,qBAAqBz3C,KAAMA,KAAK4S,KAAKiS,GAAI7kB,MAAQ,CAC9Fqd,EAAG,GAELqzC,SAAS,EACTC,cAAc,EACdC,QAAQ,EACR3Z,IAAKA,EACL4Z,SAAU5Z,EACV6Z,aAAc,GAEZ9wD,KAAK4S,KAAKm+C,KACZ/wD,KAAKyoD,eAAeC,MAAMtR,cAAe,GAIvCp3C,KAAK4S,KAAKqR,EAGpB,EACI+sC,gBAAiB,WAGf,GAFAhxD,KAAKyoD,eAAemI,OAAS5wD,KAAKyoD,eAAeC,MAAMrrC,EAAEkoB,MAAQvlC,KAAK4lC,cACtE5lC,KAAKyoD,eAAeiI,QAAU1wD,KAAKyoD,eAAeC,MAAMnjB,MAAQvlC,KAAK4lC,cACjE5lC,KAAKouD,UAAW,CAClB,IAAInX,EACAga,EAAWjxD,KAAKyoD,eAAexR,IAC/B/uC,EAAI,EACJ0S,EAAM5a,KAAKouD,UAAUztD,OAEzB,IAAKX,KAAKyoD,eAAeiI,QACvB,KAAOxoD,EAAI0S,GAAK,CACd,GAAI5a,KAAKouD,UAAUlmD,GAAGugD,eAAeC,MAAMnjB,KAAM,CAC/CvlC,KAAKyoD,eAAeiI,SAAU,EAC9B,KACd,CACYxoD,GAAK,CACjB,CAEQ,GAAIlI,KAAKyoD,eAAeiI,QAGtB,IAFAzZ,EAAMj3C,KAAKyoD,eAAeC,MAAMx+C,EAAEjN,MAClCg0D,EAAS1gB,eAAe0G,GACnB/uC,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB+oD,EAASjhB,SAAShwC,KAAKouD,UAAUlmD,GAAGugD,eAAeC,MAAMx+C,EAGrE,CACWlK,KAAKkxD,kBAAmBlxD,KAAKyoD,eAAeiI,UAC/C1wD,KAAKyoD,eAAekI,aAAe3wD,KAAKyoD,eAAeiI,SAErD1wD,KAAKyoD,eAAemI,SACtB5wD,KAAKyoD,eAAeqI,aAAe9wD,KAAKyoD,eAAeC,MAAMrrC,EAAEnT,EAEvE,EACIinD,qBAAsB,WACpB,GAAInxD,KAAKkxD,gBAAiB,CACxB,IAAIhpD,EAAI,EACJ0S,EAAM5a,KAAKkxD,gBAAgBvwD,OAE/B,GADAX,KAAKyoD,eAAekI,aAAe3wD,KAAKyoD,eAAeiI,SAClD1wD,KAAKyoD,eAAekI,eAAiB3wD,KAAKyoD,eAAemI,OAC5D,KAAO1oD,EAAI0S,GACL5a,KAAKkxD,gBAAgBhpD,GAAGq9B,OAC1BvlC,KAAKyoD,eAAekI,cAAe,GAEjC3wD,KAAKkxD,gBAAgBhpD,GAAG0oD,SAAW5wD,KAAKyoD,eAAemI,SACzD5wD,KAAKyoD,eAAeqI,aAAe9wD,KAAKyoD,eAAeC,MAAMrrC,EAAEnT,EAC/DlK,KAAKyoD,eAAemI,QAAS,GAE/B1oD,GAAK,EAGT,GAAIlI,KAAKyoD,eAAekI,aAAc,CACpC,IAAIE,EAAW7wD,KAAKyoD,eAAeoI,SAEnC,IADA7wD,KAAKkxD,gBAAgB,GAAGjhB,OAAOzH,MAAMqoB,GAChC3oD,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAAG,CAC3B,IAAIkpD,EAAOpxD,KAAKkxD,gBAAgBhpD,GAAG+nC,OACnC4gB,EAAS7gB,SAASohB,EAC9B,CACUP,EAAS7gB,SAAShwC,KAAKyoD,eAAexR,IAChD,CACQ,GAAIj3C,KAAKyoD,eAAemI,OAAQ,CAC9B,IAAIS,EAAUrxD,KAAKyoD,eAAeqI,aAClC,IAAK5oD,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBmpD,GAA6C,IAAlCrxD,KAAKkxD,gBAAgBhpD,GAAGopD,QAErCtxD,KAAKyoD,eAAeqI,aAAeO,CAC7C,CACA,CACA,EACIE,uBAAwB,WACtB,GAAIvxD,KAAKwxD,yBAA0B,CACjC,IAAIC,EAAmBzxD,KAAKwxD,yBAAyBE,WAAW3C,YAAYC,kBAC5E,GAAIyC,EAAiB9wD,OAAQ,CAC3BX,KAAKkxD,gBAAkB,GACvBlxD,KAAKyoD,eAAeoI,SAAW,IAAIpkB,OACnC,IAAIvkC,EAAI,EACJ0S,EAAM62C,EAAiB9wD,OAC3B,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAKkxD,gBAAgB7mD,KAAKonD,EAAiBvpD,GAEvD,CACA,CACA,EACIypD,cAAe,SAAuB5tC,GACpC,IAAI6tC,EAAa,GACjBA,EAAWvnD,KAAKrK,KAAKyoD,gBAGrB,IAFA,IAYIvgD,EAZAiS,GAAO,EACPoK,EAAOvkB,KAAKukB,KACTpK,GACDoK,EAAKkkC,gBACHlkC,EAAK3R,KAAKgR,SACZguC,EAAWhlC,OAAO,EAAG,EAAGrI,EAAKkkC,gBAE/BlkC,EAAOA,EAAKA,MAEZpK,GAAO,EAIX,IACI03C,EADAj3C,EAAMg3C,EAAWjxD,OAErB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB2pD,EAAQD,EAAW1pD,GAAG+uC,IAAIhG,kBAAkB,EAAG,EAAG,GAElDltB,EAAK,CAACA,EAAG,GAAK8tC,EAAM,GAAI9tC,EAAG,GAAK8tC,EAAM,GAAI,GAE5C,OAAO9tC,CACb,EACI+tC,QAAS,IAAIrlB,QAqIfyiB,YAAYrsD,UAAUkvD,gBAAkB,SAAUvqB,GAChD,OAAOxnC,KAAKovD,SAAS5nB,GAAKjzB,IAC9B,EACE26C,YAAYrsD,UAAU0wB,YAAc,SAAUy+B,GAC5C,IACI9pD,EADA+oD,EAAWjxD,KAAKiR,QAAQw3C,eAAexR,IAEvCr8B,EAAM5a,KAAK8jB,gBAAgBnjB,OAC/B,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAOxB,IANIlI,KAAKovD,SAASlnD,GAAGqM,KAAKgxB,MAAQysB,IAChChyD,KAAKuwD,SAASvwD,KAAK8jB,gBAAgB5b,GAAIlI,KAAKovD,SAASlnD,GAAGqM,KAAKrK,EAAGlK,KAAKovD,SAASlnD,KAE5ElI,KAAKovD,SAASlnD,GAAGiC,GAAGo7B,MAAQysB,IAC9BhyD,KAAKovD,SAASlnD,GAAG0uB,KAAKY,aAAa,eAAgBx3B,KAAKovD,SAASlnD,GAAGiC,GAAGD,GAEpC,MAAjClK,KAAK8jB,gBAAgB5b,GAAG/D,OACtBnE,KAAKovD,SAASlnD,GAAGooD,UAAYtwD,KAAKiR,QAAQw3C,eAAeC,MAAMnjB,MAAQysB,IACzEhyD,KAAKovD,SAASlnD,GAAGooD,QAAQ94B,aAAa,YAAay5B,EAASpgB,mBAAmBiB,WAE7E9xC,KAAKm9B,WAAWj1B,GAAGlJ,IAAMgB,KAAKm9B,WAAWj1B,GAAGlJ,EAAEumC,MAAQysB,IAAe,CACvE,IAAIxC,EAAUxvD,KAAKm9B,WAAWj1B,GAAG8nD,MAC7BhwD,KAAKm9B,WAAWj1B,GAAGlJ,EAAEkL,EAAI,GACa,UAApClK,KAAKm9B,WAAWj1B,GAAG+nD,eACrBjwD,KAAKm9B,WAAWj1B,GAAG+nD,aAAe,QAClCjwD,KAAKm9B,WAAWj1B,GAAG0uB,KAAKY,aAAa,SAAU,OAASld,kBAAoB,IAAMta,KAAKm9B,WAAWj1B,GAAGgoD,SAAW,MAElHV,EAAQh4B,aAAa,UAAWx3B,KAAKm9B,WAAWj1B,GAAGlJ,EAAEkL,KAEb,WAApClK,KAAKm9B,WAAWj1B,GAAG+nD,eACrBjwD,KAAKm9B,WAAWj1B,GAAG+nD,aAAe,SAClCjwD,KAAKm9B,WAAWj1B,GAAG0uB,KAAKY,aAAa,SAAU,OAEjDx3B,KAAKm9B,WAAWj1B,GAAG0uB,KAAKY,aAAa,eAAyC,EAAzBx3B,KAAKm9B,WAAWj1B,GAAGlJ,EAAEkL,GAEtF,CAGA,EACEglD,YAAYrsD,UAAUovD,eAAiB,WACrC,OAAOjyD,KAAKmvD,WAChB,EACED,YAAYrsD,UAAUwtD,qBAAuB,WAC3C,IAAI1tC,EAAO,QAKX,OAJAA,GAAQ,KAAO3iB,KAAKywB,WAAWq+B,SAASvM,EACxC5/B,GAAQ,KAAO3iB,KAAKywB,WAAWq+B,SAASpuC,EACxCiC,GAAQ,MAAQ3iB,KAAKywB,WAAWq+B,SAASvM,EACzC5/B,GAAQ,MAAQ3iB,KAAKywB,WAAWq+B,SAASpuC,EAAI,GAEjD,EACEwuC,YAAYrsD,UAAU0tD,SAAW,SAAUlqC,EAAU6rC,EAAW9C,GAC9D,IACIlnD,EACA0S,EAFAu3C,EAAa,KAAOD,EAAUhoD,EAAE,GAAG,GAAK,IAAMgoD,EAAUhoD,EAAE,GAAG,GAIjE,IADA0Q,EAAMs3C,EAAUr3B,QACX3yB,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAExBiqD,GAAc,KAAOD,EAAU70C,EAAEnV,EAAI,GAAG,GAAK,IAAMgqD,EAAU70C,EAAEnV,EAAI,GAAG,GAAK,IAAMgqD,EAAUhqD,EAAEA,GAAG,GAAK,IAAMgqD,EAAUhqD,EAAEA,GAAG,GAAK,IAAMgqD,EAAUhoD,EAAEhC,GAAG,GAAK,IAAMgqD,EAAUhoD,EAAEhC,GAAG,GAQhL,GALIgqD,EAAU1rC,GAAK5L,EAAM,IACvBu3C,GAAc,KAAOD,EAAU70C,EAAEnV,EAAI,GAAG,GAAK,IAAMgqD,EAAU70C,EAAEnV,EAAI,GAAG,GAAK,IAAMgqD,EAAUhqD,EAAE,GAAG,GAAK,IAAMgqD,EAAUhqD,EAAE,GAAG,GAAK,IAAMgqD,EAAUhoD,EAAE,GAAG,GAAK,IAAMgoD,EAAUhoD,EAAE,GAAG,IAI5KklD,EAASU,WAAaqC,EAAY,CACpC,IAAIC,EAAiB,GACjBhD,EAASx4B,OACPs7B,EAAU1rC,IACZ4rC,EAAiB/rC,EAASm4B,IAAMx+C,KAAKqvD,UAAY8C,EAAaA,GAEhE/C,EAASx4B,KAAKY,aAAa,IAAK46B,IAElChD,EAASU,SAAWqC,CAC1B,CACA,EACEjD,YAAYrsD,UAAU6oB,QAAU,WAC9B1rB,KAAKiR,QAAU,KACfjR,KAAKywB,WAAa,KAClBzwB,KAAKmvD,YAAc,KACnBnvD,KAAK4S,KAAO,KACZ5S,KAAK8jB,gBAAkB,IAC3B,EAEE,IAAIuuC,eAAiB,WACnB,IAAItnC,EAAK,CACTA,aAEA,SAAsBunC,EAAOC,GAC3B,IAAIC,EAAMxwC,SAAS,UASnB,OARAwwC,EAAIh7B,aAAa,KAAM86B,IACC,IAApBC,IACFC,EAAIh7B,aAAa,cAAe,qBAChCg7B,EAAIh7B,aAAa,IAAK,MACtBg7B,EAAIh7B,aAAa,IAAK,MACtBg7B,EAAIh7B,aAAa,QAAS,QAC1Bg7B,EAAIh7B,aAAa,SAAU,SAEtBg7B,CACb,EAZIznC,6BAaA,WACE,IAAI0nC,EAAgBzwC,SAAS,iBAI7B,OAHAywC,EAAcj7B,aAAa,OAAQ,UACnCi7B,EAAcj7B,aAAa,8BAA+B,QAC1Di7B,EAAcj7B,aAAa,SAAU,8CAC9Bi7B,CACb,GACI,OAAO1nC,CACX,CAxBuB,GA0BjB2nC,eAAiB,WACnB,IAAI3nC,EAAK,CACP4kC,UAAU,EACVgD,eAAe,EACfC,gBAA4C,oBAApB3O,iBAQ1B,OANI,WAAWxxC,KAAKC,UAAUC,YAAc,UAAUF,KAAKC,UAAUC,YAAc,WAAWF,KAAKC,UAAUC,YAAc,aAAaF,KAAKC,UAAUC,cACrJoY,EAAG4kC,UAAW,GAEZ,WAAWl9C,KAAKC,UAAUC,aAC5BoY,EAAG4nC,eAAgB,GAEd5nC,CACX,CAbuB,GAejB8nC,oBAAsB,CAAA,EACtBC,SAAW,iBACf,SAASC,WAAWn8B,GAClB,IAAI1uB,EAOA8qD,EANA5yD,EAAS,gBACTwa,EAAMgc,EAAKhkB,KAAKi3C,GAAKjzB,EAAKhkB,KAAKi3C,GAAGlpD,OAAS,EAC3C2xD,EAAQ/xC,kBACRiyC,EAAMH,eAAeY,aAAaX,GAAO,GACzCxQ,EAAQ,EAGZ,IAFA9hD,KAAKkzD,QAAU,GAEVhrD,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAAG,CAC3B8qD,EAAgB,KAChB,IAAIt2D,EAAOk6B,EAAKhkB,KAAKi3C,GAAG3hD,GAAG+b,GACvB4uC,oBAAoBn2D,KAEtBs2D,EAAgB,IAAIG,EADPN,oBAAoBn2D,GAAM02D,QACZZ,EAAK57B,EAAK41B,eAAe1C,eAAe5hD,GAAI0uB,EAAMk8B,SAAWhR,EAAO1hD,GAC/FA,EAAS0yD,SAAWhR,EAChB+Q,oBAAoBn2D,GAAM22D,iBAC5BvR,GAAS,IAGTkR,GACFhzD,KAAKkzD,QAAQ7oD,KAAK2oD,EAE1B,CACQlR,IACFlrB,EAAKnG,WAAWC,KAAKzgB,YAAYuiD,GACjC57B,EAAK01B,aAAa90B,aAAa,SAAU,OAASld,kBAAoB,IAAMg4C,EAAQ,MAElFtyD,KAAKkzD,QAAQvyD,QACfi2B,EAAKsxB,uBAAuBloD,KAElC,CAmBE,SAASszD,iBAAiBr7C,EAAIm7C,EAAQC,GACpCR,oBAAoB56C,GAAM,CACxBm7C,OAAQA,EACRC,eAAgBA,EAEtB,CAEE,SAASE,iBAAiB,CA6K1B,SAASC,mBAAmB,CA4C5B,SAASC,uBAAuB,CAgEhC,SAASC,cAAc9gD,EAAM6d,EAAYlM,GACvCvkB,KAAKkqB,UAAYuG,EAAWiF,aAAa9iB,EAAKuR,OAC1CnkB,KAAKkqB,WAAalqB,KAAKkqB,UAAUyc,MACnC3mC,KAAKkqB,UAAYuG,EAAWmW,YAAYF,QAAQ1mC,KAAKkqB,YAEvDlqB,KAAK2zD,YAAY/gD,EAAM6d,EAAYlM,GACnCvkB,KAAK4zD,WAAa,CAChBvuD,IAAK,EACLI,KAAM,EACNP,MAAOlF,KAAKkqB,UAAUq4B,EACtBp9C,OAAQnF,KAAKkqB,UAAUxJ,EAE7B,CAeE,SAASmzC,iBAAiB5iD,EAAShL,GACjCjG,KAAK42B,KAAO3lB,EACZjR,KAAKwnC,IAAMvhC,CACf,CAEE,SAAS6tD,gBAAgB,CAlVzBf,WAAWlwD,UAAU0wB,YAAc,SAAUqS,GAC3C,IAAI19B,EACA0S,EAAM5a,KAAKkzD,QAAQvyD,OACvB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAKkzD,QAAQhrD,GAAGqrB,YAAYqS,EAElC,EACEmtB,WAAWlwD,UAAU6uD,WAAa,SAAUh1D,GAC1C,IAAIwL,EACA0S,EAAM5a,KAAKkzD,QAAQvyD,OACnBipD,EAAU,GACd,IAAK1hD,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACpBlI,KAAKkzD,QAAQhrD,GAAGxL,OAASA,GAC3BktD,EAAQv/C,KAAKrK,KAAKkzD,QAAQhrD,IAG9B,OAAO0hD,CACX,EASE2J,eAAe1wD,UAAY,CACzBkxD,oBAAqB,WACnB/zD,KAAKssD,aAAetqC,SAAS,IACnC,EACIgyC,wBAAyB,WACvBh0D,KAAKi0D,aAAejyC,SAAS,KAC7BhiB,KAAKk0D,mBAAqBl0D,KAAKssD,aAC/BtsD,KAAKwwD,cAAgBxwD,KAAKssD,aAC1BtsD,KAAKm0D,cAAe,EACpB,IAAIC,EAAqB,KAEzB,GAAIp0D,KAAK4S,KAAKyhD,GAAI,CAChBr0D,KAAKs0D,WAAa,CAAA,EAClB,IAAIC,EAAKvyC,SAAS,KAClBuyC,EAAG/8B,aAAa,KAAMx3B,KAAKusD,SAC3BgI,EAAGtkD,YAAYjQ,KAAKssD,cACpB8H,EAAqBG,EACrBv0D,KAAKywB,WAAWC,KAAKzgB,YAAYskD,EACzC,MAAiBv0D,KAAK4S,KAAK4hD,IACnBx0D,KAAKi0D,aAAahkD,YAAYjQ,KAAKssD,cACnC8H,EAAqBp0D,KAAKi0D,aAC1Bj0D,KAAKqsD,YAAcrsD,KAAKi0D,cAExBj0D,KAAKqsD,YAAcrsD,KAAKssD,aAS1B,GAPItsD,KAAK4S,KAAK6hD,IACZz0D,KAAKssD,aAAa90B,aAAa,KAAMx3B,KAAK4S,KAAK6hD,IAE7Cz0D,KAAK4S,KAAKgU,IACZ5mB,KAAKssD,aAAa90B,aAAa,QAASx3B,KAAK4S,KAAKgU,IAG/B,IAAjB5mB,KAAK4S,KAAKqR,KAAajkB,KAAK4S,KAAK8hD,GAAI,CACvC,IAAIC,EAAK3yC,SAAS,YACd+B,EAAK/B,SAAS,QAClB+B,EAAGyT,aAAa,IAAK,SAAWx3B,KAAK4S,KAAK2vC,EAAI,OAASviD,KAAK4S,KAAK2vC,EAAI,IAAMviD,KAAK4S,KAAK8N,EAAI,OAAS1gB,KAAK4S,KAAK8N,EAAI,KAChH,IAAIk0C,EAASr0C,kBAIb,GAHAo0C,EAAGn9B,aAAa,KAAMo9B,GACtBD,EAAG1kD,YAAY8T,GACf/jB,KAAKywB,WAAWC,KAAKzgB,YAAY0kD,GAC7B30D,KAAKirD,aAAc,CACrB,IAAI4J,EAAU7yC,SAAS,KACvB6yC,EAAQr9B,aAAa,YAAa,OAASld,kBAAoB,IAAMs6C,EAAS,KAC9EC,EAAQ5kD,YAAYjQ,KAAKssD,cACzBtsD,KAAKk0D,mBAAqBW,EACtBT,EACFA,EAAmBnkD,YAAYjQ,KAAKk0D,oBAEpCl0D,KAAKqsD,YAAcrsD,KAAKk0D,kBAEpC,MACUl0D,KAAKssD,aAAa90B,aAAa,YAAa,OAASld,kBAAoB,IAAMs6C,EAAS,IAElG,CAC2B,IAAjB50D,KAAK4S,KAAKw5C,IACZpsD,KAAKksD,cAEb,EACI4I,cAAe,WACT90D,KAAKyoD,eAAekI,cACtB3wD,KAAKk0D,mBAAmB18B,aAAa,YAAax3B,KAAKyoD,eAAeoI,SAAS/e,WAE7E9xC,KAAKyoD,eAAemI,QACtB5wD,KAAKk0D,mBAAmB18B,aAAa,UAAWx3B,KAAKyoD,eAAeqI,aAE5E,EACIiE,mBAAoB,WAClB/0D,KAAKssD,aAAe,KACpBtsD,KAAKi0D,aAAe,KACpBj0D,KAAKwrD,YAAY9/B,SACvB,EACIkhC,eAAgB,WACd,OAAI5sD,KAAK4S,KAAK8hD,GACL,KAEF10D,KAAKqsD,WAClB,EACI2I,2BAA4B,WAC1Bh1D,KAAKwrD,YAAc,IAAI0D,YAAYlvD,KAAK4S,KAAM5S,KAAMA,KAAKywB,YACzDzwB,KAAKwxD,yBAA2B,IAAIuB,WAAW/yD,MAC/CA,KAAKuxD,wBACX,EACI0D,SAAU,SAAkBC,GAO1B,GAHKl1D,KAAKs0D,aACRt0D,KAAKs0D,WAAa,CAAA,IAEft0D,KAAKs0D,WAAWY,GAAY,CAC/B,IACI5C,EACAE,EACA2C,EACAZ,EAJAt8C,EAAKjY,KAAKusD,QAAU,IAAM2I,EAK9B,GAAkB,IAAdA,GAAiC,IAAdA,EAAiB,CACtC,IAAIE,EAASpzC,SAAS,QACtBozC,EAAO59B,aAAa,KAAMvf,GAC1Bm9C,EAAO59B,aAAa,YAA2B,IAAd09B,EAAkB,YAAc,UACjEC,EAAanzC,SAAS,QACXgK,eAAe,+BAAgC,OAAQ,IAAMhsB,KAAKusD,SAC7E6I,EAAOnlD,YAAYklD,GACnBn1D,KAAKywB,WAAWC,KAAKzgB,YAAYmlD,GAC5B1C,eAAe/C,UAA0B,IAAduF,IAC9BE,EAAO59B,aAAa,YAAa,aACjC86B,EAAQ/xC,kBACRiyC,EAAMH,eAAeY,aAAaX,GAClCtyD,KAAKywB,WAAWC,KAAKzgB,YAAYuiD,GACjCA,EAAIviD,YAAYoiD,eAAegD,iCAC/Bd,EAAKvyC,SAAS,MACX/R,YAAYklD,GACfC,EAAOnlD,YAAYskD,GACnBA,EAAG/8B,aAAa,SAAU,OAASld,kBAAoB,IAAMg4C,EAAQ,KAEjF,MAAe,GAAkB,IAAd4C,EAAiB,CAC1B,IAAII,EAAYtzC,SAAS,QACzBszC,EAAU99B,aAAa,KAAMvf,GAC7Bq9C,EAAU99B,aAAa,YAAa,SACpC,IAAI+9B,EAAcvzC,SAAS,KAC3BszC,EAAUrlD,YAAYslD,GACtBjD,EAAQ/xC,kBACRiyC,EAAMH,eAAeY,aAAaX,GAElC,IAAIkD,EAAQxzC,SAAS,uBACrBwzC,EAAMh+B,aAAa,KAAM,iBACzBg7B,EAAIviD,YAAYulD,GAChB,IAAIC,EAASzzC,SAAS,WACtByzC,EAAOj+B,aAAa,OAAQ,SAC5Bi+B,EAAOj+B,aAAa,cAAe,WACnCg+B,EAAMvlD,YAAYwlD,GAElBz1D,KAAKywB,WAAWC,KAAKzgB,YAAYuiD,GACjC,IAAIkD,EAAY1zC,SAAS,QACzB0zC,EAAUl+B,aAAa,QAASx3B,KAAKukB,KAAK3R,KAAK2vC,GAC/CmT,EAAUl+B,aAAa,SAAUx3B,KAAKukB,KAAK3R,KAAK8N,GAChDg1C,EAAUl+B,aAAa,IAAK,KAC5Bk+B,EAAUl+B,aAAa,IAAK,KAC5Bk+B,EAAUl+B,aAAa,OAAQ,WAC/Bk+B,EAAUl+B,aAAa,UAAW,KAClC+9B,EAAY/9B,aAAa,SAAU,OAASld,kBAAoB,IAAMg4C,EAAQ,KAC9EiD,EAAYtlD,YAAYylD,IACxBP,EAAanzC,SAAS,QACXgK,eAAe,+BAAgC,OAAQ,IAAMhsB,KAAKusD,SAC7EgJ,EAAYtlD,YAAYklD,GACnBzC,eAAe/C,WAClB2F,EAAU99B,aAAa,YAAa,aACpCg7B,EAAIviD,YAAYoiD,eAAegD,gCAC/Bd,EAAKvyC,SAAS,KACduzC,EAAYtlD,YAAYylD,GACxBnB,EAAGtkD,YAAYjQ,KAAKssD,cACpBiJ,EAAYtlD,YAAYskD,IAE1Bv0D,KAAKywB,WAAWC,KAAKzgB,YAAYqlD,EAC3C,CACQt1D,KAAKs0D,WAAWY,GAAaj9C,CACrC,CACM,OAAOjY,KAAKs0D,WAAWY,EAC7B,EACIS,SAAU,SAAkB19C,GACrBjY,KAAKi0D,cAGVj0D,KAAKi0D,aAAaz8B,aAAa,OAAQ,OAASld,kBAAoB,IAAMrC,EAAK,IACrF,GAUEu7C,iBAAiB3wD,UAAY,CAM3B+yD,cAAe,WAEb51D,KAAKouD,UAAY,GAEjBpuD,KAAK2sD,WAAY,EACjB3sD,KAAK61D,gBACX,EAQIvH,aAAc,SAAsBF,GAClCpuD,KAAKouD,UAAYA,CACvB,EAMIC,YAAa,WACXruD,KAAK2sD,WAAY,CACvB,EAMIkJ,eAAgB,gBACWxvD,IAArBrG,KAAK4S,KAAK0wC,QACZtjD,KAAKukB,KAAK2pC,sBAAsBluD,KAAMA,KAAK4S,KAAK0wC,OAAQ,GAEhE,GAgEI9oC,gBAAgB,CAACmtC,kBAAmB3sC,oBA3DnB,CACf24C,YAAa,SAAqB/gD,EAAM6d,EAAYlM,GAClDvkB,KAAKqgC,YACLrgC,KAAKqqD,aAAaz3C,EAAM6d,EAAYlM,GACpCvkB,KAAKywD,cAAc79C,EAAM6d,EAAYlM,GACrCvkB,KAAK41D,gBACL51D,KAAK6nD,iBACL7nD,KAAK+zD,sBACL/zD,KAAKg0D,0BACLh0D,KAAKg1D,6BACLh1D,KAAK81D,gBACL91D,KAAK21B,MACb,EACMA,KAAM,WAEC31B,KAAK+nD,QAAY/nD,KAAK8nD,YAAa9nD,KAAKgoD,iBAChChoD,KAAKqsD,aAAersD,KAAKssD,cAC/B/nD,MAAM2B,QAAU,OACrBlG,KAAK+nD,QAAS,EAExB,EACMnyB,KAAM,WAEA51B,KAAK8nD,YAAc9nD,KAAKgoD,gBACrBhoD,KAAK4S,KAAK8hD,MACF10D,KAAKqsD,aAAersD,KAAKssD,cAC/B/nD,MAAM2B,QAAU,SAEvBlG,KAAK+nD,QAAS,EACd/nD,KAAK4lC,eAAgB,EAE/B,EACMrS,YAAa,WAGPvzB,KAAK4S,KAAK8hD,IAAM10D,KAAK+nD,SAGzB/nD,KAAKgxD,kBACLhxD,KAAK6oD,mBACL7oD,KAAKmxD,uBACLnxD,KAAK80D,gBACL90D,KAAK+1D,qBACD/1D,KAAK4lC,gBACP5lC,KAAK4lC,eAAgB,GAE/B,EACMmwB,mBAAoB,WAA8B,EAClD9nC,aAAc,SAAsBq6B,GAClCtoD,KAAKulC,MAAO,EACZvlC,KAAKqoD,uBAAuBC,GAC5BtoD,KAAK0sD,kBAAkBpE,EAAKtoD,KAAK8nD,WACjC9nD,KAAKwoD,mBACb,EACM98B,QAAS,WACP1rB,KAAKg2D,UAAY,KACjBh2D,KAAK+0D,oBACb,KAE0EtB,sBAgBxEj5C,gBAAgB,CAACyvC,YAAagF,iBAAkBsE,eAAgBC,iBAAkBtJ,aAAcuJ,sBAAuBC,eACvHA,cAAc7wD,UAAUizD,cAAgB,WACtC,IAAI/5C,EAAY/b,KAAKywB,WAAWxG,cAAcjqB,KAAKkqB,WACnDlqB,KAAKg2D,UAAYh0C,SAAS,SAC1BhiB,KAAKg2D,UAAUx+B,aAAa,QAASx3B,KAAKkqB,UAAUq4B,EAAI,MACxDviD,KAAKg2D,UAAUx+B,aAAa,SAAUx3B,KAAKkqB,UAAUxJ,EAAI,MACzD1gB,KAAKg2D,UAAUx+B,aAAa,sBAAuBx3B,KAAKkqB,UAAU+rC,IAAMj2D,KAAKywB,WAAWk4B,aAAauN,0BACrGl2D,KAAKg2D,UAAUhqC,eAAe,+BAAgC,OAAQjQ,GACtE/b,KAAKssD,aAAar8C,YAAYjQ,KAAKg2D,UACvC,EACEtC,cAAc7wD,UAAUimD,iBAAmB,WACzC,OAAO9oD,KAAK4zD,UAChB,EAQEE,cAAcjxD,UAAY,CACxBszD,oBAAqB,SAA6BvjD,GAChD,IAAI1K,EACA0S,EAAM5a,KAAKo2D,eAAez1D,OAC9B,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAKo2D,eAAeluD,GAAG0gC,SAASh2B,EAExC,EACIyjD,2BAA4B,SAAoCzjD,GAG9D,IAFA,IACIgI,EAAM5a,KAAKo2D,eAAez1D,OADtB,EAEGia,GACT,GAAI5a,KAAKo2D,eAHH,GAGqBE,oBAAoB1jD,GAC7C,OAAO,EAGX,OAAO,CACb,EACI2jD,gBAAiB,WACf,GAAKv2D,KAAKo2D,eAAez1D,OAAzB,CAGA,IAAIuH,EACA0S,EAAM5a,KAAKqkB,OAAO1jB,OACtB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAKqkB,OAAOnc,GAAGu6B,GAAGuH,QAIpB,IAAK9hC,GAFL0S,EAAM5a,KAAKo2D,eAAez1D,QAEX,EAAGuH,GAAK,IACAlI,KAAKo2D,eAAeluD,GAAG6sC,cAAc/0C,KAAK4lC,eADvC19B,GAAK,GARrC,CAgBA,EACIsuD,uBAAwB,SAAgC5/B,GAItD,IAHA,IAAIqoB,EAAWj/C,KAAKy2D,kBAChBvuD,EAAI,EACJ0S,EAAMqkC,EAASt+C,OACZuH,EAAI0S,GAAK,CACd,GAAIqkC,EAAS/2C,GAAG0uB,OAASA,EACvB,OAAOqoB,EAAS/2C,GAAGs/B,IAErBt/B,GAAK,CACb,CACM,OAAO,CACb,EACIwuD,oBAAqB,SAA6B9/B,EAAM4Q,GAGtD,IAFA,IAAIyX,EAAWj/C,KAAKy2D,kBAChBvuD,EAAI+2C,EAASt+C,OACVuH,GAEL,GAAI+2C,EADJ/2C,GAAK,GACW0uB,OAASA,EAEvB,YADAqoB,EAAS/2C,GAAGs/B,IAAMA,GAItByX,EAAS50C,KAAK,IAAIwpD,iBAAiBj9B,EAAM4Q,GAC/C,EACIvZ,aAAc,SAAsBq6B,GAClCtoD,KAAKqoD,uBAAuBC,GAC5BtoD,KAAK0sD,kBAAkBpE,EAAKtoD,KAAK8nD,UACvC,GAGE,IAAI6O,YAAc,CAChB,EAAG,OACH,EAAG,QACH,EAAG,UAEDC,aAAe,CACjB,EAAG,QACH,EAAG,QACH,EAAG,SAGL,SAASC,aAAaC,EAAcC,EAAOtuB,GACzCzoC,KAAKg3D,OAAS,GACdh3D,KAAK29C,OAAS,GACd39C,KAAK82D,aAAeA,EACpB92D,KAAKi3D,KAAO,GACZj3D,KAAKyiC,GAAKgG,EACVzoC,KAAKk3D,IAAMH,EAIX/2D,KAAK+mC,cAAgB0B,EAAMvnC,EAI3B,IAFA,IAAIgH,EAAI,EACJ0S,EAAMk8C,EAAan2D,OAChBuH,EAAI0S,GAAK,CACd,GAAIk8C,EAAa5uD,GAAGu4C,OAAO3Z,kBAAkBnmC,OAAQ,CACnDX,KAAK+mC,aAAc,EACnB,KACR,CACM7+B,GAAK,CACX,CACA,CAKE,SAASivD,aAAavkD,EAAMmkD,GAC1B/2D,KAAK4S,KAAOA,EACZ5S,KAAKtD,KAAOkW,EAAKqR,GACjBjkB,KAAKoH,EAAI,GACTpH,KAAKk3D,IAAMH,EACX/2D,KAAKulC,MAAO,EACZvlC,KAAK2mB,QAAqB,IAAZ/T,EAAK8hD,GACnB10D,KAAKo3D,MAAQp1C,SAAS,QACtBhiB,KAAKq3D,OAAS,IAClB,CAME,SAASC,aAAa1gC,EAAMhkB,EAAMuc,EAAUkB,GAU1C,IAAInoB,EATJlI,KAAK42B,KAAOA,EACZ52B,KAAKylC,SAAU,EACfzlC,KAAKu3D,UAAYp6C,iBAAiBvK,EAAKjS,QACvCX,KAAKmvB,SAAWA,EAChBnvB,KAAKkB,GAAI,EACTlB,KAAKw3D,QAAU,GACfx3D,KAAKy3D,UAAY56C,iBAAiB,UAAWjK,EAAKjS,OAASiS,EAAKjS,OAAS,EAAI,GAC7EX,KAAK03D,WAAa76C,iBAAiB,UAAW,GAC9C7c,KAAKinC,6BAA6B5W,GAElC,IACI9b,EADAqG,EAAMhI,EAAKjS,QAAU,EAEzB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBqM,EAAOkyB,gBAAgBC,QAAQ9P,EAAMhkB,EAAK1K,GAAGgC,EAAG,EAAG,EAAGlK,MACtDA,KAAKkB,EAAIqT,EAAKrT,GAAKlB,KAAKkB,EACxBlB,KAAKu3D,UAAUrvD,GAAK,CAClBC,EAAGyK,EAAK1K,GAAGC,EACXX,EAAG+M,GAGFvU,KAAKkB,GACRlB,KAAKomC,UAAS,GAEhBpmC,KAAK+mC,YAAc/mC,KAAKkB,CAC5B,CA6BE,SAASy2D,mBAAmB/gC,EAAMhkB,EAAMglD,GACtC53D,KAAKinC,6BAA6BrQ,GAClC52B,KAAKomC,SAAWpmC,KAAKgnC,yBACrBhnC,KAAKqd,EAAIopB,gBAAgBC,QAAQ9P,EAAMhkB,EAAKyK,EAAG,EAAG,IAAMrd,MACxDA,KAAKuiD,EAAI9b,gBAAgBC,QAAQ9P,EAAMhkB,EAAK2vC,EAAG,EAAG,KAAMviD,MACxDA,KAAKoH,EAAI,IAAIkwD,aAAa1gC,EAAMhkB,EAAKxL,GAAK,CAAA,EAAI,MAAOpH,MACrDA,KAAKwmB,EAAIigB,gBAAgBC,QAAQ9P,EAAMhkB,EAAK4T,EAAG,EAAG,IAAKxmB,MACvDA,KAAKuE,MAAQqzD,EACb53D,KAAK+mC,cAAgB/mC,KAAK+mC,WAC9B,CAGE,SAAS8wB,iBAAiBjhC,EAAMhkB,EAAMglD,GACpC53D,KAAKinC,6BAA6BrQ,GAClC52B,KAAKomC,SAAWpmC,KAAKgnC,yBACrBhnC,KAAKqd,EAAIopB,gBAAgBC,QAAQ9P,EAAMhkB,EAAKyK,EAAG,EAAG,IAAMrd,MACxDA,KAAKwmB,EAAIigB,gBAAgBC,QAAQ9P,EAAMhkB,EAAK4T,EAAG,EAAG,IAAKxmB,MACvDA,KAAKuE,MAAQqzD,CACjB,CAGE,SAASE,eAAelhC,EAAMhkB,EAAMglD,GAClC53D,KAAKinC,6BAA6BrQ,GAClC52B,KAAKomC,SAAWpmC,KAAKgnC,yBACrBhnC,KAAKuE,MAAQqzD,CACjB,CAGE,SAASG,iBAAiBnhC,EAAMhkB,EAAMyd,GACpCrwB,KAAK4S,KAAOA,EACZ5S,KAAKwmB,EAAI3J,iBAAiB,SAAmB,EAATjK,EAAKpL,GACzC,IAAIwwD,EAAUplD,EAAK1R,EAAEA,EAAE,GAAG+G,EAAI2K,EAAK1R,EAAEA,EAAE,GAAG+G,EAAEtH,OAAkB,EAATiS,EAAKpL,EAAQoL,EAAK1R,EAAEA,EAAEP,OAAkB,EAATiS,EAAKpL,EACzFxH,KAAKqd,EAAIR,iBAAiB,UAAWm7C,GACrCh4D,KAAKi4D,OAAQ,EACbj4D,KAAKk4D,OAAQ,EACbl4D,KAAKm4D,aAAen4D,KAAKo4D,mBACzBp4D,KAAKq4D,YAAcL,EACnBh4D,KAAKinC,6BAA6B5W,GAClCrwB,KAAKuU,KAAOkyB,gBAAgBC,QAAQ9P,EAAMhkB,EAAK1R,EAAG,EAAG,KAAMlB,MAC3DA,KAAKkB,EAAIlB,KAAKuU,KAAKrT,EACnBlB,KAAKomC,UAAS,EAClB,CAkEE,SAASkyB,yBAAyB1hC,EAAMhkB,EAAMglD,GAC5C53D,KAAKinC,6BAA6BrQ,GAClC52B,KAAKomC,SAAWpmC,KAAKgnC,yBACrBhnC,KAAKu4D,iBAAiB3hC,EAAMhkB,EAAMglD,EACtC,CA8EE,SAASY,2BAA2B5hC,EAAMhkB,EAAMglD,GAC9C53D,KAAKinC,6BAA6BrQ,GAClC52B,KAAKomC,SAAWpmC,KAAKgnC,yBACrBhnC,KAAKuiD,EAAI9b,gBAAgBC,QAAQ9P,EAAMhkB,EAAK2vC,EAAG,EAAG,KAAMviD,MACxDA,KAAKoH,EAAI,IAAIkwD,aAAa1gC,EAAMhkB,EAAKxL,GAAK,CAAA,EAAI,MAAOpH,MACrDA,KAAKu4D,iBAAiB3hC,EAAMhkB,EAAMglD,GAClC53D,KAAK+mC,cAAgB/mC,KAAK+mC,WAC9B,CAGE,SAAS0xB,iBACPz4D,KAAK8kB,GAAK,GACV9kB,KAAK04D,aAAe,GACpB14D,KAAK24D,GAAK32C,SAAS,IACvB,CAEE,SAAS42C,iBAAiBnY,EAAQt2C,EAAIkmB,GACpCrwB,KAAK4W,UAAY,CACf6pC,OAAQA,EACRt2C,GAAIA,EACJkmB,UAAWA,GAEbrwB,KAAKi/C,SAAW,GAChBj/C,KAAK+mC,YAAc/mC,KAAK4W,UAAU6pC,OAAO3Z,kBAAkBnmC,QAAUX,KAAK4W,UAAUzM,GAAGu7B,gBAAgB/kC,MAC3G,CA9REk2D,aAAah0D,UAAUqxC,cAAgB,WACrCl0C,KAAK+mC,aAAc,CACvB,EAYEowB,aAAat0D,UAAUmnC,MAAQ,WAC7BhqC,KAAKoH,EAAI,GACTpH,KAAKulC,MAAO,CAChB,EA4BE+xB,aAAaz0D,UAAUujC,SAAW,SAAU8Q,GAC1C,IAAIl3C,KAAK42B,KAAKnG,WAAWgV,UAAYzlC,KAAKylC,SAAYyR,KAGtDl3C,KAAKylC,QAAUzlC,KAAK42B,KAAKnG,WAAWgV,QACpCzlC,KAAKgnC,2BACLhnC,KAAKulC,KAAOvlC,KAAKulC,MAAQ2R,EACrBl3C,KAAKulC,MAAM,CACb,IAAIr9B,EAAI,EACJ0S,EAAM5a,KAAKu3D,UAAU52D,OAIzB,IAHsB,QAAlBX,KAAKmvB,WACPnvB,KAAKw3D,QAAU,IAEZtvD,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACI,MAAxBlI,KAAKu3D,UAAUrvD,GAAGC,EACE,QAAlBnI,KAAKmvB,SACPnvB,KAAKw3D,SAAW,IAAMx3D,KAAKu3D,UAAUrvD,GAAGV,EAAE0C,EAE1ClK,KAAKy3D,UAAUvvD,GAAKlI,KAAKu3D,UAAUrvD,GAAGV,EAAE0C,EAG1ClK,KAAK03D,WAAW,GAAK13D,KAAKu3D,UAAUrvD,GAAGV,EAAE0C,CAGnD,CACA,EACEsQ,gBAAgB,CAACqsB,0BAA2BywB,cAY5C98C,gBAAgB,CAACqsB,0BAA2B8wB,oBAS5Cn9C,gBAAgB,CAACqsB,0BAA2BgxB,kBAO5Cr9C,gBAAgB,CAACqsB,0BAA2BixB,gBAgB5CC,iBAAiBl1D,UAAUg2D,cAAgB,SAAUt0B,EAAQ1L,GAI3D,IAHA,IAAI3wB,EAAI,EACJ0S,EAAM5a,KAAKqd,EAAE1c,OAAS,EAEnBuH,EAAI0S,GAAK,CAEd,GADOvH,KAAKmL,IAAI+lB,EAAW,EAAJr8B,GAASq8B,EAAgB,EAAT1L,EAAiB,EAAJ3wB,IACzC,IACT,OAAO,EAETA,GAAK,CACX,CACI,OAAO,CACX,EACE6vD,iBAAiBl1D,UAAUu1D,iBAAmB,WAC5C,GAAIp4D,KAAKqd,EAAE1c,OAAS,GAAMX,KAAKwmB,EAAE7lB,OAAS,EACxC,OAAO,EAET,GAAIX,KAAK4S,KAAK1R,EAAEA,EAAE,GAAG+G,EAGnB,IAFA,IAAIC,EAAI,EACJ0S,EAAM5a,KAAK4S,KAAK1R,EAAEA,EAAEP,OACjBuH,EAAI0S,GAAK,CACd,IAAK5a,KAAK64D,cAAc74D,KAAK4S,KAAK1R,EAAEA,EAAEgH,GAAGD,EAAGjI,KAAK4S,KAAKpL,GACpD,OAAO,EAETU,GAAK,CACb,MACW,IAAKlI,KAAK64D,cAAc74D,KAAK4S,KAAK1R,EAAEA,EAAGlB,KAAK4S,KAAKpL,GACtD,OAAO,EAET,OAAO,CACX,EACEuwD,iBAAiBl1D,UAAUujC,SAAW,SAAU8Q,GAK9C,GAJAl3C,KAAKuU,KAAK6xB,WACVpmC,KAAKulC,MAAO,EACZvlC,KAAKi4D,OAAQ,EACbj4D,KAAKk4D,OAAQ,EACTl4D,KAAKuU,KAAKgxB,MAAQ2R,EAAa,CACjC,IAAIhvC,EAEAo9B,EACA7mB,EAFA7D,EAAoB,EAAd5a,KAAK4S,KAAKpL,EAGpB,IAAKU,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBo9B,EAAOp9B,EAAI,GAAM,EAAI,IAAM,IAC3BuW,EAAMpL,KAAKC,MAAMtT,KAAKuU,KAAKrK,EAAEhC,GAAKo9B,GAC9BtlC,KAAKwmB,EAAEte,KAAOuW,IAChBze,KAAKwmB,EAAEte,GAAKuW,EACZze,KAAKi4D,OAAS/gB,GAGlB,GAAIl3C,KAAKqd,EAAE1c,OAET,IADAia,EAAM5a,KAAKuU,KAAKrK,EAAEvJ,OACbuH,EAAkB,EAAdlI,KAAK4S,KAAKpL,EAAOU,EAAI0S,EAAK1S,GAAK,EACtCo9B,EAAOp9B,EAAI,GAAM,EAAI,IAAM,EAC3BuW,EAAMvW,EAAI,GAAM,EAAImL,KAAKC,MAAuB,IAAjBtT,KAAKuU,KAAKrK,EAAEhC,IAAYlI,KAAKuU,KAAKrK,EAAEhC,GAC/DlI,KAAKqd,EAAEnV,EAAkB,EAAdlI,KAAK4S,KAAKpL,KAAWiX,IAClCze,KAAKqd,EAAEnV,EAAkB,EAAdlI,KAAK4S,KAAKpL,GAASiX,EAC9Bze,KAAKk4D,OAAShhB,GAIpBl3C,KAAKulC,MAAQ2R,CACnB,CACA,EACE18B,gBAAgB,CAACqsB,0BAA2BkxB,kBAO5CO,yBAAyBz1D,UAAU01D,iBAAmB,SAAU3hC,EAAMhkB,EAAMglD,GAC1E53D,KAAKqd,EAAIopB,gBAAgBC,QAAQ9P,EAAMhkB,EAAKyK,EAAG,EAAG,IAAMrd,MACxDA,KAAKiI,EAAIw+B,gBAAgBC,QAAQ9P,EAAMhkB,EAAK3K,EAAG,EAAG,KAAMjI,MACxDA,KAAKX,EAAIonC,gBAAgBC,QAAQ9P,EAAMhkB,EAAKvT,EAAG,EAAG,KAAMW,MACxDA,KAAK0gB,EAAI+lB,gBAAgBC,QAAQ9P,EAAMhkB,EAAK8N,GAAK,CAC/Cxf,EAAG,GACF,EAAG,IAAMlB,MACZA,KAAKimB,EAAIwgB,gBAAgBC,QAAQ9P,EAAMhkB,EAAKqT,GAAK,CAC/C/kB,EAAG,GACF,EAAG0d,UAAW5e,MACjBA,KAAK8J,EAAI,IAAIiuD,iBAAiBnhC,EAAMhkB,EAAK9I,EAAG9J,MAC5CA,KAAKuE,MAAQqzD,EACb53D,KAAK84D,MAAQ,GACb94D,KAAK+4D,gBAAgBnB,EAAQR,MAAOxkD,GACpC5S,KAAKg5D,mBAAmBpmD,EAAMglD,GAC9B53D,KAAK+mC,cAAgB/mC,KAAK+mC,WAC9B,EACEuxB,yBAAyBz1D,UAAUk2D,gBAAkB,SAAUE,EAAarmD,GAC1E,IAAIsmD,EAAa34C,kBACb44C,EAAQn3C,SAAoB,IAAXpP,EAAK5K,EAAU,iBAAmB,kBACvDmxD,EAAM3hC,aAAa,KAAM0hC,GACzBC,EAAM3hC,aAAa,eAAgB,OACnC2hC,EAAM3hC,aAAa,gBAAiB,kBACpC,IACI7D,EACAnQ,EACAC,EAHAq1C,EAAQ,GAKZ,IADAr1C,EAAkB,EAAX7Q,EAAK9I,EAAEtC,EACTgc,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBmQ,EAAO3R,SAAS,QAChBm3C,EAAMlpD,YAAY0jB,GAClBmlC,EAAMzuD,KAAKspB,GAEbslC,EAAYzhC,aAAyB,OAAZ5kB,EAAKqR,GAAc,OAAS,SAAU,OAAS3J,kBAAoB,IAAM4+C,EAAa,KAC/Gl5D,KAAKo5D,GAAKD,EACVn5D,KAAKq5D,IAAMP,CACf,EACER,yBAAyBz1D,UAAUm2D,mBAAqB,SAAUpmD,EAAMglD,GACtE,GAAI53D,KAAK8J,EAAEuuD,cAAgBr4D,KAAK8J,EAAEquD,aAAc,CAC9C,IAAIxkC,EACAnQ,EACAC,EACA2sC,EAAOpuC,SAAS,QAChBmtC,EAAcntC,SAAS,QAC3BouC,EAAKngD,YAAYk/C,GACjB,IAAImK,EAAY/4C,kBACZg5C,EAASh5C,kBACb6vC,EAAK54B,aAAa,KAAM+hC,GACxB,IAAIC,EAASx3C,SAAoB,IAAXpP,EAAK5K,EAAU,iBAAmB,kBACxDwxD,EAAOhiC,aAAa,KAAM8hC,GAC1BE,EAAOhiC,aAAa,eAAgB,OACpCgiC,EAAOhiC,aAAa,gBAAiB,kBACrC/T,EAAO7Q,EAAK9I,EAAE5I,EAAEA,EAAE,GAAG+G,EAAI2K,EAAK9I,EAAE5I,EAAEA,EAAE,GAAG+G,EAAEtH,OAASiS,EAAK9I,EAAE5I,EAAEA,EAAEP,OAC7D,IAAIm4D,EAAQ94D,KAAK84D,MACjB,IAAKt1C,EAAe,EAAX5Q,EAAK9I,EAAEtC,EAAOgc,EAAIC,EAAMD,GAAK,GACpCmQ,EAAO3R,SAAS,SACXwV,aAAa,aAAc,oBAChCgiC,EAAOvpD,YAAY0jB,GACnBmlC,EAAMzuD,KAAKspB,GAEbw7B,EAAY33B,aAAyB,OAAZ5kB,EAAKqR,GAAc,OAAS,SAAU,OAAS3J,kBAAoB,IAAMg/C,EAAY,KAC9F,OAAZ1mD,EAAKqR,KACPkrC,EAAY33B,aAAa,iBAAkBm/B,YAAY/jD,EAAK6mD,IAAM,IAClEtK,EAAY33B,aAAa,kBAAmBo/B,aAAahkD,EAAKovC,IAAM,IACpD,IAAZpvC,EAAKovC,IACPmN,EAAY33B,aAAa,oBAAqB5kB,EAAKmvC,KAGvD/hD,KAAK05D,GAAKF,EACVx5D,KAAK25D,GAAKvJ,EACVpwD,KAAK45D,IAAMd,EACX94D,KAAKu5D,OAASA,EACd3B,EAAQP,OAASlI,CACvB,CACA,EACE30C,gBAAgB,CAACqsB,0BAA2ByxB,0BAU5C99C,gBAAgB,CAAC89C,yBAA0BzxB,0BAA2B2xB,4BAkBtE,IAAIqB,iBAAmB,SAA0B3H,EAAWvxD,EAAQgmB,EAAQswB,GAC1E,GAAe,IAAXt2C,EACF,MAAO,GAET,IAGIuH,EAHA4xD,EAAK5H,EAAU70C,EACf08C,EAAK7H,EAAUhqD,EACfwiC,EAAKwnB,EAAUhoD,EAEf8vD,EAAc,KAAO/iB,EAAIvF,wBAAwBhH,EAAG,GAAG,GAAIA,EAAG,GAAG,IACrE,IAAKxiC,EAAI,EAAGA,EAAIvH,EAAQuH,GAAK,EAC3B8xD,GAAe,KAAO/iB,EAAIvF,wBAAwBooB,EAAG5xD,EAAI,GAAG,GAAI4xD,EAAG5xD,EAAI,GAAG,IAAM,IAAM+uC,EAAIvF,wBAAwBqoB,EAAG7xD,GAAG,GAAI6xD,EAAG7xD,GAAG,IAAM,IAAM+uC,EAAIvF,wBAAwBhH,EAAGxiC,GAAG,GAAIwiC,EAAGxiC,GAAG,IAM5L,OAJIye,GAAUhmB,IACZq5D,GAAe,KAAO/iB,EAAIvF,wBAAwBooB,EAAG5xD,EAAI,GAAG,GAAI4xD,EAAG5xD,EAAI,GAAG,IAAM,IAAM+uC,EAAIvF,wBAAwBqoB,EAAG,GAAG,GAAIA,EAAG,GAAG,IAAM,IAAM9iB,EAAIvF,wBAAwBhH,EAAG,GAAG,GAAIA,EAAG,GAAG,IAC1LsvB,GAAe,KAEVA,CACX,EAEMC,oBAAsB,WACxB,IAAIC,EAAkB,IAAIztB,OACtB0tB,EAAgB,IAAI1tB,OA2BxB,SAAS2tB,EAAuBC,EAAWC,EAAUtI,IAC/CA,GAAgBsI,EAAS1jD,UAAUzM,GAAGo7B,OACxC+0B,EAAS1jD,UAAUyZ,UAAUmH,aAAa,UAAW8iC,EAAS1jD,UAAUzM,GAAGD,IAEzE8nD,GAAgBsI,EAAS1jD,UAAU6pC,OAAOlb,OAC5C+0B,EAAS1jD,UAAUyZ,UAAUmH,aAAa,YAAa8iC,EAAS1jD,UAAU6pC,OAAOv2C,EAAE4nC,UAE3F,CACI,SAASyoB,IAAa,CACtB,SAASC,EAAWH,EAAWC,EAAUtI,GACvC,IAAIxuC,EACAC,EACAg3C,EACAC,EACAxI,EACArkB,EAGAnE,EACAuN,EACA0jB,EACAz5D,EALA05D,EAAON,EAAS3c,OAAOh9C,OACvBu2D,EAAMoD,EAASpD,IAKnB,IAAKrpB,EAAI,EAAGA,EAAI+sB,EAAM/sB,GAAK,EAAG,CAE5B,GADA6sB,EAASJ,EAAS73B,GAAG8C,MAAQysB,EACzBsI,EAAS3c,OAAO9P,GAAGqpB,IAAMA,EAAK,CAIhC,IAHAjgB,EAAMkjB,EAAcnwB,QACpB2wB,EAAazD,EAAMoD,EAAS3c,OAAO9P,GAAGqpB,IACtCh2D,EAAIo5D,EAASxD,aAAan2D,OAAS,GAC3B+5D,GAAUC,EAAa,GAC7BD,EAASJ,EAASxD,aAAa51D,GAAGu/C,OAAOlb,MAAQm1B,EACjDC,GAAc,EACdz5D,GAAK,EAEP,GAAIw5D,EAGF,IAFAC,EAAazD,EAAMoD,EAAS3c,OAAO9P,GAAGqpB,IACtCh2D,EAAIo5D,EAASxD,aAAan2D,OAAS,EAC5Bg6D,EAAa,GAClB1jB,EAAIjH,SAASsqB,EAASxD,aAAa51D,GAAGu/C,OAAOv2C,GAC7CywD,GAAc,EACdz5D,GAAK,CAGnB,MACU+1C,EAAMijB,EAIR,GADAz2C,GADAimB,EAAQ4wB,EAAS73B,GAAGiH,OACP7O,QACT6/B,EAAQ,CAEV,IADAD,EAAwB,GACnBj3C,EAAI,EAAGA,EAAIC,EAAMD,GAAK,GACzB0uC,EAAYxoB,EAAMrlB,OAAOb,KACR0uC,EAAUr3B,UACzB4/B,GAAyBZ,iBAAiB3H,EAAWA,EAAUr3B,QAASq3B,EAAU1rC,EAAGywB,IAGzFqjB,EAAStD,OAAOnpB,GAAK4sB,CAC/B,MACUA,EAAwBH,EAAStD,OAAOnpB,GAE1CysB,EAAS3c,OAAO9P,GAAGzmC,IAAsB,IAAjBizD,EAAU3F,GAAc,GAAK+F,EACrDH,EAAS3c,OAAO9P,GAAGtI,KAAOm1B,GAAUJ,EAAS3c,OAAO9P,GAAGtI,IAC/D,CACA,CACI,SAASs1B,EAAWR,EAAWC,EAAUtI,GACvC,IAAI8I,EAAYR,EAAS/1D,OACrB+1D,EAAS9zC,EAAE+e,MAAQysB,IACrB8I,EAAU1D,MAAM5/B,aAAa,OAAQ,OAASzZ,QAAQu8C,EAAS9zC,EAAEtc,EAAE,IAAM,IAAM6T,QAAQu8C,EAAS9zC,EAAEtc,EAAE,IAAM,IAAM6T,QAAQu8C,EAAS9zC,EAAEtc,EAAE,IAAM,MAEzIowD,EAASj9C,EAAEkoB,MAAQysB,IACrB8I,EAAU1D,MAAM5/B,aAAa,eAAgB8iC,EAASj9C,EAAEnT,EAEhE,CACI,SAAS6wD,EAAqBV,EAAWC,EAAUtI,GACjDgJ,EAAeX,EAAWC,EAAUtI,GACpCiJ,EAAaZ,EAAWC,EAAUtI,EACxC,CACI,SAASgJ,EAAeX,EAAWC,EAAUtI,GAC3C,IAkBI8G,EACA5wD,EACA0S,EACA+Y,EAqCE0X,EA1DF8tB,EAAQmB,EAASlB,GACjB8B,EAAaZ,EAASxwD,EAAEuuD,YACxBl8B,EAAMm+B,EAASryD,EAAEiC,EACjBkyB,EAAMk+B,EAASj7D,EAAE6K,EACrB,GAAIowD,EAASj9C,EAAEkoB,MAAQysB,EAAc,CACnC,IAAIn3C,EAAwB,OAAjBw/C,EAAUp2C,GAAc,eAAiB,iBACpDq2C,EAAS/1D,MAAM6yD,MAAM5/B,aAAa3c,EAAMy/C,EAASj9C,EAAEnT,EAC3D,CACM,GAAIowD,EAASryD,EAAEs9B,MAAQysB,EAAc,CACnC,IAAImJ,EAAwB,IAAhBd,EAAUryD,EAAU,KAAO,KACnCozD,EAAkB,OAAVD,EAAiB,KAAO,KACpChC,EAAM3hC,aAAa2jC,EAAOh/B,EAAI,IAC9Bg9B,EAAM3hC,aAAa4jC,EAAOj/B,EAAI,IAC1B++B,IAAeZ,EAASxwD,EAAEquD,eAC5BmC,EAASZ,GAAGliC,aAAa2jC,EAAOh/B,EAAI,IACpCm+B,EAASZ,GAAGliC,aAAa4jC,EAAOj/B,EAAI,IAE9C,CAKM,GAAIm+B,EAASxwD,EAAEmuD,OAASjG,EAAc,CACpC8G,EAAQwB,EAASjB,IACjB,IAAIgC,EAAUf,EAASxwD,EAAE0c,EAEzB,IADA5L,EAAMk+C,EAAMn4D,OACPuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,GACxByrB,EAAOmlC,EAAM5wD,IACRsvB,aAAa,SAAU6jC,EAAY,EAAJnzD,GAAS,KAC7CyrB,EAAK6D,aAAa,aAAc,OAAS6jC,EAAY,EAAJnzD,EAAQ,GAAK,IAAMmzD,EAAY,EAAJnzD,EAAQ,GAAK,IAAMmzD,EAAY,EAAJnzD,EAAQ,GAAK,IAE9H,CACM,GAAIgzD,IAAeZ,EAASxwD,EAAEouD,OAASlG,GAAe,CACpD,IAAIsJ,EAAUhB,EAASxwD,EAAEuT,EAOzB,IADAzC,GAJEk+C,EADEwB,EAASxwD,EAAEquD,aACLmC,EAASjB,IAETiB,EAASV,KAEPj5D,OACPuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxByrB,EAAOmlC,EAAM5wD,GACRoyD,EAASxwD,EAAEquD,cACdxkC,EAAK6D,aAAa,SAAU8jC,EAAY,EAAJpzD,GAAS,KAE/CyrB,EAAK6D,aAAa,eAAgB8jC,EAAY,EAAJpzD,EAAQ,GAE5D,CACM,GAAoB,IAAhBmyD,EAAUryD,GACRsyD,EAASj7D,EAAEkmC,MAAQysB,KACrBmH,EAAM3hC,aAAa,KAAM4E,EAAI,IAC7B+8B,EAAM3hC,aAAa,KAAM4E,EAAI,IACzB8+B,IAAeZ,EAASxwD,EAAEquD,eAC5BmC,EAASZ,GAAGliC,aAAa,KAAM4E,EAAI,IACnCk+B,EAASZ,GAAGliC,aAAa,KAAM4E,EAAI,WAYvC,IAPIk+B,EAASryD,EAAEs9B,MAAQ+0B,EAASj7D,EAAEkmC,MAAQysB,KACxC3mB,EAAMh4B,KAAKyK,KAAKzK,KAAKuK,IAAIue,EAAI,GAAKC,EAAI,GAAI,GAAK/oB,KAAKuK,IAAIue,EAAI,GAAKC,EAAI,GAAI,IACzE+8B,EAAM3hC,aAAa,IAAK6T,GACpB6vB,IAAeZ,EAASxwD,EAAEquD,cAC5BmC,EAASZ,GAAGliC,aAAa,IAAK6T,IAG9BivB,EAASryD,EAAEs9B,MAAQ+0B,EAASj7D,EAAEkmC,MAAQ+0B,EAAS55C,EAAE6kB,MAAQ+0B,EAASr0C,EAAEsf,MAAQysB,EAAc,CACvF3mB,IACHA,EAAMh4B,KAAKyK,KAAKzK,KAAKuK,IAAIue,EAAI,GAAKC,EAAI,GAAI,GAAK/oB,KAAKuK,IAAIue,EAAI,GAAKC,EAAI,GAAI,KAE3E,IAAIm/B,EAAMloD,KAAK8wB,MAAM/H,EAAI,GAAKD,EAAI,GAAIC,EAAI,GAAKD,EAAI,IAC/CwD,EAAU26B,EAAS55C,EAAExW,EACrBy1B,GAAW,EACbA,EAAU,IACDA,QACTA,GAAU,KAEZ,IAAImc,EAAOzQ,EAAM1L,EACb3gC,EAAIqU,KAAKoxB,IAAI82B,EAAMjB,EAASr0C,EAAE/b,GAAK4xC,EAAO3f,EAAI,GAC9C3yB,EAAI6J,KAAKuwB,IAAI23B,EAAMjB,EAASr0C,EAAE/b,GAAK4xC,EAAO3f,EAAI,GAClDg9B,EAAM3hC,aAAa,KAAMx4B,GACzBm6D,EAAM3hC,aAAa,KAAMhuB,GACrB0xD,IAAeZ,EAASxwD,EAAEquD,eAC5BmC,EAASZ,GAAGliC,aAAa,KAAMx4B,GAC/Bs7D,EAASZ,GAAGliC,aAAa,KAAMhuB,GAE3C,CAGA,CACI,SAASyxD,EAAaZ,EAAWC,EAAUtI,GACzC,IAAI8I,EAAYR,EAAS/1D,MACrB6C,EAAIkzD,EAASlzD,EACbA,IAAMA,EAAEm+B,MAAQysB,IAAiB5qD,EAAEowD,UACrCsD,EAAU1D,MAAM5/B,aAAa,mBAAoBpwB,EAAEowD,SACnDsD,EAAU1D,MAAM5/B,aAAa,oBAAqBpwB,EAAEswD,WAAW,KAE7D4C,EAAS9zC,IAAM8zC,EAAS9zC,EAAE+e,MAAQysB,IACpC8I,EAAU1D,MAAM5/B,aAAa,SAAU,OAASzZ,QAAQu8C,EAAS9zC,EAAEtc,EAAE,IAAM,IAAM6T,QAAQu8C,EAAS9zC,EAAEtc,EAAE,IAAM,IAAM6T,QAAQu8C,EAAS9zC,EAAEtc,EAAE,IAAM,MAE3IowD,EAASj9C,EAAEkoB,MAAQysB,IACrB8I,EAAU1D,MAAM5/B,aAAa,iBAAkB8iC,EAASj9C,EAAEnT,IAExDowD,EAAS/X,EAAEhd,MAAQysB,KACrB8I,EAAU1D,MAAM5/B,aAAa,eAAgB8iC,EAAS/X,EAAEr4C,GACpD4wD,EAAUzD,QACZyD,EAAUzD,OAAO7/B,aAAa,eAAgB8iC,EAAS/X,EAAEr4C,GAGnE,CACI,MArNS,CACPsxD,qBAEF,SAA8B5oD,GAC5B,OAAQA,EAAKqR,IACX,IAAK,KACH,OAAO42C,EACT,IAAK,KACH,OAAOG,EACT,IAAK,KACH,OAAOD,EACT,IAAK,KACH,OAAOE,EACT,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACH,OAAOT,EACT,IAAK,KACH,OAAOJ,EACT,IAAK,KACH,OAAOG,EACT,QACE,OAAO,KAEjB,EA6LA,CAzN4B,GA2N1B,SAASkB,gBAAgB7oD,EAAM6d,EAAYlM,GAEzCvkB,KAAKqkB,OAAS,GAEdrkB,KAAK8rD,WAAal5C,EAAKyR,OAEvBrkB,KAAK07D,WAAa,GAElB17D,KAAKo2D,eAAiB,GAEtBp2D,KAAK+rD,UAAY,GAEjB/rD,KAAKy2D,kBAAoB,GAEzBz2D,KAAK27D,iBAAmB,GACxB37D,KAAK2zD,YAAY/gD,EAAM6d,EAAYlM,GAGnCvkB,KAAK04D,aAAe,EAExB,CAoSE,SAASkD,YAAYv+C,EAAGw+C,EAAI/U,EAAIgV,EAAIhuB,EAAGtmC,GACrCxH,KAAKqd,EAAIA,EACTrd,KAAK67D,GAAKA,EACV77D,KAAK8mD,GAAKA,EACV9mD,KAAK87D,GAAKA,EACV97D,KAAK8tC,EAAIA,EACT9tC,KAAKwH,EAAIA,EACTxH,KAAKulC,KAAO,CACVloB,GAAG,EACHw+C,KAAMA,EACN/U,KAAMA,EACNgV,KAAMA,EACNhuB,GAAG,EACHtmC,GAAG,EAET,CA0CE,SAASu0D,aAAanlC,EAAMhkB,GAC1B5S,KAAKg8D,SAAW/hD,oBAChBja,KAAK6gC,GAAK,GACV7gC,KAAKkK,EAAI,GACTlK,KAAK8lC,IAAK,EACV9lC,KAAK4lC,eAAgB,EACrB5lC,KAAKulC,MAAO,EACR3yB,EAAKxL,GAAKwL,EAAKxL,EAAEu/B,MACnB/zB,EAAKxL,EAAIwvB,EAAKnG,WAAWmW,YAAYF,QAAQ9zB,EAAKxL,IAEpDpH,KAAK4S,KAAOA,EACZ5S,KAAK42B,KAAOA,EACZ52B,KAAKukB,KAAOvkB,KAAK42B,KAAKrS,KACtBvkB,KAAKi8D,UAAY,EACjBj8D,KAAKk8D,WAAY,EACjBl8D,KAAKm8D,gBAAkB,EACvBn8D,KAAK0lC,gBAAkB,GACvB1lC,KAAKo8D,YAAc,CACjBC,OAAQ,EACRC,SAAUt8D,KAAKu8D,gBACfhzD,EAAG,GACHq0C,OAAQ,GACRC,QAAS,GACTie,GAAI,GACJt4C,EAAG,GACHg5C,cAAe,GACf3uB,EAAG,GACH4uB,GAAI,EACJC,WAAY,GACZC,GAAI,GACJjD,GAAI,GACJzxD,EAAG,GACH6+C,GAAI,GACJ+U,GAAI,EACJ7zD,EAAG,EACHg2C,GAAI,EACJrQ,GAAI,EACJivB,GAAI,KACJC,eAAe,EACfC,iBAAiB,EACjBC,iBAAiB,EACjBC,QAAS,EACTC,UAAW,EACXC,UAAW,GACXC,gBAAiB,EACjBr2C,YAAY,GAEd9mB,KAAKo9D,SAASp9D,KAAKo8D,YAAap8D,KAAK4S,KAAKxL,EAAElG,EAAE,GAAG+G,GAC5CjI,KAAKq9D,kBACRr9D,KAAKs9D,iBAAiBt9D,KAAKo8D,YAEjC,CA/YE5hD,gBAAgB,CAACyvC,YAAagF,iBAAkBsE,eAAgBO,cAAeN,iBAAkBtJ,aAAcuJ,sBAAuBgI,iBACtIA,gBAAgB54D,UAAU06D,qBAAuB,WAAY,EAC7D9B,gBAAgB54D,UAAU26D,eAAiB,IAAI/wB,OAC/CgvB,gBAAgB54D,UAAU46D,yBAA2B,WAAY,EACjEhC,gBAAgB54D,UAAUizD,cAAgB,WACxC91D,KAAK09D,aAAa19D,KAAK8rD,WAAY9rD,KAAK+rD,UAAW/rD,KAAK04D,aAAc14D,KAAKssD,aAAc,EAAG,IAAI,GAChGtsD,KAAK29D,oBACT,EAKElC,gBAAgB54D,UAAU86D,mBAAqB,WAC7C,IAAIz1D,EAEAugC,EACAjlB,EAEAjf,EAJAqW,EAAM5a,KAAKqkB,OAAO1jB,OAGlB8iB,EAAOzjB,KAAK07D,WAAW/6D,OAEvBi9D,EAAa,GACbC,GAAc,EAClB,IAAKr6C,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAAG,CAI5B,IAHAjf,EAAQvE,KAAK07D,WAAWl4C,GACxBq6C,GAAc,EACdD,EAAWj9D,OAAS,EACfuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,GAEY,KADpCugC,EAAQzoC,KAAKqkB,OAAOnc,IACVy1C,OAAOp2B,QAAQhjB,KACvBq5D,EAAWvzD,KAAKo+B,GAChBo1B,EAAcp1B,EAAM1B,aAAe82B,GAGnCD,EAAWj9D,OAAS,GAAKk9D,GAC3B79D,KAAK89D,oBAAoBF,EAEjC,CACA,EACEnC,gBAAgB54D,UAAUi7D,oBAAsB,SAAUz5C,GACxD,IAAInc,EACA0S,EAAMyJ,EAAO1jB,OACjB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBmc,EAAOnc,GAAGgsC,eAEhB,EACEunB,gBAAgB54D,UAAUk7D,mBAAqB,SAAUnrD,EAAMmkD,GAE7D,IAAIiH,EACApG,EAAU,IAAIT,aAAavkD,EAAMmkD,GACjCkC,EAAcrB,EAAQR,MAuC1B,MAtCgB,OAAZxkD,EAAKqR,GACP+5C,EAAc,IAAIrG,mBAAmB33D,KAAM4S,EAAMglD,GAC5B,OAAZhlD,EAAKqR,GACd+5C,EAAc,IAAInG,iBAAiB73D,KAAM4S,EAAMglD,GAC1B,OAAZhlD,EAAKqR,IAA2B,OAAZrR,EAAKqR,IAElC+5C,EAAc,IADwB,OAAZprD,EAAKqR,GAAcq0C,yBAA2BE,4BAClCx4D,KAAM4S,EAAMglD,GAClD53D,KAAKywB,WAAWC,KAAKzgB,YAAY+tD,EAAY5E,IACzC4E,EAAYzE,SACdv5D,KAAKywB,WAAWC,KAAKzgB,YAAY+tD,EAAYrE,IAC7C35D,KAAKywB,WAAWC,KAAKzgB,YAAY+tD,EAAYtE,IAC7CT,EAAYzhC,aAAa,OAAQ,OAASld,kBAAoB,IAAM0jD,EAAYzE,OAAS,OAEtE,OAAZ3mD,EAAKqR,KACd+5C,EAAc,IAAIlG,eAAe93D,KAAM4S,EAAMglD,IAE/B,OAAZhlD,EAAKqR,IAA2B,OAAZrR,EAAKqR,KAC3Bg1C,EAAYzhC,aAAa,iBAAkBm/B,YAAY/jD,EAAK6mD,IAAM,IAClER,EAAYzhC,aAAa,kBAAmBo/B,aAAahkD,EAAKovC,IAAM,IACpEiX,EAAYzhC,aAAa,eAAgB,KACzB,IAAZ5kB,EAAKovC,IACPiX,EAAYzhC,aAAa,oBAAqB5kB,EAAKmvC,KAGxC,IAAXnvC,EAAK+N,GACPs4C,EAAYzhC,aAAa,YAAa,WAEpC5kB,EAAK6hD,IACPwE,EAAYzhC,aAAa,KAAM5kB,EAAK6hD,IAElC7hD,EAAKgU,IACPqyC,EAAYzhC,aAAa,QAAS5kB,EAAKgU,IAErChU,EAAKw5C,KACP6M,EAAY10D,MAAM,kBAAoB0kD,aAAar2C,EAAKw5C,KAE1DpsD,KAAK07D,WAAWrxD,KAAKutD,GACrB53D,KAAKi+D,sBAAsBrrD,EAAMorD,GAC1BA,CACX,EACEvC,gBAAgB54D,UAAUq7D,mBAAqB,SAAUtrD,GACvD,IAAIorD,EAAc,IAAIvF,eAUtB,OATI7lD,EAAK6hD,IACPuJ,EAAYrF,GAAGnhC,aAAa,KAAM5kB,EAAK6hD,IAErC7hD,EAAKgU,IACPo3C,EAAYrF,GAAGnhC,aAAa,QAAS5kB,EAAKgU,IAExChU,EAAKw5C,KACP4R,EAAYrF,GAAGp0D,MAAM,kBAAoB0kD,aAAar2C,EAAKw5C,KAEtD4R,CACX,EACEvC,gBAAgB54D,UAAUs7D,uBAAyB,SAAUvrD,EAAMyd,GACjE,IAAI+tC,EAAoBhoB,yBAAyBqB,qBAAqBz3C,KAAM4S,EAAM5S,MAC9Eg+D,EAAc,IAAIpF,iBAAiBwF,EAAmBA,EAAkB/gD,EAAGgT,GAE/E,OADArwB,KAAKi+D,sBAAsBrrD,EAAMorD,GAC1BA,CACX,EACEvC,gBAAgB54D,UAAUw7D,mBAAqB,SAAUzrD,EAAM0rD,EAAiBvH,GAC9E,IAAI9yC,EAAK,EACO,OAAZrR,EAAKqR,GACPA,EAAK,EACgB,OAAZrR,EAAKqR,GACdA,EAAK,EACgB,OAAZrR,EAAKqR,KACdA,EAAK,GAEP,IACI+5C,EAAc,IAAInH,aAAayH,EAAiBvH,EADhC9tB,qBAAqB4mB,aAAa7vD,KAAM4S,EAAMqR,EAAIjkB,OAKtE,OAHAA,KAAKqkB,OAAOha,KAAK2zD,GACjBh+D,KAAKm2D,oBAAoB6H,GACzBh+D,KAAKi+D,sBAAsBrrD,EAAMorD,GAC1BA,CACX,EACEvC,gBAAgB54D,UAAUo7D,sBAAwB,SAAUrrD,EAAM3B,GAGhE,IAFA,IAAI/I,EAAI,EACJ0S,EAAM5a,KAAK27D,iBAAiBh7D,OACzBuH,EAAI0S,GAAK,CACd,GAAI5a,KAAK27D,iBAAiBzzD,GAAG+I,UAAYA,EACvC,OAEF/I,GAAK,CACX,CACIlI,KAAK27D,iBAAiBtxD,KAAK,CACzByY,GAAIm3C,oBAAoBuB,qBAAqB5oD,GAC7C3B,QAASA,EACT2B,KAAMA,GAEZ,EACE6oD,gBAAgB54D,UAAU07D,iBAAmB,SAAUP,GACrD,IACIx6C,EADAzG,EAAMihD,EAAYrgB,OAElBl6B,EAAOzjB,KAAK07D,WAAW/6D,OAC3B,IAAK6iB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,GACe,IAApCzG,EAAIwK,QAAQvnB,KAAK07D,WAAWl4C,KAAexjB,KAAK07D,WAAWl4C,GAAGmD,QAChE5J,EAAI1S,KAAKrK,KAAK07D,WAAWl4C,GAGjC,EACEi4C,gBAAgB54D,UAAUm9C,aAAe,WAEvC,IAAI93C,EADJlI,KAAK4lC,eAAgB,EAErB,IAAIhrB,EAAM5a,KAAK+rD,UAAUprD,OACzB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAK04D,aAAaxwD,GAAKlI,KAAK+rD,UAAU7jD,GAKxC,IAHAlI,KAAK09D,aAAa19D,KAAK8rD,WAAY9rD,KAAK+rD,UAAW/rD,KAAK04D,aAAc14D,KAAKssD,aAAc,EAAG,IAAI,GAChGtsD,KAAK29D,qBACL/iD,EAAM5a,KAAK8mC,kBAAkBnmC,OACxBuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAK8mC,kBAAkB5+B,GAAGk+B,WAE5BpmC,KAAKu2D,iBACT,EACEkF,gBAAgB54D,UAAU66D,aAAe,SAAU3gD,EAAKgvC,EAAW2M,EAAcroC,EAAW0mC,EAAOD,EAAcn4D,GAC/G,IACIuJ,EAEAsb,EACAC,EAGA+6C,EACAC,EACAC,EATAJ,EAAkB,GAAGz5D,OAAOiyD,GAE5Bl8C,EAAMmC,EAAIpc,OAAS,EAGnBg+D,EAAY,GACZC,EAAe,GAInB,IAAK12D,EAAI0S,EAAK1S,GAAK,EAAGA,GAAK,EAAG,CAO5B,IANAw2D,EAAe1+D,KAAKw2D,uBAAuBz5C,EAAI7U,KAI7C6jD,EAAU7jD,GAAKwwD,EAAagG,EAAe,GAF3C3hD,EAAI7U,GAAGq3C,QAAU5gD,EAID,OAAdoe,EAAI7U,GAAG+b,IAA6B,OAAdlH,EAAI7U,GAAG+b,IAA6B,OAAdlH,EAAI7U,GAAG+b,IAA6B,OAAdlH,EAAI7U,GAAG+b,IAA6B,OAAdlH,EAAI7U,GAAG+b,GAC5Fy6C,EAGH3S,EAAU7jD,GAAG3D,MAAMoiB,OAAS5J,EAAI7U,GAAGwsD,GAFnC3I,EAAU7jD,GAAKlI,KAAK+9D,mBAAmBhhD,EAAI7U,GAAI6uD,GAI7Ch6C,EAAI7U,GAAGq3C,SACLwM,EAAU7jD,GAAG3D,MAAM6yD,MAAMrU,aAAe1yB,GAC1CA,EAAUpgB,YAAY87C,EAAU7jD,GAAG3D,MAAM6yD,OAG7CuH,EAAUt0D,KAAK0hD,EAAU7jD,GAAG3D,YACvB,GAAkB,OAAdwY,EAAI7U,GAAG+b,GAAa,CAC7B,GAAKy6C,EAIH,IADAj7C,EAAOsoC,EAAU7jD,GAAG4c,GAAGnkB,OAClB6iB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBuoC,EAAU7jD,GAAGwwD,aAAal1C,GAAKuoC,EAAU7jD,GAAG4c,GAAGtB,QAJjDuoC,EAAU7jD,GAAKlI,KAAKk+D,mBAAmBnhD,EAAI7U,IAO7ClI,KAAK09D,aAAa3gD,EAAI7U,GAAG4c,GAAIinC,EAAU7jD,GAAG4c,GAAIinC,EAAU7jD,GAAGwwD,aAAc3M,EAAU7jD,GAAGywD,GAAI5B,EAAQ,EAAGuH,EAAiB3/D,GAClHoe,EAAI7U,GAAGq3C,SACLwM,EAAU7jD,GAAGywD,GAAG5V,aAAe1yB,GACjCA,EAAUpgB,YAAY87C,EAAU7jD,GAAGywD,GAG/C,KAA+B,OAAd57C,EAAI7U,GAAG+b,IACXy6C,IACH3S,EAAU7jD,GAAKlI,KAAKm+D,uBAAuBphD,EAAI7U,GAAImoB,IAErDmuC,EAAmBzS,EAAU7jD,GAAG0O,UAChC0nD,EAAgBj0D,KAAKm0D,IACE,OAAdzhD,EAAI7U,GAAG+b,IAA6B,OAAdlH,EAAI7U,GAAG+b,IAA6B,OAAdlH,EAAI7U,GAAG+b,IAA6B,OAAdlH,EAAI7U,GAAG+b,IAC7Ey6C,IACH3S,EAAU7jD,GAAKlI,KAAKq+D,mBAAmBthD,EAAI7U,GAAIo2D,EAAiBvH,IAElE/2D,KAAKu+D,iBAAiBxS,EAAU7jD,KACT,OAAd6U,EAAI7U,GAAG+b,IAA6B,OAAdlH,EAAI7U,GAAG+b,IAA6B,OAAdlH,EAAI7U,GAAG+b,IAA6B,OAAdlH,EAAI7U,GAAG+b,IAA6B,OAAdlH,EAAI7U,GAAG+b,IAA6B,OAAdlH,EAAI7U,GAAG+b,IACzHy6C,GAMHD,EAAW1S,EAAU7jD,IACZye,QAAS,IANlB83C,EAAWhrB,eAAeG,YAAY72B,EAAI7U,GAAG+b,KACpC8Q,KAAK/0B,KAAM+c,EAAI7U,IACxB6jD,EAAU7jD,GAAKu2D,EACfz+D,KAAKo2D,eAAe/rD,KAAKo0D,IAK3BG,EAAav0D,KAAKo0D,IACK,OAAd1hD,EAAI7U,GAAG+b,KACXy6C,GAOHD,EAAW1S,EAAU7jD,IACZye,QAAS,GAPlB83C,EAAWhrB,eAAeG,YAAY72B,EAAI7U,GAAG+b,IAC7C8nC,EAAU7jD,GAAKu2D,EACfA,EAAS1pC,KAAK/0B,KAAM+c,EAAK7U,EAAG6jD,GAC5B/rD,KAAKo2D,eAAe/rD,KAAKo0D,GACzB9/D,GAAS,GAKXigE,EAAav0D,KAAKo0D,IAEpBz+D,KAAK02D,oBAAoB35C,EAAI7U,GAAIA,EAAI,EAC3C,CAEI,IADA0S,EAAM+jD,EAAUh+D,OACXuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBy2D,EAAUz2D,GAAGye,QAAS,EAGxB,IADA/L,EAAMgkD,EAAaj+D,OACduH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB02D,EAAa12D,GAAGye,QAAS,CAE/B,EACE80C,gBAAgB54D,UAAUkzD,mBAAqB,WAE7C,IAAI7tD,EADJlI,KAAKu2D,kBAEL,IAAI37C,EAAM5a,KAAK07D,WAAW/6D,OAC1B,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAK07D,WAAWxzD,GAAG8hC,QAGrB,IADAhqC,KAAK6+D,cACA32D,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,GACpBlI,KAAK07D,WAAWxzD,GAAGq9B,MAAQvlC,KAAK4lC,iBAC9B5lC,KAAK07D,WAAWxzD,GAAGmvD,SACrBr3D,KAAK07D,WAAWxzD,GAAGmvD,OAAO7/B,aAAa,IAAKx3B,KAAK07D,WAAWxzD,GAAGd,GAE/DpH,KAAK07D,WAAWxzD,GAAGd,EAAI,OAASpH,KAAK07D,WAAWxzD,GAAGd,GAErDpH,KAAK07D,WAAWxzD,GAAGkvD,MAAM5/B,aAAa,IAAKx3B,KAAK07D,WAAWxzD,GAAGd,GAAK,QAG3E,EACEq0D,gBAAgB54D,UAAUg8D,YAAc,WACtC,IAAI32D,EAEA42D,EADAlkD,EAAM5a,KAAK27D,iBAAiBh7D,OAEhC,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB42D,EAAkB9+D,KAAK27D,iBAAiBzzD,IACnClI,KAAK4lC,eAAiBk5B,EAAgB7tD,QAAQ81B,eAAyC,IAAzB+3B,EAAgBlsD,MACjFksD,EAAgBh8C,GAAGg8C,EAAgBlsD,KAAMksD,EAAgB7tD,QAASjR,KAAK4lC,cAG/E,EACE61B,gBAAgB54D,UAAU6oB,QAAU,WAClC1rB,KAAK+0D,qBACL/0D,KAAK8rD,WAAa,KAClB9rD,KAAK+rD,UAAY,IACrB,EAkBE6P,YAAY/4D,UAAUk8D,OAAS,SAAU1hD,EAAGw+C,EAAI/U,EAAIgV,EAAIhuB,EAAGtmC,GACzDxH,KAAKulC,KAAKloB,GAAI,EACdrd,KAAKulC,KAAKs2B,IAAK,EACf77D,KAAKulC,KAAKuhB,IAAK,EACf9mD,KAAKulC,KAAKu2B,IAAK,EACf97D,KAAKulC,KAAKuI,GAAI,EACd9tC,KAAKulC,KAAK/9B,GAAI,EACd,IAAIw3D,GAAU,EA+Bd,OA9BIh/D,KAAKqd,IAAMA,IACbrd,KAAKqd,EAAIA,EACTrd,KAAKulC,KAAKloB,GAAI,EACd2hD,GAAU,GAERh/D,KAAK67D,KAAOA,IACd77D,KAAK67D,GAAKA,EACV77D,KAAKulC,KAAKs2B,IAAK,EACfmD,GAAU,GAERh/D,KAAK8mD,KAAOA,IACd9mD,KAAK8mD,GAAKA,EACV9mD,KAAKulC,KAAKuhB,IAAK,EACfkY,GAAU,GAERh/D,KAAK87D,KAAOA,IACd97D,KAAK87D,GAAKA,EACV97D,KAAKulC,KAAKu2B,IAAK,EACfkD,GAAU,GAERh/D,KAAK8tC,IAAMA,IACb9tC,KAAK8tC,EAAIA,EACT9tC,KAAKulC,KAAKuI,GAAI,EACdkxB,GAAU,IAERx3D,EAAE7G,QAAWX,KAAKwH,EAAE,KAAOA,EAAE,IAAMxH,KAAKwH,EAAE,KAAOA,EAAE,IAAMxH,KAAKwH,EAAE,KAAOA,EAAE,IAAMxH,KAAKwH,EAAE,KAAOA,EAAE,IAAMxH,KAAKwH,EAAE,MAAQA,EAAE,KAAOxH,KAAKwH,EAAE,MAAQA,EAAE,MAChJxH,KAAKwH,EAAIA,EACTxH,KAAKulC,KAAK/9B,GAAI,EACdw3D,GAAU,GAELA,CACX,EAsDEjD,aAAal5D,UAAU05D,gBAAkB,CAAC,EAAG,GAC7CR,aAAal5D,UAAUu6D,SAAW,SAAU6B,EAAKrsD,GAC/C,IAAK,IAAI3K,KAAK2K,EACR/R,OAAOgC,UAAU9B,eAAerB,KAAKkT,EAAM3K,KAC7Cg3D,EAAIh3D,GAAK2K,EAAK3K,IAGlB,OAAOg3D,CACX,EACElD,aAAal5D,UAAUq8D,eAAiB,SAAUtsD,GAC3CA,EAAKkU,YACR9mB,KAAKs9D,iBAAiB1qD,GAExB5S,KAAKo8D,YAAcxpD,EACnB5S,KAAKo8D,YAAYE,SAAWt8D,KAAKo8D,YAAYE,UAAYt8D,KAAKu8D,gBAC9Dv8D,KAAKulC,MAAO,CAChB,EACEw2B,aAAal5D,UAAUw6D,eAAiB,WACtC,OAAOr9D,KAAKm/D,iBAChB,EACEpD,aAAal5D,UAAUs8D,gBAAkB,WAKvC,OAJAn/D,KAAK8lC,GAAK9lC,KAAK4S,KAAKxL,EAAElG,EAAEP,OAAS,EAC7BX,KAAK8lC,IACP9lC,KAAK+lC,UAAU/lC,KAAKo/D,iBAAiBh8D,KAAKpD,OAErCA,KAAK8lC,EAChB,EACEi2B,aAAal5D,UAAUkjC,UAAY,SAAUC,GAC3ChmC,KAAK0lC,gBAAgBr7B,KAAK27B,GAC1BhmC,KAAK42B,KAAKqP,mBAAmBjmC,KACjC,EACE+7D,aAAal5D,UAAUujC,SAAW,SAAUi5B,GAC1C,GAAKr/D,KAAK42B,KAAKnG,WAAWgV,UAAYzlC,KAAKylC,SAAYzlC,KAAK0lC,gBAAgB/kC,QAAY0+D,EAAxF,CAGAr/D,KAAKo8D,YAAYp0D,EAAIhI,KAAK4S,KAAKxL,EAAElG,EAAElB,KAAKi8D,WAAWh0D,EAAED,EACrD,IAAIs3D,EAAet/D,KAAKo8D,YACpBmD,EAAev/D,KAAKi8D,UACxB,GAAIj8D,KAAK2lC,KACP3lC,KAAKk/D,eAAel/D,KAAKo8D,iBAD3B,CAMA,IAAIl0D,EAFJlI,KAAK2lC,MAAO,EACZ3lC,KAAKulC,MAAO,EAEZ,IAAI3qB,EAAM5a,KAAK0lC,gBAAgB/kC,OAC3BklC,EAAaw5B,GAAer/D,KAAK4S,KAAKxL,EAAElG,EAAElB,KAAKi8D,WAAWh0D,EAC9D,IAAKC,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAGtB29B,EADE05B,IAAiBv/D,KAAKi8D,UACXj8D,KAAK0lC,gBAAgBx9B,GAAG29B,EAAYA,EAAW79B,GAE/ChI,KAAK0lC,gBAAgBx9B,GAAGlI,KAAKo8D,YAAav2B,EAAW79B,GAGlEs3D,IAAiBz5B,GACnB7lC,KAAKk/D,eAAer5B,GAEtB7lC,KAAKkK,EAAIlK,KAAKo8D,YACdp8D,KAAK6gC,GAAK7gC,KAAKkK,EACflK,KAAK2lC,MAAO,EACZ3lC,KAAKylC,QAAUzlC,KAAK42B,KAAKnG,WAAWgV,OApBxC,CAPA,CA4BA,EACEs2B,aAAal5D,UAAUu8D,iBAAmB,WAKxC,IAJA,IAAII,EAAWx/D,KAAK4S,KAAKxL,EAAElG,EACvBs/B,EAAWxgC,KAAK42B,KAAKrS,KAAKygB,cAC1B98B,EAAI,EACJ0S,EAAM4kD,EAAS7+D,OACZuH,GAAK0S,EAAM,KACZ1S,IAAM0S,EAAM,GAAK4kD,EAASt3D,EAAI,GAAGF,EAAIw4B,IAGzCt4B,GAAK,EAKP,OAHIlI,KAAKi8D,YAAc/zD,IACrBlI,KAAKi8D,UAAY/zD,GAEZlI,KAAK4S,KAAKxL,EAAElG,EAAElB,KAAKi8D,WAAWh0D,CACzC,EACE8zD,aAAal5D,UAAU48D,eAAiB,SAAU9yD,GAShD,IARA,IAGI64C,EACAH,EAJAqa,EAAkB,GAClBx3D,EAAI,EACJ0S,EAAMjO,EAAKhM,OAGXg/D,GAAgB,EAChBC,GAAoB,EACpBC,EAAe,GACZ33D,EAAI0S,GACT+kD,EAAgBC,EAChBA,GAAoB,EACpBpa,EAAW74C,EAAK43C,WAAWr8C,GAC3B23D,EAAelzD,EAAKmzD,OAAO53D,GACvBm6C,YAAYqD,oBAAoBF,GAClCma,GAAgB,EAEPna,GAAY,OAAUA,GAAY,MACvCnD,YAAYuD,eAAej5C,EAAMzE,GACnC23D,EAAelzD,EAAKskB,OAAO/oB,EAAG,KAE9Bm9C,EAAiB14C,EAAK43C,WAAWr8C,EAAI,KAEf,OAAUm9C,GAAkB,QAC5ChD,YAAY8C,WAAWK,EAAUH,IACnCwa,EAAelzD,EAAKskB,OAAO/oB,EAAG,GAC9By3D,GAAgB,GAEhBE,EADSxd,YAAYoD,YAAY94C,EAAKskB,OAAO/oB,EAAG,IACjCyE,EAAKskB,OAAO/oB,EAAG,GAEfyE,EAAKskB,OAAO/oB,EAAG,IAI3Bs9C,EAAW,OACpBH,EAAiB14C,EAAK43C,WAAWr8C,EAAI,GACjCm6C,YAAYwD,oBAAoBL,KAClCma,GAAgB,IAETtd,YAAYkD,kBAAkBC,KACvCma,GAAgB,EAChBC,GAAoB,GAElBD,GACFD,EAAgBA,EAAgB/+D,OAAS,IAAMk/D,EAC/CF,GAAgB,GAEhBD,EAAgBr1D,KAAKw1D,GAEvB33D,GAAK23D,EAAal/D,OAEpB,OAAO++D,CACX,EACE3D,aAAal5D,UAAUy6D,iBAAmB,SAAU/3C,GAClDA,EAAauB,YAAa,EAC1B,IAGI5e,EACA0S,EACAmlD,EAEAthD,EAQA+E,EACAC,EAEAoC,EAlBA+L,EAAc5xB,KAAK42B,KAAKnG,WAAWmB,YACnChf,EAAO5S,KAAK4S,KACZotD,EAAU,GAIVjqC,EAAQ,EAERkqC,EAAiBrtD,EAAKk7B,EAAEhkC,EACxBo2D,EAAc,EACdC,EAAa,EACbC,EAAc,EACd1D,EAAa,GACb2D,EAAY,EACZC,EAAe,EAGf5iB,EAAW9rB,EAAYq1B,cAAc1hC,EAAahc,GAElDyuD,EAAU,EACVrU,EAAYlG,kBAAkBC,GAClCn4B,EAAas4B,QAAU8F,EAAU5F,OACjCx4B,EAAaq4B,OAAS+F,EAAUp/C,MAChCghB,EAAa03C,UAAY13C,EAAatd,EACtCsd,EAAa23C,UAAYl9D,KAAKy/D,eAAel6C,EAAavd,GAC1D4S,EAAM2K,EAAa23C,UAAUv8D,OAC7B4kB,EAAa43C,gBAAkB53C,EAAak3C,GAC5C,IACIjX,EADA+a,EAAiBh7C,EAAay4B,GAAK,IAAOz4B,EAAa03C,UAE3D,GAAI13C,EAAaooB,GAMf,IALA,IAGI6yB,EACAtD,EAJA/iD,GAAO,EACPmiD,EAAW/2C,EAAaooB,GAAG,GAC3B/8B,EAAY2U,EAAaooB,GAAG,GAGzBxzB,GAAM,CAEXqmD,EAAgB,EAChBH,EAAY,EACZzlD,GAHAsiD,EAAYl9D,KAAKy/D,eAAel6C,EAAavd,IAG7BrH,OAChB4/D,EAAiBh7C,EAAay4B,GAAK,IAAOz4B,EAAa03C,UACvD,IAAIwD,GAAiB,EACrB,IAAKv4D,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBs9C,EAAW0X,EAAUh1D,GAAGq8C,WAAW,GACnCwb,GAAc,EACO,MAAjB7C,EAAUh1D,GACZu4D,EAAiBv4D,EACK,KAAbs9C,GAAgC,IAAbA,IAC5B6a,EAAY,EACZN,GAAc,EACdS,GAAiBj7C,EAAa43C,iBAA4C,IAAzB53C,EAAa03C,WAE5DrrC,EAAYhM,OACdC,EAAW+L,EAAYm1B,YAAYmW,EAAUh1D,GAAIw1C,EAASE,OAAQF,EAASmG,SAC3EmU,EAAU+H,EAAc,EAAIl6C,EAAS08B,EAAIh9B,EAAa03C,UAAY,KAGlEjF,EAAUpmC,EAAYsyB,YAAYgZ,EAAUh1D,GAAIqd,EAAahc,EAAGgc,EAAa03C,WAE3EoD,EAAYrI,EAAUsE,GAA6B,MAAjBY,EAAUh1D,KACvB,IAAnBu4D,EACF7lD,GAAO,EAEP1S,EAAIu4D,EAEND,GAAiBj7C,EAAa43C,iBAA4C,IAAzB53C,EAAa03C,UAC9DC,EAAUtwC,OAAO1kB,EAAGu4D,IAAmBv4D,EAAI,EAAI,EAAG,MAElDu4D,GAAiB,EACjBJ,EAAY,IAEZA,GAAarI,EACbqI,GAAaE,GAGjBC,GAAiB9iB,EAAS2e,OAAS92C,EAAa03C,UAAY,IACxDj9D,KAAKk8D,WAAa32C,EAAa03C,UAAYj9D,KAAKm8D,iBAAmBvrD,EAAY4vD,GACjFj7C,EAAa03C,WAAa,EAC1B13C,EAAa43C,gBAAkB53C,EAAa03C,UAAY13C,EAAak3C,GAAKl3C,EAAatd,IAEvFsd,EAAa23C,UAAYA,EACzBtiD,EAAM2K,EAAa23C,UAAUv8D,OAC7BwZ,GAAO,EAEjB,CAEIkmD,GAAaE,EACbvI,EAAU,EACV,IACI0I,EADAC,EAAoB,EAExB,IAAKz4D,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAyCxB,GAxCA63D,GAAc,EAGG,MADjBva,GADAkb,EAAcn7C,EAAa23C,UAAUh1D,IACdq8C,WAAW,KACE,IAAbiB,GACrBmb,EAAoB,EACpBjE,EAAWryD,KAAKg2D,GAChBC,EAAeD,EAAYC,EAAeD,EAAYC,EACtDD,GAAY,EAAKE,EACjB9hD,EAAM,GACNshD,GAAc,EACdK,GAAe,GAEf3hD,EAAMiiD,EAEJ9uC,EAAYhM,OACdC,EAAW+L,EAAYm1B,YAAY2Z,EAAahjB,EAASE,OAAQhsB,EAAYq1B,cAAc1hC,EAAahc,GAAGs6C,SAC3GmU,EAAU+H,EAAc,EAAIl6C,EAAS08B,EAAIh9B,EAAa03C,UAAY,KAIlEjF,EAAUpmC,EAAYsyB,YAAYzlC,EAAK8G,EAAahc,EAAGgc,EAAa03C,WAIlD,MAAhByD,EACFC,GAAqB3I,EAAUuI,GAE/BF,GAAarI,EAAUuI,EAAiBI,EACxCA,EAAoB,GAEtBX,EAAQ31D,KAAK,CACXwjC,EAAGmqB,EACH4I,GAAI5I,EACJ6I,IAAKX,EACL/3D,EAAG43D,EACHe,UAAW,GACXriD,IAAKA,EACLsO,KAAMqzC,EACNW,sBAAuB,IAEH,GAAlBd,GAGF,GADAC,GAAelI,EACH,KAARv5C,GAAsB,MAARA,GAAevW,IAAM0S,EAAM,EAAG,CAI9C,IAHY,KAAR6D,GAAsB,MAARA,IAChByhD,GAAelI,GAEVmI,GAAcj4D,GACnB83D,EAAQG,GAAYS,GAAKV,EACzBF,EAAQG,GAAYx+B,IAAM5L,EAC1BiqC,EAAQG,GAAYa,MAAQhJ,EAC5BmI,GAAc,EAEhBpqC,GAAS,EACTmqC,EAAc,CACxB,OACa,GAAsB,GAAlBD,GAGT,GADAC,GAAelI,EACH,KAARv5C,GAAcvW,IAAM0S,EAAM,EAAG,CAI/B,IAHY,KAAR6D,IACFyhD,GAAelI,GAEVmI,GAAcj4D,GACnB83D,EAAQG,GAAYS,GAAKV,EACzBF,EAAQG,GAAYx+B,IAAM5L,EAC1BiqC,EAAQG,GAAYa,MAAQhJ,EAC5BmI,GAAc,EAEhBD,EAAc,EACdnqC,GAAS,CACnB,OAEQiqC,EAAQjqC,GAAO4L,IAAM5L,EACrBiqC,EAAQjqC,GAAOirC,MAAQ,EACvBjrC,GAAS,EAMb,GAHAxQ,EAAasoB,EAAImyB,EACjBM,EAAeD,EAAYC,EAAeD,EAAYC,EACtD5D,EAAWryD,KAAKg2D,GACZ96C,EAAaooB,GACfpoB,EAAa+2C,SAAW/2C,EAAaooB,GAAG,GACxCpoB,EAAai3C,cAAgB,OAG7B,OADAj3C,EAAa+2C,SAAWgE,EAChB/6C,EAAa/B,GACnB,KAAK,EACH+B,EAAai3C,eAAiBj3C,EAAa+2C,SAC3C,MACF,KAAK,EACH/2C,EAAai3C,eAAiBj3C,EAAa+2C,SAAW,EACtD,MACF,QACE/2C,EAAai3C,cAAgB,EAGnCj3C,EAAam3C,WAAaA,EAC1B,IACIuE,EACAC,EAEAC,EACAx/B,EALAy/B,EAAYxuD,EAAKqT,EAGrBxC,EAAO29C,EAAUzgE,OAGjB,IAAI0gE,EAAU,GACd,IAAK79C,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAAG,CAa5B,KAZAy9C,EAAeG,EAAU59C,IACRyC,EAAE6gC,KACjBvhC,EAAau3C,iBAAkB,GAE7BmE,EAAah7C,EAAE41C,KACjBt2C,EAAaw3C,iBAAkB,IAE7BkE,EAAah7C,EAAE61C,IAAMmF,EAAah7C,EAAEq7C,IAAML,EAAah7C,EAAEs7C,IAAMN,EAAah7C,EAAEu7C,MAChFj8C,EAAas3C,eAAgB,GAE/Bl7B,EAAM,EACNw/B,EAAQF,EAAah5D,EAAEZ,EAClBa,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,GACxBg5D,EAAalB,EAAQ93D,IACV44D,UAAUt9C,GAAKme,GACb,GAATw/B,GAAiC,KAAnBD,EAAWziD,KAAuB,GAAT0iD,GAAiC,KAAnBD,EAAWziD,KAAiC,MAAnByiD,EAAWziD,KAAwB,GAAT0iD,IAAeD,EAAW/4D,GAAuB,KAAlB+4D,EAAWziD,KAAcvW,GAAK0S,EAAM,IAAe,GAATumD,IAAeD,EAAW/4D,GAAKD,GAAK0S,EAAM,MAEnM,IAAtBqmD,EAAah5D,EAAEw5D,IACjBJ,EAAQh3D,KAAKs3B,GAEfA,GAAO,GAGX/uB,EAAKqT,EAAEzC,GAAGvb,EAAEy5D,WAAa//B,EACzB,IACIggC,EADAC,GAAa,EAEjB,GAA0B,IAAtBX,EAAah5D,EAAEw5D,GACjB,IAAKv5D,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAEpB05D,IADJV,EAAalB,EAAQ93D,IACQ44D,UAAUt9C,KAErCo+C,EAAaV,EAAWJ,UAAUt9C,GAClCm+C,EAASN,EAAQz0C,OAAOvZ,KAAK2K,MAAM3K,KAAKkL,SAAW8iD,EAAQ1gE,QAAS,GAAG,IAEzEugE,EAAWJ,UAAUt9C,GAAKm+C,CAGpC,CACIp8C,EAAay3C,QAAUz3C,EAAa43C,iBAA4C,IAAzB53C,EAAa03C,UACpE13C,EAAao3C,GAAKp3C,EAAao3C,IAAM,EACrCp3C,EAAa82C,OAAS3e,EAAS2e,OAAS92C,EAAa03C,UAAY,GACrE,EACElB,aAAal5D,UAAUizB,mBAAqB,SAAU+rC,EAAS9rC,GAC7DA,OAAkB1vB,IAAV0vB,EAAsB/1B,KAAKi8D,UAAYlmC,EAC/C,IAAI+rC,EAAQ9hE,KAAKo9D,SAAS,GAAIp9D,KAAK4S,KAAKxL,EAAElG,EAAE60B,GAAO9tB,GACnD65D,EAAQ9hE,KAAKo9D,SAAS0E,EAAOD,GAC7B7hE,KAAK4S,KAAKxL,EAAElG,EAAE60B,GAAO9tB,EAAI65D,EACzB9hE,KAAK+hE,YAAYhsC,GACjB/1B,KAAKk/D,eAAe4C,GACpB9hE,KAAK42B,KAAKqP,mBAAmBjmC,KACjC,EACE+7D,aAAal5D,UAAUk/D,YAAc,SAAUhsC,GAC7C,IAAI+rC,EAAQ9hE,KAAK4S,KAAKxL,EAAElG,EAAE60B,GAAO9tB,EACjC65D,EAAMh7C,YAAa,EACnB9mB,KAAKi8D,UAAY,EACjBj8D,KAAK4lC,eAAgB,EACrB5lC,KAAKomC,SAAS07B,EAClB,EACE/F,aAAal5D,UAAUm/D,cAAgB,SAAUC,GAC/CjiE,KAAKk8D,UAAY+F,EACjBjiE,KAAK+hE,YAAY/hE,KAAKi8D,WACtBj8D,KAAK42B,KAAKqP,mBAAmBjmC,KACjC,EACE+7D,aAAal5D,UAAUq/D,mBAAqB,SAAUC,GACpDniE,KAAKm8D,gBAAkB9oD,KAAK2K,MAAMmkD,IAAe,EACjDniE,KAAK+hE,YAAY/hE,KAAKi8D,WACtBj8D,KAAK42B,KAAKqP,mBAAmBjmC,KACjC,EAEE,IAAIoiE,iBAAmB,WACrB,IAAIlkD,EAAM7K,KAAK6K,IACXE,EAAM/K,KAAK+K,IACXJ,EAAQ3K,KAAK2K,MACjB,SAASqkD,EAAwBzrC,EAAMhkB,GACrC5S,KAAKsiE,oBAAqB,EAC1BtiE,KAAKkB,GAAI,EACTlB,KAAK4S,KAAOA,EACZ5S,KAAK42B,KAAOA,EACZ52B,KAAKukB,KAAOqS,EAAKrS,KACjBvkB,KAAKuiE,OAAS,EACdviE,KAAKwiE,OAAS,EACdxiE,KAAKinC,6BAA6BrQ,GAClC52B,KAAKiI,EAAIw+B,gBAAgBC,QAAQ9P,EAAMhkB,EAAK3K,GAAK,CAC/C/G,EAAG,GACF,EAAG,EAAGlB,MAEPA,KAAKX,EADH,MAAOuT,EACA6zB,gBAAgBC,QAAQ9P,EAAMhkB,EAAKvT,EAAG,EAAG,EAAGW,MAE5C,CACPkK,EAAG,KAGPlK,KAAKqd,EAAIopB,gBAAgBC,QAAQ9P,EAAMhkB,EAAKyK,GAAK,CAC/Cnc,EAAG,GACF,EAAG,EAAGlB,MACTA,KAAKyiE,GAAKh8B,gBAAgBC,QAAQ9P,EAAMhkB,EAAK6vD,IAAM,CACjDvhE,EAAG,GACF,EAAG,EAAGlB,MACTA,KAAK0iE,GAAKj8B,gBAAgBC,QAAQ9P,EAAMhkB,EAAK8vD,IAAM,CACjDxhE,EAAG,GACF,EAAG,EAAGlB,MACTA,KAAK2iE,GAAKl8B,gBAAgBC,QAAQ9P,EAAMhkB,EAAK+vD,IAAM,CACjDzhE,EAAG,KACF,EAAG,EAAGlB,MACTA,KAAKimB,EAAIwgB,gBAAgBC,QAAQ9P,EAAMhkB,EAAKqT,EAAG,EAAG,IAAMjmB,MACnDA,KAAK8mC,kBAAkBnmC,QAC1BX,KAAKomC,UAEb,CAqII,OApIAi8B,EAAwBx/D,UAAY,CAClC+/D,QAAS,SAAiBjhC,GACpB3hC,KAAKsiE,qBAAuBtiE,KAAK42B,KAAKisC,aAAazG,YAAYvuB,EAAEltC,QACnEX,KAAKomC,WAEP,IAAIzK,EAAK,EACLC,EAAK,EACLC,EAAK,EACLC,EAAK,EACL97B,KAAK0iE,GAAGx4D,EAAI,EACdyxB,EAAK37B,KAAK0iE,GAAGx4D,EAAI,IAEjB0xB,GAAM57B,KAAK0iE,GAAGx4D,EAAI,IAEhBlK,KAAKyiE,GAAGv4D,EAAI,EACd2xB,EAAK,EAAM77B,KAAKyiE,GAAGv4D,EAAI,IAEvB4xB,EAAK,EAAM97B,KAAKyiE,GAAGv4D,EAAI,IAEzB,IAAI44D,EAAQhrC,cAAc+J,gBAAgBlG,EAAIC,EAAIC,EAAIC,GAAIv6B,IACtD+jC,EAAO,EACPr9B,EAAIjI,KAAKuiE,OACTljE,EAAIW,KAAKwiE,OACT9lE,EAAOsD,KAAK4S,KAAK6vB,GACrB,GAAa,IAAT/lC,EAMF4oC,EAAOw9B,EAJLx9B,EADEjmC,IAAM4I,EACD05B,GAAOtiC,EAAI,EAAI,EAEf6e,EAAI,EAAGE,EAAI,IAAO/e,EAAI4I,IAAM05B,EAAM15B,IAAM5I,EAAI4I,GAAI,UAGpD,GAAa,IAATvL,EAMT4oC,EAAOw9B,EAJLx9B,EADEjmC,IAAM4I,EACD05B,GAAOtiC,EAAI,EAAI,EAEf,EAAI6e,EAAI,EAAGE,EAAI,IAAO/e,EAAI4I,IAAM05B,EAAM15B,IAAM5I,EAAI4I,GAAI,UAGxD,GAAa,IAATvL,EACL2C,IAAM4I,EACRq9B,EAAO,GAEPA,EAAOpnB,EAAI,EAAGE,EAAI,IAAO/e,EAAI4I,IAAM05B,EAAM15B,IAAM5I,EAAI4I,GAAI,KAC5C,GACTq9B,GAAQ,EAERA,EAAO,EAAI,GAAKA,EAAO,IAG3BA,EAAOw9B,EAAMx9B,QACR,GAAa,IAAT5oC,EAAY,CACrB,GAAI2C,IAAM4I,EACRq9B,EAAO,MACF,CACL,IAAIy9B,EAAM1jE,EAAI4I,EAIVjJ,GAAK+jE,EAAM,GADfphC,EAAMvjB,EAAIF,EAAI,EAAGyjB,EAAM,GAAM15B,GAAI5I,EAAI4I,IAEjCge,EAAI88C,EAAM,EACdz9B,EAAOjyB,KAAKyK,KAAK,EAAI9e,EAAIA,GAAKinB,EAAIA,GAC9C,CACUqf,EAAOw9B,EAAMx9B,EACvB,MAA4B,IAAT5oC,GACL2C,IAAM4I,EACRq9B,EAAO,GAEP3D,EAAMvjB,EAAIF,EAAI,EAAGyjB,EAAM,GAAM15B,GAAI5I,EAAI4I,GACrCq9B,GAAQ,EAAIjyB,KAAKoxB,IAAIpxB,KAAKwL,GAAe,EAAVxL,KAAKwL,GAAS8iB,GAAOtiC,EAAI4I,KAAO,GAEjEq9B,EAAOw9B,EAAMx9B,KAET3D,GAAO3jB,EAAM/V,KAEbq9B,EAAOpnB,EAAI,EAAGE,EADZujB,EAAM15B,EAAI,EACMmW,EAAI/e,EAAG,IAAM4I,EAAI05B,GAEjBtiC,EAAIsiC,EAFmB,KAK7C2D,EAAOw9B,EAAMx9B,IAYf,GAAkB,MAAdtlC,KAAK2iE,GAAGz4D,EAAW,CACrB,IAAI84D,EAAyB,IAAZhjE,KAAK2iE,GAAGz4D,EACN,IAAf84D,IACFA,EAAa,MAEf,IAAIC,EAAY,GAAmB,GAAbD,EAClB19B,EAAO29B,EACT39B,EAAO,GAEPA,GAAQA,EAAO29B,GAAaD,GACjB,IACT19B,EAAO,EAGrB,CACQ,OAAOA,EAAOtlC,KAAKimB,EAAE/b,CAC7B,EACMk8B,SAAU,SAAkB88B,GAC1BljE,KAAKgnC,2BACLhnC,KAAKulC,KAAO29B,GAAgBljE,KAAKulC,KACjCvlC,KAAKsiE,mBAAqBtiE,KAAK42B,KAAKisC,aAAazG,YAAYvuB,EAAEltC,QAAU,EACrEuiE,GAAgC,IAAhBljE,KAAK4S,KAAK+N,IAC5B3gB,KAAKX,EAAE6K,EAAIlK,KAAKsiE,oBAElB,IAAIa,EAA0B,IAAhBnjE,KAAK4S,KAAK+N,EAAU,EAAI,IAAM3gB,KAAK4S,KAAK8uD,WAClDrkD,EAAIrd,KAAKqd,EAAEnT,EAAIi5D,EACfl7D,EAAIjI,KAAKiI,EAAEiC,EAAIi5D,EAAU9lD,EACzBhe,EAAIW,KAAKX,EAAE6K,EAAIi5D,EAAU9lD,EAC7B,GAAIpV,EAAI5I,EAAG,CACT,IAAI41C,EAAKhtC,EACTA,EAAI5I,EACJA,EAAI41C,CACd,CACQj1C,KAAKuiE,OAASt6D,EACdjI,KAAKwiE,OAASnjE,CACtB,GAEImb,gBAAgB,CAACqsB,0BAA2Bw7B,GAIrC,CACLe,oBAJF,SAA6BxsC,EAAMhkB,EAAMmK,GACvC,OAAO,IAAIslD,EAAwBzrC,EAAMhkB,EAC/C,EAIA,CA/KyB,GAiLvB,SAASywD,yBAAyBzsC,EAAM0sC,EAAejzC,GACrD,IAAIkzC,EAAc,CAChB3iC,UAAU,GAER8F,EAAUD,gBAAgBC,QAC1B88B,EAA0BF,EAAcr9C,EAC5CjmB,KAAKimB,EAAI,CACPtF,EAAG6iD,EAAwB7iD,EAAI+lB,EAAQ9P,EAAM4sC,EAAwB7iD,EAAG,EAAG/B,UAAWyR,GAAakzC,EACnG3sB,GAAI4sB,EAAwB5sB,GAAKlQ,EAAQ9P,EAAM4sC,EAAwB5sB,GAAI,EAAGh4B,UAAWyR,GAAakzC,EACtG1sB,GAAI2sB,EAAwB3sB,GAAKnQ,EAAQ9P,EAAM4sC,EAAwB3sB,GAAI,EAAGj4B,UAAWyR,GAAakzC,EACtGr9C,GAAIs9C,EAAwBt9C,GAAKwgB,EAAQ9P,EAAM4sC,EAAwBt9C,GAAI,EAAGtH,UAAWyR,GAAakzC,EACtGp9C,GAAIq9C,EAAwBr9C,GAAKugB,EAAQ9P,EAAM4sC,EAAwBr9C,GAAI,EAAGvH,UAAWyR,GAAakzC,EACtGt7D,EAAGu7D,EAAwBv7D,EAAIy+B,EAAQ9P,EAAM4sC,EAAwBv7D,EAAG,EAAG,IAAMooB,GAAakzC,EAC9Ft9C,EAAGu9C,EAAwBv9C,EAAIygB,EAAQ9P,EAAM4sC,EAAwBv9C,EAAG,EAAG,EAAGoK,GAAakzC,EAC3FlmD,EAAGmmD,EAAwBnmD,EAAIqpB,EAAQ9P,EAAM4sC,EAAwBnmD,EAAG,EAAG,IAAMgT,GAAakzC,EAC9F/7D,EAAGg8D,EAAwBh8D,EAAIk/B,EAAQ9P,EAAM4sC,EAAwBh8D,EAAG,EAAG,EAAG6oB,GAAakzC,EAC3F1H,GAAI2H,EAAwB3H,GAAKn1B,EAAQ9P,EAAM4sC,EAAwB3H,GAAI,EAAG,EAAGxrC,GAAakzC,EAC9Fzc,GAAI0c,EAAwB1c,GAAKpgB,EAAQ9P,EAAM4sC,EAAwB1c,GAAI,EAAG,EAAGz2B,GAAakzC,EAC9FzH,GAAI0H,EAAwB1H,GAAKp1B,EAAQ9P,EAAM4sC,EAAwB1H,GAAI,EAAG,EAAGzrC,GAAakzC,EAC9FjC,GAAIkC,EAAwBlC,GAAK56B,EAAQ9P,EAAM4sC,EAAwBlC,GAAI,EAAG,EAAGjxC,GAAakzC,EAC9FhC,GAAIiC,EAAwBjC,GAAK76B,EAAQ9P,EAAM4sC,EAAwBjC,GAAI,EAAG,IAAMlxC,GAAakzC,EACjG/B,GAAIgC,EAAwBhC,GAAK96B,EAAQ9P,EAAM4sC,EAAwBhC,GAAI,EAAG,IAAMnxC,GAAakzC,EACjGv7D,EAAGw7D,EAAwBx7D,EAAI0+B,EAAQ9P,EAAM4sC,EAAwBx7D,EAAG,EAAG,EAAGqoB,GAAakzC,GAE7FvjE,KAAKiI,EAAIm6D,iBAAiBgB,oBAAoBxsC,EAAM0sC,EAAcr7D,EAAGooB,GACrErwB,KAAKiI,EAAED,EAAIs7D,EAAcr7D,EAAED,CAC/B,CAEE,SAASy7D,qBAAqBza,EAAU0a,EAAY9sC,GAClD52B,KAAK4lC,eAAgB,EACrB5lC,KAAK2jE,gBAAiB,EACtB3jE,KAAKg8D,UAAW,EAChBh8D,KAAK4jE,UAAY5a,EACjBhpD,KAAK6jE,YAAcH,EACnB1jE,KAAK8jE,MAAQltC,EACb52B,KAAK+jE,eAAiB5mD,iBAAiBnd,KAAK4jE,UAAU39C,EAAEtlB,QACxDX,KAAKgkE,UAAY,CAAA,EACjBhkE,KAAKikE,aAAe,CAClBC,UAAW,CAAA,GAEblkE,KAAKmkE,gBAAkB,GACvBnkE,KAAKokE,oBAAqB,EAC1BpkE,KAAKinC,6BAA6BrQ,EACtC,CAyiBE,SAASytC,eAAe,CAxiBxBZ,qBAAqB5gE,UAAUyhE,iBAAmB,WAChD,IAAIp8D,EAEAo7D,EADA1oD,EAAM5a,KAAK4jE,UAAU39C,EAAEtlB,OAEvB+lC,EAAUD,gBAAgBC,QAC9B,IAAKx+B,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBo7D,EAAgBtjE,KAAK4jE,UAAU39C,EAAE/d,GACjClI,KAAK+jE,eAAe77D,GAAK,IAAIm7D,yBAAyBrjE,KAAK8jE,MAAOR,EAAetjE,MAE/EA,KAAK4jE,UAAUp8D,GAAK,MAAOxH,KAAK4jE,UAAUp8D,GAC5CxH,KAAKgkE,UAAY,CACf/9C,EAAGygB,EAAQ1mC,KAAK8jE,MAAO9jE,KAAK4jE,UAAUp8D,EAAEye,EAAG,EAAG,EAAGjmB,MACjDuJ,EAAGm9B,EAAQ1mC,KAAK8jE,MAAO9jE,KAAK4jE,UAAUp8D,EAAE+B,EAAG,EAAG,EAAGvJ,MACjD6tC,EAAGnH,EAAQ1mC,KAAK8jE,MAAO9jE,KAAK4jE,UAAUp8D,EAAEqmC,EAAG,EAAG,EAAG7tC,MACjD2gB,EAAG+lB,EAAQ1mC,KAAK8jE,MAAO9jE,KAAK4jE,UAAUp8D,EAAEmZ,EAAG,EAAG,EAAG3gB,MACjDwH,EAAGk/B,EAAQ1mC,KAAK8jE,MAAO9jE,KAAK4jE,UAAUp8D,EAAEA,EAAG,EAAG,EAAGxH,MACjD8tC,EAAG9tC,KAAK8jE,MAAMtY,YAAYuG,gBAAgB/xD,KAAK4jE,UAAUp8D,EAAEsmC,IAE7D9tC,KAAK2jE,gBAAiB,GAEtB3jE,KAAK2jE,gBAAiB,EAExB3jE,KAAKikE,aAAaC,UAAYx9B,EAAQ1mC,KAAK8jE,MAAO9jE,KAAK4jE,UAAU91B,EAAE7nB,EAAG,EAAG,EAAGjmB,KAChF,EACEyjE,qBAAqB5gE,UAAU0hE,YAAc,SAAUh/C,EAAc6+C,GAEnE,GADApkE,KAAKokE,mBAAqBA,EACrBpkE,KAAKulC,MAASvlC,KAAK4lC,eAAkBw+B,GAAwBpkE,KAAK2jE,gBAAmB3jE,KAAKgkE,UAAUl2B,EAAEvI,KAA3G,CAGAvlC,KAAK4lC,eAAgB,EACrB,IAMI4+B,EACAC,EACAv8D,EACA0S,EAEA8pD,EACAC,EACAC,EACA7nC,EACA5iB,EACA0qD,EACAC,EACArpB,EACA5iB,EACArJ,EACA0N,EACA3B,EACAiB,EACAuoC,EACA3U,EAzBA8T,EAAYlkE,KAAKikE,aAAaC,UAAUh6D,EACxCk3D,EAAYphE,KAAK+jE,eACjB/a,EAAWhpD,KAAK4jE,UAChBoB,EAAehlE,KAAK8xD,QACpB4R,EAAa1jE,KAAK6jE,YAClBoB,EAAuBjlE,KAAKmkE,gBAAgBxjE,OAK5Cq/D,EAAUz6C,EAAasoB,EAgB3B,GAAI7tC,KAAK2jE,eAAgB,CAEvB,GADAvT,EAAOpwD,KAAKgkE,UAAUl2B,GACjB9tC,KAAKgkE,UAAU77D,GAAKnI,KAAKgkE,UAAUz+B,KAAM,CAC5C,IAUIjI,EAVAoM,EAAQ0mB,EAAKlmD,EAYjB,IAXIlK,KAAKgkE,UAAUrjD,EAAEzW,IACnBw/B,EAAQA,EAAM1B,WAGhB08B,EAAW,CACTQ,QAAS,EACT11C,SAAU,IAEZ5U,EAAM8uB,EAAM7O,QAAU,EAEtBU,EAAc,EACTrzB,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBo1B,EAAa8C,IAAIhD,gBAAgBsM,EAAMx/B,EAAEhC,GAAIwhC,EAAMx/B,EAAEhC,EAAI,GAAI,CAACwhC,EAAMrsB,EAAEnV,GAAG,GAAKwhC,EAAMx/B,EAAEhC,GAAG,GAAIwhC,EAAMrsB,EAAEnV,GAAG,GAAKwhC,EAAMx/B,EAAEhC,GAAG,IAAK,CAACwhC,EAAMxhC,EAAEA,EAAI,GAAG,GAAKwhC,EAAMx/B,EAAEhC,EAAI,GAAG,GAAIwhC,EAAMxhC,EAAEA,EAAI,GAAG,GAAKwhC,EAAMx/B,EAAEhC,EAAI,GAAG,KACxMw8D,EAASQ,SAAW5nC,EAAWP,cAC/B2nC,EAASl1C,SAASnlB,KAAKizB,GACvB/B,GAAe+B,EAAWP,cAE5B70B,EAAI0S,EACAw1C,EAAKlmD,EAAEsc,IACT8W,EAAa8C,IAAIhD,gBAAgBsM,EAAMx/B,EAAEhC,GAAIwhC,EAAMx/B,EAAE,GAAI,CAACw/B,EAAMrsB,EAAEnV,GAAG,GAAKwhC,EAAMx/B,EAAEhC,GAAG,GAAIwhC,EAAMrsB,EAAEnV,GAAG,GAAKwhC,EAAMx/B,EAAEhC,GAAG,IAAK,CAACwhC,EAAMxhC,EAAE,GAAG,GAAKwhC,EAAMx/B,EAAE,GAAG,GAAIw/B,EAAMxhC,EAAE,GAAG,GAAKwhC,EAAMx/B,EAAE,GAAG,KACpLw6D,EAASQ,SAAW5nC,EAAWP,cAC/B2nC,EAASl1C,SAASnlB,KAAKizB,GACvB/B,GAAe+B,EAAWP,eAE5B/8B,KAAKgkE,UAAUmB,GAAKT,CAC5B,CAQM,GAPAA,EAAW1kE,KAAKgkE,UAAUmB,GAC1BR,EAAgB3kE,KAAKgkE,UAAUz6D,EAAEW,EACjC46D,EAAa,EACbD,EAAW,EACX9nC,EAAgB,EAChB5iB,GAAO,EACPqV,EAAWk1C,EAASl1C,SAChBm1C,EAAgB,GAAKvU,EAAKlmD,EAAEsc,EAO9B,IANIk+C,EAASQ,QAAU7xD,KAAKmL,IAAImmD,KAC9BA,GAAiBtxD,KAAKmL,IAAImmD,GAAiBD,EAASQ,SAItDL,GADAhsC,EAASrJ,EADTs1C,EAAat1C,EAAS7uB,OAAS,GACDk4B,QACZl4B,OAAS,EACpBgkE,EAAgB,GACrBA,GAAiB9rC,EAAOgsC,GAAU3nC,eAClC2nC,GAAY,GACG,IAGbA,GADAhsC,EAASrJ,EADTs1C,GAAc,GACgBjsC,QACZl4B,OAAS,GAKjC86C,GADA5iB,EAASrJ,EAASs1C,GAAYjsC,QACXgsC,EAAW,GAE9B3nC,GADA0nC,EAAe/rC,EAAOgsC,IACO3nC,aACnC,CACItiB,EAAMolD,EAAQr/D,OACd6jE,EAAO,EACPC,EAAO,EACP,IAEInB,EAEA9/C,EACAC,EACA2hD,EAEA9/B,EARA+/B,EAAgC,IAAzB9/C,EAAa03C,UAAkB,KACtCqI,GAAY,EAMhB7hD,EAAO29C,EAAUzgE,OAEjB,IACI4kE,EACAC,EACAC,EAKAC,EACA5e,EACA+U,EACAC,EACA56D,EACAykE,EACAC,EACAC,EAGAC,EAlBAnkC,GAAM,EAINokC,EAAcpB,EACdqB,EAAiBlB,EACjBmB,EAAepB,EACfzE,GAAc,EASd8F,GAAU,GACVC,GAAUnmE,KAAKomE,kBAInB,GAAuB,IAAnB7gD,EAAa/B,GAA8B,IAAnB+B,EAAa/B,EAAS,CAChD,IAAIu9C,GAAwB,EACxBsF,GAA0B,EAC1BC,GAAuC,IAAnB/gD,EAAa/B,GAAU,IAAO,EAClD2d,GAAY,EACZolC,IAAY,EAChB,IAAKr+D,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB,GAAI83D,EAAQ93D,GAAGC,EAAG,CAIhB,IAHI44D,KACFA,IAAyBsF,IAEpBllC,GAAYj5B,GACjB83D,EAAQ7+B,IAAW4/B,sBAAwBA,GAC3C5/B,IAAa,EAEf4/B,GAAwB,EACxBwF,IAAY,CACtB,KAAe,CACL,IAAK/iD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,GACzB8/C,EAAgBlC,EAAU59C,GAAGyC,GACXje,EAAE44B,WACd2lC,IAAgC,IAAnBhhD,EAAa/B,IAC5B6iD,IAA2B/C,EAAct7D,EAAEkC,EAAIo8D,KAGjDhhC,EADmB87B,EAAU59C,GAAGvb,EACR26D,QAAQ5C,EAAQ93D,GAAG44D,UAAUt9C,GAAIwlC,EAAS/iC,EAAEzC,GAAGvb,EAAEy5D,aAChE/gE,OACPogE,IAAyBuC,EAAct7D,EAAEkC,EAAIo7B,EAAK,GAAKghC,GAEvDvF,IAAyBuC,EAAct7D,EAAEkC,EAAIo7B,EAAOghC,IAI1DC,IAAY,CACtB,CAKM,IAHIxF,KACFA,IAAyBsF,IAEpBllC,GAAYj5B,GACjB83D,EAAQ7+B,IAAW4/B,sBAAwBA,GAC3C5/B,IAAa,CAErB,CAGI,IAAKj5B,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAAG,CAG3B,GAFA88D,EAAah7B,QACb07B,EAAc,EACV1F,EAAQ93D,GAAGC,EACbq8D,EAAO,EACPC,GAAQl/C,EAAay3C,QACrByH,GAAQa,EAAY,EAAI,EACxBX,EAAgBoB,EAChBT,GAAY,EACRtlE,KAAK2jE,iBAEPkB,EAAWoB,EAEXxqB,GADA5iB,EAASrJ,EAFTs1C,EAAakB,GAEiBntC,QACXgsC,EAAW,GAE9B3nC,GADA0nC,EAAe/rC,EAAOgsC,IACO3nC,cAC7BH,EAAgB,GAElBmpC,GAAU,GACVL,EAAW,GACXF,EAAW,GACXG,EAAU,GACVK,GAAUnmE,KAAKomE,sBACV,CACL,GAAIpmE,KAAK2jE,eAAgB,CACvB,GAAIvD,IAAgBJ,EAAQ93D,GAAG6kB,KAAM,CACnC,OAAQxH,EAAa/B,GACnB,KAAK,EACHmhD,GAAiBppC,EAAchW,EAAam3C,WAAWsD,EAAQ93D,GAAG6kB,MAClE,MACF,KAAK,EACH43C,IAAkBppC,EAAchW,EAAam3C,WAAWsD,EAAQ93D,GAAG6kB,OAAS,EAKhFqzC,EAAcJ,EAAQ93D,GAAG6kB,IACrC,CACc4U,IAAQq+B,EAAQ93D,GAAGy5B,MACjBq+B,EAAQr+B,KACVgjC,GAAiB3E,EAAQr+B,GAAKq/B,OAEhC2D,GAAiB3E,EAAQ93D,GAAG04D,GAAK,EACjCj/B,EAAMq+B,EAAQ93D,GAAGy5B,KAEnBgjC,GAAiBT,EAAU,GAAKlE,EAAQ93D,GAAG04D,GAAK,KAChD,IAAI4F,GAAiB,EACrB,IAAKhjD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,GACzB8/C,EAAgBlC,EAAU59C,GAAGyC,GACXze,EAAEo5B,YAElB0E,EADmB87B,EAAU59C,GAAGvb,EACR26D,QAAQ5C,EAAQ93D,GAAG44D,UAAUt9C,GAAIwlC,EAAS/iC,EAAEzC,GAAGvb,EAAEy5D,aAChE/gE,OACP6lE,IAAkBlD,EAAc97D,EAAE0C,EAAE,GAAKo7B,EAAK,GAE9CkhC,IAAkBlD,EAAc97D,EAAE0C,EAAE,GAAKo7B,GAGzCg+B,EAAcr9C,EAAE2a,YAElB0E,EADmB87B,EAAU59C,GAAGvb,EACR26D,QAAQ5C,EAAQ93D,GAAG44D,UAAUt9C,GAAIwlC,EAAS/iC,EAAEzC,GAAGvb,EAAEy5D,aAChE/gE,OACP6lE,IAAkBlD,EAAcr9C,EAAE/b,EAAE,GAAKo7B,EAAK,GAE9CkhC,IAAkBlD,EAAcr9C,EAAE/b,EAAE,GAAKo7B,GAU/C,IANAnrB,GAAO,EAEHna,KAAKgkE,UAAU/9C,EAAE/b,IACnBy6D,EAAgC,GAAhB3E,EAAQ,GAAGY,IAAYrlC,EAAcv7B,KAAKgkE,UAAUz6D,EAAEW,EAAoB,GAAhB81D,EAAQ,GAAGY,GAA4C,GAAjCZ,EAAQA,EAAQr/D,OAAS,GAAGigE,IAAYj/B,GAAO/mB,EAAM,GACrJ+pD,GAAiB3kE,KAAKgkE,UAAUz6D,EAAEW,GAE7BiQ,GACD4iB,EAAgBG,GAAiBynC,EAAgB6B,KAAmB3tC,GACtE2D,GAAQmoC,EAAgB6B,GAAiBzpC,GAAiB6nC,EAAa1nC,cACvEsoC,EAAW/pB,EAAU9e,MAAM,IAAMioC,EAAajoC,MAAM,GAAK8e,EAAU9e,MAAM,IAAMH,EAC/EipC,EAAWhqB,EAAU9e,MAAM,IAAMioC,EAAajoC,MAAM,GAAK8e,EAAU9e,MAAM,IAAMH,EAC/EwoC,EAAaj3B,WAAWm2B,EAAU,GAAKlE,EAAQ93D,GAAG04D,GAAK,MAASsD,EAAU,GAAKmB,EAAQ,KACvFlrD,GAAO,GACE0e,IACTkE,GAAiB6nC,EAAa1nC,eAC9B2nC,GAAY,IACIhsC,EAAOl4B,SACrBkkE,EAAW,EAENr1C,EADLs1C,GAAc,GAWZjsC,EAASrJ,EAASs1C,GAAYjsC,OAT1Bu3B,EAAKlmD,EAAEsc,GACTq+C,EAAW,EAEXhsC,EAASrJ,EADTs1C,EAAa,GACiBjsC,SAE9BkE,GAAiB6nC,EAAa1nC,cAC9BrE,EAAS,OAMXA,IACF4iB,EAAYmpB,EAEZ1nC,GADA0nC,EAAe/rC,EAAOgsC,IACO3nC,gBAInCqoC,EAAOvF,EAAQ93D,GAAG04D,GAAK,EAAIZ,EAAQ93D,GAAG24D,IACtCmE,EAAaj3B,WAAWw3B,EAAM,EAAG,EAC3C,MACUA,EAAOvF,EAAQ93D,GAAG04D,GAAK,EAAIZ,EAAQ93D,GAAG24D,IACtCmE,EAAaj3B,WAAWw3B,EAAM,EAAG,GAGjCP,EAAaj3B,WAAWm2B,EAAU,GAAKlE,EAAQ93D,GAAG04D,GAAK,MAAQsD,EAAU,GAAKmB,EAAO,IAAM,GAE7F,IAAK7hD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,GACzB8/C,EAAgBlC,EAAU59C,GAAGyC,GACXje,EAAE44B,WAElB0E,EADmB87B,EAAU59C,GAAGvb,EACR26D,QAAQ5C,EAAQ93D,GAAG44D,UAAUt9C,GAAIwlC,EAAS/iC,EAAEzC,GAAGvb,EAAEy5D,YAE5D,IAAT8C,GAAiC,IAAnBj/C,EAAa/B,IACzBxjB,KAAK2jE,eACHr+B,EAAK3kC,OACPgkE,GAAiBrB,EAAct7D,EAAEkC,EAAIo7B,EAAK,GAE1Cq/B,GAAiBrB,EAAct7D,EAAEkC,EAAIo7B,EAE9BA,EAAK3kC,OACd6jE,GAAQlB,EAAct7D,EAAEkC,EAAIo7B,EAAK,GAEjCk/B,GAAQlB,EAAct7D,EAAEkC,EAAIo7B,IAkBpC,IAbI/f,EAAaw3C,kBACflB,EAAKt2C,EAAas2C,IAAM,GAEtBt2C,EAAau3C,kBAEbhW,EADEvhC,EAAauhC,GACV,CAACvhC,EAAauhC,GAAG,GAAIvhC,EAAauhC,GAAG,GAAIvhC,EAAauhC,GAAG,IAEzD,CAAC,EAAG,EAAG,IAGZvhC,EAAas3C,eAAiBt3C,EAAau2C,KAC7CA,EAAK,CAACv2C,EAAau2C,GAAG,GAAIv2C,EAAau2C,GAAG,GAAIv2C,EAAau2C,GAAG,KAE3Dt4C,EAAI,EAAGA,EAAIC,EAAMD,GAAK,GACzB8/C,EAAgBlC,EAAU59C,GAAGyC,GACXA,EAAE2a,YAElB0E,EADmB87B,EAAU59C,GAAGvb,EACR26D,QAAQ5C,EAAQ93D,GAAG44D,UAAUt9C,GAAIwlC,EAAS/iC,EAAEzC,GAAGvb,EAAEy5D,aAChE/gE,OACPqkE,EAAaj3B,WAAWu1B,EAAcr9C,EAAE/b,EAAE,GAAKo7B,EAAK,IAAKg+B,EAAcr9C,EAAE/b,EAAE,GAAKo7B,EAAK,GAAIg+B,EAAcr9C,EAAE/b,EAAE,GAAKo7B,EAAK,IAErH0/B,EAAaj3B,WAAWu1B,EAAcr9C,EAAE/b,EAAE,GAAKo7B,GAAOg+B,EAAcr9C,EAAE/b,EAAE,GAAKo7B,EAAMg+B,EAAcr9C,EAAE/b,EAAE,GAAKo7B,IAIhH,IAAK9hB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,GACzB8/C,EAAgBlC,EAAU59C,GAAGyC,GACXhe,EAAE24B,YAElB0E,EADmB87B,EAAU59C,GAAGvb,EACR26D,QAAQ5C,EAAQ93D,GAAG44D,UAAUt9C,GAAIwlC,EAAS/iC,EAAEzC,GAAGvb,EAAEy5D,aAChE/gE,OACPqkE,EAAat3B,MAAM,GAAK41B,EAAcr7D,EAAEiC,EAAE,GAAK,GAAKo7B,EAAK,GAAI,GAAKg+B,EAAcr7D,EAAEiC,EAAE,GAAK,GAAKo7B,EAAK,GAAI,GAEvG0/B,EAAat3B,MAAM,GAAK41B,EAAcr7D,EAAEiC,EAAE,GAAK,GAAKo7B,EAAM,GAAKg+B,EAAcr7D,EAAEiC,EAAE,GAAK,GAAKo7B,EAAM,IAIvG,IAAK9hB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAAG,CA8C5B,GA7CA8/C,EAAgBlC,EAAU59C,GAAGyC,EAE7Bqf,EADmB87B,EAAU59C,GAAGvb,EACR26D,QAAQ5C,EAAQ93D,GAAG44D,UAAUt9C,GAAIwlC,EAAS/iC,EAAEzC,GAAGvb,EAAEy5D,YACrE4B,EAAcp9C,GAAG0a,WACf0E,EAAK3kC,OACPqkE,EAAav3B,cAAc61B,EAAcp9C,GAAGhc,EAAIo7B,EAAK,GAAIg+B,EAAcn9C,GAAGjc,EAAIo7B,EAAK,IAEnF0/B,EAAav3B,cAAc61B,EAAcp9C,GAAGhc,EAAIo7B,EAAMg+B,EAAcn9C,GAAGjc,EAAIo7B,IAG3Eg+B,EAAc3iD,EAAEigB,WACd0E,EAAK3kC,OACPqkE,EAAa33B,SAASi2B,EAAc3iD,EAAEzW,EAAIo7B,EAAK,IAE/C0/B,EAAa33B,SAASi2B,EAAc3iD,EAAEzW,EAAIo7B,IAG1Cg+B,EAAczsB,GAAGjW,WACf0E,EAAK3kC,OACPqkE,EAAa53B,QAAQk2B,EAAczsB,GAAG3sC,EAAIo7B,EAAK,IAE/C0/B,EAAa53B,QAAQk2B,EAAczsB,GAAG3sC,EAAIo7B,IAG1Cg+B,EAAc1sB,GAAGhW,WACf0E,EAAK3kC,OACPqkE,EAAa73B,QAAQm2B,EAAc1sB,GAAG1sC,EAAIo7B,EAAK,IAE/C0/B,EAAa73B,QAAQm2B,EAAc1sB,GAAG1sC,EAAIo7B,IAG1Cg+B,EAAcjmD,EAAEujB,WACd0E,EAAK3kC,OACP+kE,IAAgBpC,EAAcjmD,EAAEnT,EAAIo7B,EAAK,GAAKogC,GAAepgC,EAAK,GAElEogC,IAAgBpC,EAAcjmD,EAAEnT,EAAIo7B,EAAOogC,GAAepgC,GAG1D/f,EAAaw3C,iBAAmBuG,EAAczH,GAAGj7B,WAC/C0E,EAAK3kC,OACPk7D,GAAMyH,EAAczH,GAAG3xD,EAAIo7B,EAAK,GAEhCu2B,GAAMyH,EAAczH,GAAG3xD,EAAIo7B,GAG3B/f,EAAau3C,iBAAmBwG,EAAcxc,GAAGlmB,SACnD,IAAK1/B,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAClBokC,EAAK3kC,OACPmmD,EAAG5lD,KAAOoiE,EAAcxc,GAAG58C,EAAEhJ,GAAK4lD,EAAG5lD,IAAMokC,EAAK,GAEhDwhB,EAAG5lD,KAAOoiE,EAAcxc,GAAG58C,EAAEhJ,GAAK4lD,EAAG5lD,IAAMokC,EAIjD,GAAI/f,EAAas3C,eAAiBt3C,EAAau2C,GAAI,CACjD,GAAIwH,EAAcxH,GAAGl7B,SACnB,IAAK1/B,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAClBokC,EAAK3kC,OACPm7D,EAAG56D,KAAOoiE,EAAcxH,GAAG5xD,EAAEhJ,GAAK46D,EAAG56D,IAAMokC,EAAK,GAEhDw2B,EAAG56D,KAAOoiE,EAAcxH,GAAG5xD,EAAEhJ,GAAK46D,EAAG56D,IAAMokC,EAI7Cg+B,EAAchC,GAAG1gC,WAEjBk7B,EADEx2B,EAAK3kC,OACFugB,YAAY46C,EAAIwH,EAAchC,GAAGp3D,EAAIo7B,EAAK,IAE1CpkB,YAAY46C,EAAIwH,EAAchC,GAAGp3D,EAAIo7B,IAG1Cg+B,EAAc/B,GAAG3gC,WAEjBk7B,EADEx2B,EAAK3kC,OACFmgB,mBAAmBg7C,EAAIwH,EAAc/B,GAAGr3D,EAAIo7B,EAAK,IAEjDxkB,mBAAmBg7C,EAAIwH,EAAc/B,GAAGr3D,EAAIo7B,IAGjDg+B,EAAc9B,GAAG5gC,WAEjBk7B,EADEx2B,EAAK3kC,OACFsgB,mBAAmB66C,EAAIwH,EAAc9B,GAAGt3D,EAAIo7B,EAAK,IAEjDrkB,mBAAmB66C,EAAIwH,EAAc9B,GAAGt3D,EAAIo7B,GAGjE,CACA,CACQ,IAAK9hB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,GACzB8/C,EAAgBlC,EAAU59C,GAAGyC,GACXze,EAAEo5B,WAElB0E,EADmB87B,EAAU59C,GAAGvb,EACR26D,QAAQ5C,EAAQ93D,GAAG44D,UAAUt9C,GAAIwlC,EAAS/iC,EAAEzC,GAAGvb,EAAEy5D,YACrE1hE,KAAK2jE,eACHr+B,EAAK3kC,OACPqkE,EAAaj3B,UAAU,EAAGu1B,EAAc97D,EAAE0C,EAAE,GAAKo7B,EAAK,IAAKg+B,EAAc97D,EAAE0C,EAAE,GAAKo7B,EAAK,IAEvF0/B,EAAaj3B,UAAU,EAAGu1B,EAAc97D,EAAE0C,EAAE,GAAKo7B,GAAOg+B,EAAc97D,EAAE0C,EAAE,GAAKo7B,GAExEA,EAAK3kC,OACdqkE,EAAaj3B,UAAUu1B,EAAc97D,EAAE0C,EAAE,GAAKo7B,EAAK,GAAIg+B,EAAc97D,EAAE0C,EAAE,GAAKo7B,EAAK,IAAKg+B,EAAc97D,EAAE0C,EAAE,GAAKo7B,EAAK,IAEpH0/B,EAAaj3B,UAAUu1B,EAAc97D,EAAE0C,EAAE,GAAKo7B,EAAMg+B,EAAc97D,EAAE0C,EAAE,GAAKo7B,GAAOg+B,EAAc97D,EAAE0C,EAAE,GAAKo7B,IAa/G,GATI/f,EAAaw3C,kBACf4I,EAAW9J,EAAK,EAAI,EAAIA,GAEtBt2C,EAAau3C,kBACf8I,EAAW,OAASvyD,KAAKC,MAAc,IAARwzC,EAAG,IAAY,IAAMzzC,KAAKC,MAAc,IAARwzC,EAAG,IAAY,IAAMzzC,KAAKC,MAAc,IAARwzC,EAAG,IAAY,KAE5GvhC,EAAas3C,eAAiBt3C,EAAau2C,KAC7C+J,EAAW,OAASxyD,KAAKC,MAAc,IAARwoD,EAAG,IAAY,IAAMzoD,KAAKC,MAAc,IAARwoD,EAAG,IAAY,IAAMzoD,KAAKC,MAAc,IAARwoD,EAAG,IAAY,KAE5G97D,KAAK2jE,eAAgB,CAGvB,GAFAqB,EAAaj3B,UAAU,GAAIxoB,EAAao3C,IACxCqI,EAAaj3B,UAAU,EAAGm2B,EAAU,GAAKmB,EAAO,IAAOZ,EAAM,GACzDzkE,KAAKgkE,UAAUx8D,EAAE0C,EAAG,CACtB66D,GAAYH,EAAajoC,MAAM,GAAK8e,EAAU9e,MAAM,KAAOioC,EAAajoC,MAAM,GAAK8e,EAAU9e,MAAM,IACnG,IAAIqe,GAA4B,IAAtB3nC,KAAKozD,KAAK1B,GAAkB1xD,KAAKwL,GACvC+lD,EAAajoC,MAAM,GAAK8e,EAAU9e,MAAM,KAC1Cqe,IAAO,KAETgqB,EAAaj4B,QAAQiO,GAAM3nC,KAAKwL,GAAK,IACjD,CACUmmD,EAAaj3B,UAAUy3B,EAAUC,EAAU,GAC3Cd,GAAiBT,EAAU,GAAKlE,EAAQ93D,GAAG04D,GAAK,KAC5CZ,EAAQ93D,EAAI,IAAMy5B,IAAQq+B,EAAQ93D,EAAI,GAAGy5B,MAC3CgjC,GAAiB3E,EAAQ93D,GAAG04D,GAAK,EACjC+D,GAAmC,KAAlBp/C,EAAay4B,GAAaz4B,EAAa03C,UAEpE,KAAe,CAML,OALA+H,EAAaj3B,UAAUy2B,EAAMC,EAAM,GAC/Bl/C,EAAaq3C,IAEfoI,EAAaj3B,UAAUxoB,EAAaq3C,GAAG,GAAIr3C,EAAaq3C,GAAG,GAAKr3C,EAAa82C,OAAQ,GAE/E92C,EAAa/B,GACnB,KAAK,EACHwhD,EAAaj3B,UAAUiyB,EAAQ93D,GAAG64D,sBAAwBx7C,EAAai3C,eAAiBj3C,EAAa+2C,SAAW/2C,EAAam3C,WAAWsD,EAAQ93D,GAAG6kB,OAAQ,EAAG,GAC9J,MACF,KAAK,EACHi4C,EAAaj3B,UAAUiyB,EAAQ93D,GAAG64D,sBAAwBx7C,EAAai3C,eAAiBj3C,EAAa+2C,SAAW/2C,EAAam3C,WAAWsD,EAAQ93D,GAAG6kB,OAAS,EAAG,EAAG,GAKtKi4C,EAAaj3B,UAAU,GAAIxoB,EAAao3C,IACxCqI,EAAaj3B,UAAUw3B,EAAM,EAAG,GAChCP,EAAaj3B,UAAUm2B,EAAU,GAAKlE,EAAQ93D,GAAG04D,GAAK,KAAOsD,EAAU,GAAKmB,EAAO,IAAM,GACzFb,GAAQxE,EAAQ93D,GAAG2lC,EAAsB,KAAlBtoB,EAAay4B,GAAaz4B,EAAa03C,SACxE,CAC2B,SAAfyG,EACFwC,GAAUlB,EAAarzB,QACC,QAAf+xB,EACTwC,GAAUlB,EAAalzB,UAEvBq0B,GAAU,CAACnB,EAAa/nE,MAAM,GAAI+nE,EAAa/nE,MAAM,GAAI+nE,EAAa/nE,MAAM,GAAI+nE,EAAa/nE,MAAM,GAAI+nE,EAAa/nE,MAAM,GAAI+nE,EAAa/nE,MAAM,GAAI+nE,EAAa/nE,MAAM,GAAI+nE,EAAa/nE,MAAM,GAAI+nE,EAAa/nE,MAAM,GAAI+nE,EAAa/nE,MAAM,GAAI+nE,EAAa/nE,MAAM,IAAK+nE,EAAa/nE,MAAM,IAAK+nE,EAAa/nE,MAAM,IAAK+nE,EAAa/nE,MAAM,IAAK+nE,EAAa/nE,MAAM,IAAK+nE,EAAa/nE,MAAM,KAE9X6oE,EAAUJ,CAClB,CACUT,GAAwB/8D,GAC1Bk9D,EAAc,IAAIxJ,YAAYkK,EAASH,EAAUC,EAAUC,EAAUK,GAASC,IAC9EnmE,KAAKmkE,gBAAgB95D,KAAK+6D,GAC1BH,GAAwB,EACxBjlE,KAAKokE,oBAAqB,IAE1BgB,EAAcplE,KAAKmkE,gBAAgBj8D,GACnClI,KAAKokE,mBAAqBgB,EAAYrG,OAAO+G,EAASH,EAAUC,EAAUC,EAAUK,GAASC,KAAYnmE,KAAKokE,mBAEtH,CA/fA,CAggBA,EACEX,qBAAqB5gE,UAAUujC,SAAW,WACpCpmC,KAAK8jE,MAAMrzC,WAAWgV,UAAYzlC,KAAKg8D,WAG3Ch8D,KAAKg8D,SAAWh8D,KAAK8jE,MAAMrzC,WAAWgV,QACtCzlC,KAAKgnC,2BACT,EACEy8B,qBAAqB5gE,UAAUivD,QAAU,IAAIrlB,OAC7Cg3B,qBAAqB5gE,UAAUujE,kBAAoB,GACnD5rD,gBAAgB,CAACqsB,0BAA2B48B,sBAG5CY,aAAaxhE,UAAU8wD,YAAc,SAAU/gD,EAAM6d,EAAYlM,GAC/DvkB,KAAKokE,oBAAqB,EAC1BpkE,KAAKqgC,YACLrgC,KAAKqqD,aAAaz3C,EAAM6d,EAAYlM,GACpCvkB,KAAK6iE,aAAe,IAAI9G,aAAa/7D,KAAM4S,EAAK5K,EAAGhI,KAAK8mC,mBACxD9mC,KAAK0mE,aAAe,IAAIjD,qBAAqB7wD,EAAK5K,EAAGhI,KAAK0jE,WAAY1jE,MACtEA,KAAKywD,cAAc79C,EAAM6d,EAAYlM,GACrCvkB,KAAK41D,gBACL51D,KAAK6nD,iBACL7nD,KAAK+zD,sBACL/zD,KAAKg0D,0BACLh0D,KAAKg1D,6BACLh1D,KAAK81D,gBACL91D,KAAK21B,OACL31B,KAAK0mE,aAAapC,iBAAiBtkE,KAAK8mC,kBAC5C,EACEu9B,aAAaxhE,UAAUorB,aAAe,SAAUq6B,GAC9CtoD,KAAKulC,MAAO,EACZvlC,KAAKqoD,uBAAuBC,GAC5BtoD,KAAK0sD,kBAAkBpE,EAAKtoD,KAAK8nD,UACrC,EACEuc,aAAaxhE,UAAU8jE,gBAAkB,SAAU3B,EAAc3gD,GAC/D,IAAIb,EAEA0uC,EADAzuC,EAAOY,EAAO1jB,OAEdimE,EAAW,GACf,IAAKpjD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACJ,OAAjBa,EAAOb,GAAGS,KACZiuC,EAAY7tC,EAAOb,GAAGqB,GAAG3jB,EACzB0lE,GAAY/M,iBAAiB3H,EAAWA,EAAUhqD,EAAEvH,QAAQ,EAAMqkE,IAGtE,OAAO4B,CACX,EACEvC,aAAaxhE,UAAUizB,mBAAqB,SAAU+rC,EAAS9rC,GAC7D/1B,KAAK6iE,aAAa/sC,mBAAmB+rC,EAAS9rC,EAClD,EACEsuC,aAAaxhE,UAAUm/D,cAAgB,SAAUC,GAC/CjiE,KAAK6iE,aAAab,cAAcC,EACpC,EACEoC,aAAaxhE,UAAUq/D,mBAAqB,SAAU2E,GACpD7mE,KAAK6iE,aAAaX,mBAAmB2E,EACzC,EACExC,aAAaxhE,UAAUikE,4BAA8B,SAAUvhD,EAAcy/C,EAAc+B,EAAYvC,EAAMC,GAK3G,OAJIl/C,EAAaq3C,IACfoI,EAAaj3B,UAAUxoB,EAAaq3C,GAAG,GAAIr3C,EAAaq3C,GAAG,GAAKr3C,EAAa82C,OAAQ,GAEvF2I,EAAaj3B,UAAU,GAAIxoB,EAAao3C,GAAI,GACpCp3C,EAAa/B,GACnB,KAAK,EACHwhD,EAAaj3B,UAAUxoB,EAAai3C,eAAiBj3C,EAAa+2C,SAAW/2C,EAAam3C,WAAWqK,IAAc,EAAG,GACtH,MACF,KAAK,EACH/B,EAAaj3B,UAAUxoB,EAAai3C,eAAiBj3C,EAAa+2C,SAAW/2C,EAAam3C,WAAWqK,IAAe,EAAG,EAAG,GAK9H/B,EAAaj3B,UAAUy2B,EAAMC,EAAM,EACvC,EACEJ,aAAaxhE,UAAUmkE,WAAa,SAAUC,GAC5C,MAAO,OAAS5zD,KAAKC,MAAqB,IAAf2zD,EAAU,IAAY,IAAM5zD,KAAKC,MAAqB,IAAf2zD,EAAU,IAAY,IAAM5zD,KAAKC,MAAqB,IAAf2zD,EAAU,IAAY,GACnI,EACE5C,aAAaxhE,UAAUqkE,UAAY,IAAItL,YACvCyI,aAAaxhE,UAAU6oB,QAAU,WAAY,EAC7C24C,aAAaxhE,UAAUskE,aAAe,YAChCnnE,KAAK6iE,aAAat9B,MAAQvlC,KAAK6iE,aAAaj9B,iBAC9C5lC,KAAKonE,eACLpnE,KAAK6iE,aAAaj9B,eAAgB,EAClC5lC,KAAK6iE,aAAat9B,MAAO,EAE/B,EAEE,IAAI8hC,eAAiB,CACnBhjD,OAAQ,IAEV,SAASijD,qBAAqB10D,EAAM6d,EAAYlM,GAC9CvkB,KAAKunE,UAAY,GACjBvnE,KAAK0jE,WAAa,MAClB1jE,KAAK2zD,YAAY/gD,EAAM6d,EAAYlM,EACvC,CAoRE,SAASijD,cAAc50D,EAAM6d,EAAYlM,GACvCvkB,KAAK2zD,YAAY/gD,EAAM6d,EAAYlM,EACvC,CAaE,SAASkjD,YAAY70D,EAAM6d,EAAYlM,GACrCvkB,KAAKqgC,YACLrgC,KAAKqqD,aAAaz3C,EAAM6d,EAAYlM,GACpCvkB,KAAKqgC,YACLrgC,KAAKywD,cAAc79C,EAAM6d,EAAYlM,GACrCvkB,KAAK41D,eACT,CAaE,SAAS8R,kBAAkB,CAgN3B,SAASC,eAAe,CAyFxB,SAASC,eAAeh1D,EAAM6d,EAAYlM,GACxCvkB,KAAKqjB,OAASzQ,EAAKyQ,OACnBrjB,KAAK6nE,YAAa,EAClB7nE,KAAKojB,gBAAiB,EACtBpjB,KAAKwuD,gBAAkB,GACvBxuD,KAAKi/C,SAAWj/C,KAAKqjB,OAASlG,iBAAiBnd,KAAKqjB,OAAO1iB,QAAU,GACrEX,KAAK2zD,YAAY/gD,EAAM6d,EAAYlM,GACnCvkB,KAAKwtB,GAAK5a,EAAK4a,GAAKiZ,gBAAgBC,QAAQ1mC,KAAM4S,EAAK4a,GAAI,EAAGiD,EAAW5B,UAAW7uB,MAAQ,CAC1F4qD,cAAc,EAEpB,CAME,SAASkd,YAAYjZ,EAAelyD,GAClCqD,KAAK6uD,cAAgBA,EACrB7uD,KAAKqjB,OAAS,KACdrjB,KAAKglC,eAAgB,EACrBhlC,KAAK+nE,WAAa/lD,SAAS,OAC3B,IAAIgmD,EAAY,GAChB,GAAIrrE,GAAUA,EAAOub,MAAO,CAC1B,IAAI+vD,EAAejmD,SAAS,SACxBkmD,EAAU3nD,kBACd0nD,EAAazwC,aAAa,KAAM0wC,GAChCD,EAAankB,YAAcnnD,EAAOub,MAClClY,KAAK+nE,WAAW93D,YAAYg4D,GAC5BD,GAAaE,CACnB,CACI,GAAIvrE,GAAUA,EAAOwrE,YAAa,CAChC,IAAIC,EAAcpmD,SAAS,QACvBqmD,EAAS9nD,kBACb6nD,EAAY5wC,aAAa,KAAM6wC,GAC/BD,EAAYtkB,YAAcnnD,EAAOwrE,YACjCnoE,KAAK+nE,WAAW93D,YAAYm4D,GAC5BJ,GAAa,IAAMK,CACzB,CACQL,GACFhoE,KAAK+nE,WAAWvwC,aAAa,kBAAmBwwC,GAElD,IAAIt3C,EAAO1O,SAAS,QACpBhiB,KAAK+nE,WAAW93D,YAAYygB,GAC5B,IAAIy+B,EAAcntC,SAAS,KAC3BhiB,KAAK+nE,WAAW93D,YAAYk/C,GAC5BnvD,KAAKssD,aAAe6C,EACpBnvD,KAAK2oD,aAAe,CAClB2f,oBAAqB3rE,GAAUA,EAAO2rE,qBAAuB,gBAC7DpS,yBAA0Bv5D,GAAUA,EAAOu5D,0BAA4B,iBACvEqS,kBAAmB5rE,GAAUA,EAAO4rE,mBAAqB,UACzDta,gBAAiBtxD,GAAUA,EAAOsxD,kBAAmB,EACrDrF,oBAAqBjsD,IAAuC,IAA7BA,EAAOisD,mBACtC4f,YAAa7rE,GAAUA,EAAO6rE,cAAe,EAC7CC,YAAa9rE,GAAUA,EAAO8rE,cAAe,EAC7C12D,UAAWpV,GAAUA,EAAOoV,WAAa,GACzCkG,GAAItb,GAAUA,EAAOsb,IAAM,GAC3BywD,UAAW/rE,GAAUA,EAAO+rE,UAC5BC,WAAY,CACVzjE,MAAOvI,GAAUA,EAAOgsE,YAAchsE,EAAOgsE,WAAWzjE,OAAS,OACjEC,OAAQxI,GAAUA,EAAOgsE,YAAchsE,EAAOgsE,WAAWxjE,QAAU,OACnEnG,EAAGrC,GAAUA,EAAOgsE,YAAchsE,EAAOgsE,WAAW3pE,GAAK,KACzDwK,EAAG7M,GAAUA,EAAOgsE,YAAchsE,EAAOgsE,WAAWn/D,GAAK,MAE3DtE,MAAOvI,GAAUA,EAAOuI,MACxBC,OAAQxI,GAAUA,EAAOwI,OACzByjE,gBAAiBjsE,QAAoC0J,IAA1B1J,EAAOisE,gBAAgCjsE,EAAOisE,gBAE3E5oE,KAAKywB,WAAa,CAChB8U,MAAM,EACN/E,UAAU,EACV9P,KAAMA,EACNi4B,aAAc3oD,KAAK2oD,cAErB3oD,KAAKi/C,SAAW,GAChBj/C,KAAKwuD,gBAAkB,GACvBxuD,KAAK6oE,WAAY,EACjB7oE,KAAK+yB,aAAe,KACxB,CAME,SAAS+1C,wBACP9oE,KAAK+oE,UAAY,CAAA,EACjB/oE,KAAKgpE,aAAe,GACpBhpE,KAAKipE,oBAAsB,CAC/B,CArrBEzuD,gBAAgB,CAACyvC,YAAagF,iBAAkBsE,eAAgBC,iBAAkBtJ,aAAcuJ,qBAAsB4Q,cAAeiD,sBACrIA,qBAAqBzkE,UAAUizD,cAAgB,WACzC91D,KAAK4S,KAAKs2D,cAAgBlpE,KAAKywB,WAAWmB,YAAYhM,QACxD5lB,KAAKmpE,cAAgBnnD,SAAS,QAEpC,EACEslD,qBAAqBzkE,UAAUumE,kBAAoB,SAAUC,GAK3D,IAJA,IAAInhE,EAAI,EACJ0S,EAAMyuD,EAAU1oE,OAChB2oE,EAAe,GACfC,EAAqB,GAClBrhE,EAAI0S,GACLyuD,EAAUnhE,KAAOP,OAAO6hE,aAAa,KAAOH,EAAUnhE,KAAOP,OAAO6hE,aAAa,IACnFF,EAAaj/D,KAAKk/D,GAClBA,EAAqB,IAErBA,GAAsBF,EAAUnhE,GAElCA,GAAK,EAGP,OADAohE,EAAaj/D,KAAKk/D,GACXD,CACX,EACEhC,qBAAqBzkE,UAAU4mE,eAAiB,SAAU72D,EAAM86B,GAK9D,GAAI96B,EAAKyR,QAAUzR,EAAKyR,OAAO1jB,OAAQ,CACrC,IAAI8nC,EAAQ71B,EAAKyR,OAAO,GACxB,GAAIokB,EAAM3jB,GAAI,CACZ,IAAI4kD,EAAYjhC,EAAM3jB,GAAG2jB,EAAM3jB,GAAGnkB,OAAS,GACvC+oE,EAAUzhE,IACZyhE,EAAUzhE,EAAE/G,EAAE,GAAKwsC,EACnBg8B,EAAUzhE,EAAE/G,EAAE,GAAKwsC,EAE7B,CACA,CACI,OAAO96B,CACX,EACE00D,qBAAqBzkE,UAAUukE,aAAe,WAE5C,IAAIl/D,EACA0S,EAFJ5a,KAAKimC,mBAAmBjmC,MAGxB,IAAIulB,EAAevlB,KAAK6iE,aAAazG,YACrCp8D,KAAKmkE,gBAAkBhnD,iBAAiBoI,EAAeA,EAAasoB,EAAEltC,OAAS,GAC3E4kB,EAAau2C,GACf97D,KAAKssD,aAAa90B,aAAa,OAAQx3B,KAAKgnE,WAAWzhD,EAAau2C,KAEpE97D,KAAKssD,aAAa90B,aAAa,OAAQ,iBAErCjS,EAAauhC,KACf9mD,KAAKssD,aAAa90B,aAAa,SAAUx3B,KAAKgnE,WAAWzhD,EAAauhC,KACtE9mD,KAAKssD,aAAa90B,aAAa,eAAgBjS,EAAas2C,KAE9D77D,KAAKssD,aAAa90B,aAAa,YAAajS,EAAa03C,WACzD,IAAIvf,EAAW19C,KAAKywB,WAAWmB,YAAYq1B,cAAc1hC,EAAahc,GACtE,GAAIm0C,EAASqG,OACX/jD,KAAKssD,aAAa90B,aAAa,QAASkmB,EAASqG,YAC5C,CACL/jD,KAAKssD,aAAa90B,aAAa,cAAekmB,EAASmG,SACvD,IAAIhG,EAAUt4B,EAAas4B,QACvBD,EAASr4B,EAAaq4B,OAC1B59C,KAAKssD,aAAa90B,aAAa,aAAcomB,GAC7C59C,KAAKssD,aAAa90B,aAAa,cAAeqmB,EACpD,CACI79C,KAAKssD,aAAa90B,aAAa,aAAcjS,EAAavd,GAC1D,IAGI2hE,EAHA3J,EAAUz6C,EAAasoB,GAAK,GAC5B+7B,IAAe5pE,KAAKywB,WAAWmB,YAAYhM,MAC/ChL,EAAMolD,EAAQr/D,OAEd,IAAIqkE,EAAehlE,KAAK8xD,QAEpBoX,EAAclpE,KAAK4S,KAAKs2D,YACxB1E,EAAO,EACPC,EAAO,EACPa,GAAY,EACZ/E,EAAmC,KAAlBh7C,EAAay4B,GAAaz4B,EAAa03C,UAC5D,IAAIiM,GAAgBU,GAAerkD,EAAaooB,GAoCzC,CACL,IACI9nB,EADAgkD,EAAoB7pE,KAAKunE,UAAU5mE,OAEvC,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAAG,CAQ3B,GAPKlI,KAAKunE,UAAUr/D,KAClBlI,KAAKunE,UAAUr/D,GAAK,CAClB4hE,KAAM,KACNC,UAAW,KACXC,MAAO,QAGNJ,IAAeV,GAAqB,IAANhhE,EAAS,CAE1C,GADAyhE,EAAQE,EAAoB3hE,EAAIlI,KAAKunE,UAAUr/D,GAAG4hE,KAAO9nD,SAAS4nD,EAAa,IAAM,QACjFC,GAAqB3hE,EAAG,CAK1B,GAJAyhE,EAAMnyC,aAAa,iBAAkB,QACrCmyC,EAAMnyC,aAAa,kBAAmB,SACtCmyC,EAAMnyC,aAAa,oBAAqB,KACxCx3B,KAAKunE,UAAUr/D,GAAG4hE,KAAOH,EACrBC,EAAY,CACd,IAAIG,EAAY/nD,SAAS,KACzB2nD,EAAM15D,YAAY85D,GAClB/pE,KAAKunE,UAAUr/D,GAAG6hE,UAAYA,CAC5C,CACY/pE,KAAKunE,UAAUr/D,GAAG4hE,KAAOH,EACzB3pE,KAAKssD,aAAar8C,YAAY05D,EAC1C,CACUA,EAAMplE,MAAM2B,QAAU,SAChC,CAcQ,GAbA8+D,EAAah7B,QACTk/B,IACElJ,EAAQ93D,GAAGC,IACbq8D,GAAQjE,EACRkE,GAAQl/C,EAAay3C,QACrByH,GAAQa,EAAY,EAAI,EACxBA,GAAY,GAEdtlE,KAAK8mE,4BAA4BvhD,EAAcy/C,EAAchF,EAAQ93D,GAAG6kB,KAAMy3C,EAAMC,GACpFD,GAAQxE,EAAQ93D,GAAG2lC,GAAK,EAExB22B,GAAQjE,GAENqJ,EAAY,CAEd,IAAIK,EAEJ,GAAmB,KAHnBpkD,EAAW7lB,KAAKywB,WAAWmB,YAAYm1B,YAAYxhC,EAAa23C,UAAUh1D,GAAIw1C,EAASE,OAAQ59C,KAAKywB,WAAWmB,YAAYq1B,cAAc1hC,EAAahc,GAAGs6C,UAG5I77C,EACXiiE,EAAe,IAAIrC,eAAe/hD,EAASjT,KAAM5S,KAAKywB,WAAYzwB,UAC7D,CACL,IAAI4S,EAAOy0D,eACPxhD,EAASjT,MAAQiT,EAASjT,KAAKyR,SACjCzR,EAAO5S,KAAKypE,eAAe5jD,EAASjT,KAAM2S,EAAa03C,YAEzDgN,EAAe,IAAIxO,gBAAgB7oD,EAAM5S,KAAKywB,WAAYzwB,KACtE,CACU,GAAIA,KAAKunE,UAAUr/D,GAAG8hE,MAAO,CAC3B,IAAIA,EAAQhqE,KAAKunE,UAAUr/D,GAAG8hE,MAC9BhqE,KAAKunE,UAAUr/D,GAAG6hE,UAAUviB,YAAYwiB,EAAM1d,cAC9C0d,EAAMt+C,SAClB,CACU1rB,KAAKunE,UAAUr/D,GAAG8hE,MAAQC,EAC1BA,EAAaC,QAAS,EACtBD,EAAah8C,aAAa,GAC1Bg8C,EAAa12C,cACbvzB,KAAKunE,UAAUr/D,GAAG6hE,UAAU95D,YAAYg6D,EAAa3d,cAGlC,IAAfzmC,EAAS7d,GACXhI,KAAKunE,UAAUr/D,GAAG6hE,UAAUvyC,aAAa,YAAa,SAAWjS,EAAa03C,UAAY,IAAM,IAAM13C,EAAa03C,UAAY,IAAM,IAEjJ,MACciM,GACFS,EAAMnyC,aAAa,YAAa,aAAewtC,EAAa/nE,MAAM,IAAM,IAAM+nE,EAAa/nE,MAAM,IAAM,KAEzG0sE,EAAM7lB,YAAckc,EAAQ93D,GAAGuW,IAC/BkrD,EAAM39C,eAAe,uCAAwC,YAAa,WAGpF,CACUk9C,GAAeS,GACjBA,EAAMnyC,aAAa,IAzHR,GA2HnB,KArHwD,CAClD,IAAI2yC,EAAWnqE,KAAKmpE,cAChBniE,EAAU,QACd,OAAQue,EAAa/B,GACnB,KAAK,EACHxc,EAAU,MACV,MACF,KAAK,EACHA,EAAU,SACV,MACF,QACEA,EAAU,QAGdmjE,EAAS3yC,aAAa,cAAexwB,GACrCmjE,EAAS3yC,aAAa,iBAAkB+oC,GACxC,IAAIzc,EAAc9jD,KAAKopE,kBAAkB7jD,EAAa23C,WAGtD,IAFAtiD,EAAMkpC,EAAYnjD,OAClB8jE,EAAOl/C,EAAaq3C,GAAKr3C,EAAaq3C,GAAG,GAAKr3C,EAAa82C,OAAS,EAC/Dn0D,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,GACxByhE,EAAQ3pE,KAAKunE,UAAUr/D,GAAG4hE,MAAQ9nD,SAAS,UACrC8hC,YAAcA,EAAY57C,GAChCyhE,EAAMnyC,aAAa,IAAK,GACxBmyC,EAAMnyC,aAAa,IAAKitC,GACxBkF,EAAMplE,MAAM2B,QAAU,UACtBikE,EAASl6D,YAAY05D,GAChB3pE,KAAKunE,UAAUr/D,KAClBlI,KAAKunE,UAAUr/D,GAAK,CAClB4hE,KAAM,KACNE,MAAO,OAGXhqE,KAAKunE,UAAUr/D,GAAG4hE,KAAOH,EACzBlF,GAAQl/C,EAAa43C,gBAEvBn9D,KAAKssD,aAAar8C,YAAYk6D,EACpC,CAkFI,KAAOjiE,EAAIlI,KAAKunE,UAAU5mE,QACxBX,KAAKunE,UAAUr/D,GAAG4hE,KAAKvlE,MAAM2B,QAAU,OACvCgC,GAAK,EAEPlI,KAAKm0D,cAAe,CACxB,EACEmT,qBAAqBzkE,UAAUimD,iBAAmB,WAGhD,GAFA9oD,KAAKiuB,aAAajuB,KAAKukB,KAAKygB,cAAgBhlC,KAAK4S,KAAKmT,IACtD/lB,KAAK+1D,qBACD/1D,KAAKm0D,aAAc,CACrBn0D,KAAKm0D,cAAe,EACpB,IAAIiW,EAAUpqE,KAAKssD,aAAa3hC,UAChC3qB,KAAKqqE,KAAO,CACVhlE,IAAK+kE,EAAQ5gE,EACb/D,KAAM2kE,EAAQprE,EACdkG,MAAOklE,EAAQllE,MACfC,OAAQilE,EAAQjlE,OAExB,CACI,OAAOnF,KAAKqqE,IAChB,EACE/C,qBAAqBzkE,UAAUujC,SAAW,WACxC,IAAIl+B,EAEA+hE,EADArvD,EAAM5a,KAAKunE,UAAU5mE,OAGzB,IADAX,KAAKglC,cAAgBhlC,KAAKukB,KAAKygB,cAC1B98B,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,GACxB+hE,EAAejqE,KAAKunE,UAAUr/D,GAAG8hE,SAE/BC,EAAah8C,aAAajuB,KAAKukB,KAAKygB,cAAgBhlC,KAAK4S,KAAKmT,IAC1DkkD,EAAa1kC,OACfvlC,KAAKulC,MAAO,GAItB,EACE+hC,qBAAqBzkE,UAAUkzD,mBAAqB,WAElD,GADA/1D,KAAKmnE,iBACAnnE,KAAK4S,KAAKs2D,aAAelpE,KAAKulC,QACjCvlC,KAAK0mE,aAAanC,YAAYvkE,KAAK6iE,aAAazG,YAAap8D,KAAKokE,oBAC9DpkE,KAAKokE,oBAAsBpkE,KAAK0mE,aAAatC,oBAAoB,CAEnE,IAAIl8D,EACA0S,EAFJ5a,KAAKm0D,cAAe,EAGpB,IAGImW,EACAC,EACAN,EALA9F,EAAkBnkE,KAAK0mE,aAAavC,gBACpCnE,EAAUhgE,KAAK6iE,aAAazG,YAAYvuB,EAK5C,IAJAjzB,EAAMolD,EAAQr/D,OAITuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACnB83D,EAAQ93D,GAAGC,IACdmiE,EAAiBnG,EAAgBj8D,GACjCqiE,EAAWvqE,KAAKunE,UAAUr/D,GAAG4hE,MAC7BG,EAAejqE,KAAKunE,UAAUr/D,GAAG8hE,QAE/BC,EAAa12C,cAEX+2C,EAAe/kC,KAAKuI,GACtBy8B,EAAS/yC,aAAa,YAAa8yC,EAAex8B,GAEhDw8B,EAAe/kC,KAAKloB,GACtBktD,EAAS/yC,aAAa,UAAW8yC,EAAejtD,GAE9CitD,EAAe/kC,KAAKs2B,IACtB0O,EAAS/yC,aAAa,eAAgB8yC,EAAezO,IAEnDyO,EAAe/kC,KAAKuhB,IACtByjB,EAAS/yC,aAAa,SAAU8yC,EAAexjB,IAE7CwjB,EAAe/kC,KAAKu2B,IACtByO,EAAS/yC,aAAa,OAAQ8yC,EAAexO,IAI3D,CAEA,EAKEthD,gBAAgB,CAACk5C,eAAgB8T,eACjCA,cAAc3kE,UAAUizD,cAAgB,WACtC,IAAIxG,EAAOttC,SAAS,QAIpBstC,EAAK93B,aAAa,QAASx3B,KAAK4S,KAAKipD,IACrCvM,EAAK93B,aAAa,SAAUx3B,KAAK4S,KAAK6vB,IACtC6sB,EAAK93B,aAAa,OAAQx3B,KAAK4S,KAAKk0C,IACpC9mD,KAAKssD,aAAar8C,YAAYq/C,EAClC,EASEmY,YAAY5kE,UAAUorB,aAAe,SAAUq6B,GAC7CtoD,KAAK0sD,kBAAkBpE,GAAK,EAChC,EACEmf,YAAY5kE,UAAU0wB,YAAc,WAAY,EAChDk0C,YAAY5kE,UAAU+pD,eAAiB,WACrC,OAAO,IACX,EACE6a,YAAY5kE,UAAU6oB,QAAU,WAAY,EAC5C+7C,YAAY5kE,UAAUimD,iBAAmB,WAAY,EACrD2e,YAAY5kE,UAAU8yB,KAAO,WAAY,EACzCnb,gBAAgB,CAACyvC,YAAagF,iBAAkBuE,iBAAkBtJ,cAAeud,aAGjFjtD,gBAAgB,CAACuwC,cAAe2c,iBAChCA,gBAAgB7kE,UAAU6qD,WAAa,SAAU96C,GAC/C,OAAO,IAAI60D,YAAY70D,EAAM5S,KAAKywB,WAAYzwB,KAClD,EACE0nE,gBAAgB7kE,UAAU8qD,YAAc,SAAU/6C,GAChD,OAAO,IAAI6oD,gBAAgB7oD,EAAM5S,KAAKywB,WAAYzwB,KACtD,EACE0nE,gBAAgB7kE,UAAU+qD,WAAa,SAAUh7C,GAC/C,OAAO,IAAI00D,qBAAqB10D,EAAM5S,KAAKywB,WAAYzwB,KAC3D,EACE0nE,gBAAgB7kE,UAAU0qD,YAAc,SAAU36C,GAChD,OAAO,IAAI8gD,cAAc9gD,EAAM5S,KAAKywB,WAAYzwB,KACpD,EACE0nE,gBAAgB7kE,UAAU4qD,YAAc,SAAU76C,GAChD,OAAO,IAAI40D,cAAc50D,EAAM5S,KAAKywB,WAAYzwB,KACpD,EACE0nE,gBAAgB7kE,UAAUitB,gBAAkB,SAAU0C,GACpDxyB,KAAK+nE,WAAWvwC,aAAa,QAAS,8BACtCx3B,KAAK+nE,WAAWvwC,aAAa,cAAe,gCACxCx3B,KAAK2oD,aAAa8f,YACpBzoE,KAAK+nE,WAAWvwC,aAAa,UAAWx3B,KAAK2oD,aAAa8f,aAE1DzoE,KAAK+nE,WAAWvwC,aAAa,UAAW,OAAShF,EAAS+vB,EAAI,IAAM/vB,EAAS9R,GAE1E1gB,KAAK2oD,aAAa6f,cACrBxoE,KAAK+nE,WAAWvwC,aAAa,QAAShF,EAAS+vB,GAC/CviD,KAAK+nE,WAAWvwC,aAAa,SAAUhF,EAAS9R,GAChD1gB,KAAK+nE,WAAWxjE,MAAMW,MAAQ,OAC9BlF,KAAK+nE,WAAWxjE,MAAMY,OAAS,OAC/BnF,KAAK+nE,WAAWxjE,MAAMqS,UAAY,qBAClC5W,KAAK+nE,WAAWxjE,MAAMgkE,kBAAoBvoE,KAAK2oD,aAAa4f,mBAE1DvoE,KAAK2oD,aAAazjD,OACpBlF,KAAK+nE,WAAWvwC,aAAa,QAASx3B,KAAK2oD,aAAazjD,OAEtDlF,KAAK2oD,aAAaxjD,QACpBnF,KAAK+nE,WAAWvwC,aAAa,SAAUx3B,KAAK2oD,aAAaxjD,QAEvDnF,KAAK2oD,aAAa52C,WACpB/R,KAAK+nE,WAAWvwC,aAAa,QAASx3B,KAAK2oD,aAAa52C,WAEtD/R,KAAK2oD,aAAa1wC,IACpBjY,KAAK+nE,WAAWvwC,aAAa,KAAMx3B,KAAK2oD,aAAa1wC,SAEnB5R,IAAhCrG,KAAK2oD,aAAa+f,WACpB1oE,KAAK+nE,WAAWvwC,aAAa,YAAax3B,KAAK2oD,aAAa+f,WAE9D1oE,KAAK+nE,WAAWvwC,aAAa,sBAAuBx3B,KAAK2oD,aAAa2f,qBAGtEtoE,KAAK6uD,cAAcz+B,QAAQngB,YAAYjQ,KAAK+nE,YAE5C,IAAIr3C,EAAO1wB,KAAKywB,WAAWC,KAC3B1wB,KAAK2uD,gBAAgBn8B,EAAU9B,GAC/B1wB,KAAKywB,WAAWw9B,gBAAkBjuD,KAAK2oD,aAAasF,gBACpDjuD,KAAK4S,KAAO4f,EACZ,IAAI28B,EAAcntC,SAAS,YACvBstC,EAAOttC,SAAS,QACpBstC,EAAK93B,aAAa,QAAShF,EAAS+vB,GACpC+M,EAAK93B,aAAa,SAAUhF,EAAS9R,GACrC4uC,EAAK93B,aAAa,IAAK,GACvB83B,EAAK93B,aAAa,IAAK,GACvB,IAAI+hC,EAASh5C,kBACb4uC,EAAY33B,aAAa,KAAM+hC,GAC/BpK,EAAYl/C,YAAYq/C,GACxBtvD,KAAKssD,aAAa90B,aAAa,YAAa,OAASld,kBAAoB,IAAMi/C,EAAS,KACxF7oC,EAAKzgB,YAAYk/C,GACjBnvD,KAAKqjB,OAASmP,EAASnP,OACvBrjB,KAAKi/C,SAAW9hC,iBAAiBqV,EAASnP,OAAO1iB,OACrD,EACE+mE,gBAAgB7kE,UAAU6oB,QAAU,WAMlC,IAAIxjB,EALAlI,KAAK6uD,cAAcz+B,UACrBpwB,KAAK6uD,cAAcz+B,QAAQqH,UAAY,IAEzCz3B,KAAKssD,aAAe,KACpBtsD,KAAKywB,WAAWC,KAAO,KAEvB,IAAI9V,EAAM5a,KAAKqjB,OAASrjB,KAAKqjB,OAAO1iB,OAAS,EAC7C,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACpBlI,KAAKi/C,SAAS/2C,IAAMlI,KAAKi/C,SAAS/2C,GAAGwjB,SACvC1rB,KAAKi/C,SAAS/2C,GAAGwjB,UAGrB1rB,KAAKi/C,SAASt+C,OAAS,EACvBX,KAAK6oE,WAAY,EACjB7oE,KAAK6uD,cAAgB,IACzB,EACE6Y,gBAAgB7kE,UAAUwwB,oBAAsB,WAAY,EAC5Dq0C,gBAAgB7kE,UAAU2nE,eAAiB,SAAU7oC,GACnD,IAAIz5B,EAAI,EACJ0S,EAAM5a,KAAKqjB,OAAO1iB,OACtB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB,GAAIlI,KAAKqjB,OAAOnb,GAAGy5B,MAAQA,EACzB,OAAOz5B,EAGX,OAAO,CACX,EACEw/D,gBAAgB7kE,UAAUsqD,UAAY,SAAU3lB,GAC9C,IAAIyX,EAAWj/C,KAAKi/C,SACpB,IAAIA,EAASzX,IAAgC,KAAxBxnC,KAAKqjB,OAAOmkB,GAAKvjB,GAAtC,CAGAg7B,EAASzX,IAAO,EAChB,IAAIv2B,EAAUjR,KAAKqtD,WAAWrtD,KAAKqjB,OAAOmkB,IAS1C,GARAyX,EAASzX,GAAOv2B,EACZyQ,yBAC0B,IAAxB1hB,KAAKqjB,OAAOmkB,GAAKvjB,IACnBjkB,KAAKywB,WAAWd,iBAAiB9B,oBAAoB5c,GAEvDA,EAAQ8gB,mBAEV/xB,KAAKyqE,mBAAmBx5D,EAASu2B,GAC7BxnC,KAAKqjB,OAAOmkB,GAAKgtB,GAAI,CACvB,IAAIkW,EAAe,OAAQ1qE,KAAKqjB,OAAOmkB,GAAOxnC,KAAKwqE,eAAexqE,KAAKqjB,OAAOmkB,GAAKmjC,IAAMnjC,EAAM,EAC/F,IAAqB,IAAjBkjC,EACF,OAEF,GAAK1qE,KAAKi/C,SAASyrB,KAAiD,IAAhC1qE,KAAKi/C,SAASyrB,GAG3C,CACL,IACIE,EADe3rB,EAASyrB,GACCzV,SAASj1D,KAAKqjB,OAAOmkB,GAAKgtB,IACvDvjD,EAAQ0kD,SAASiV,EACzB,MANQ5qE,KAAKmtD,UAAUud,GACf1qE,KAAKuuD,kBAAkBt9C,EAM/B,CAxBA,CAyBA,EACEy2D,gBAAgB7kE,UAAUuqD,qBAAuB,WAC/C,KAAOptD,KAAKwuD,gBAAgB7tD,QAAQ,CAClC,IAAIsQ,EAAUjR,KAAKwuD,gBAAgBpkD,MAEnC,GADA6G,EAAQ4kD,iBACJ5kD,EAAQ2B,KAAK4hD,GAGf,IAFA,IAAItsD,EAAI,EACJ0S,EAAM5a,KAAKi/C,SAASt+C,OACjBuH,EAAI0S,GAAK,CACd,GAAI5a,KAAKi/C,SAAS/2C,KAAO+I,EAAS,CAChC,IAAIy5D,EAAe,OAAQz5D,EAAQ2B,KAAO5S,KAAKwqE,eAAev5D,EAAQ2B,KAAK+3D,IAAMziE,EAAI,EAEjF0iE,EADe5qE,KAAKi/C,SAASyrB,GACJzV,SAASj1D,KAAKqjB,OAAOnb,GAAGssD,IACrDvjD,EAAQ0kD,SAASiV,GACjB,KACZ,CACU1iE,GAAK,CACf,CAEA,CACA,EACEw/D,gBAAgB7kE,UAAU0wB,YAAc,SAAU+0B,GAChD,GAAItoD,KAAKglC,gBAAkBsjB,IAAOtoD,KAAK6oE,UAAvC,CAcA,IAAI3gE,EAXQ,OAARogD,EACFA,EAAMtoD,KAAKglC,cAEXhlC,KAAKglC,cAAgBsjB,EAIvBtoD,KAAKywB,WAAW+P,SAAW8nB,EAC3BtoD,KAAKywB,WAAWgV,SAAW,EAC3BzlC,KAAKywB,WAAWd,iBAAiBxB,aAAem6B,EAChDtoD,KAAKywB,WAAW8U,MAAO,EAEvB,IAAI3qB,EAAM5a,KAAKqjB,OAAO1iB,OAItB,IAHKX,KAAKojB,gBACRpjB,KAAKktD,YAAY5E,GAEdpgD,EAAI0S,EAAM,EAAG1S,GAAK,EAAGA,GAAK,GACzBlI,KAAKojB,gBAAkBpjB,KAAKi/C,SAAS/2C,KACvClI,KAAKi/C,SAAS/2C,GAAG+lB,aAAaq6B,EAAMtoD,KAAKqjB,OAAOnb,GAAG6d,IAGvD,GAAI/lB,KAAKywB,WAAW8U,KAClB,IAAKr9B,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,GACpBlI,KAAKojB,gBAAkBpjB,KAAKi/C,SAAS/2C,KACvClI,KAAKi/C,SAAS/2C,GAAGqrB,aAzB3B,CA6BA,EACEm0C,gBAAgB7kE,UAAU4nE,mBAAqB,SAAUx5D,EAASu2B,GAChE,IAAIxM,EAAa/pB,EAAQ27C,iBACzB,GAAK5xB,EAAL,CAKA,IAFA,IACI6vC,EADA3iE,EAAI,EAEDA,EAAIs/B,GACLxnC,KAAKi/C,SAAS/2C,KAA2B,IAArBlI,KAAKi/C,SAAS/2C,IAAelI,KAAKi/C,SAAS/2C,GAAG0kD,mBACpEie,EAAc7qE,KAAKi/C,SAAS/2C,GAAG0kD,kBAEjC1kD,GAAK,EAEH2iE,EACF7qE,KAAKssD,aAAat8C,aAAagrB,EAAY6vC,GAE3C7qE,KAAKssD,aAAar8C,YAAY+qB,EAZpC,CAcA,EACE0sC,gBAAgB7kE,UAAU8yB,KAAO,WAC/B31B,KAAKssD,aAAa/nD,MAAM2B,QAAU,MACtC,EACEwhE,gBAAgB7kE,UAAU+yB,KAAO,WAC/B51B,KAAKssD,aAAa/nD,MAAM2B,QAAU,OACtC,EAGEsU,gBAAgB,CAACyvC,YAAagF,iBAAkBuE,iBAAkBtJ,aAAcuJ,sBAAuBkU,cACvGA,aAAa9kE,UAAU8wD,YAAc,SAAU/gD,EAAM6d,EAAYlM,GAC/DvkB,KAAKqgC,YACLrgC,KAAKqqD,aAAaz3C,EAAM6d,EAAYlM,GACpCvkB,KAAKywD,cAAc79C,EAAM6d,EAAYlM,GACrCvkB,KAAK6nD,iBACL7nD,KAAK41D,gBACL51D,KAAK+zD,sBACL/zD,KAAKg0D,0BACLh0D,KAAKg1D,8BACDh1D,KAAK4S,KAAKsb,IAAOuC,EAAWw9B,iBAC9BjuD,KAAK+tD,gBAEP/tD,KAAK21B,MACT,EAcEgyC,aAAa9kE,UAAUorB,aAAe,SAAUq6B,GAI9C,GAHAtoD,KAAKulC,MAAO,EACZvlC,KAAKqoD,uBAAuBC,GAC5BtoD,KAAK0sD,kBAAkBpE,EAAKtoD,KAAK8nD,WAC5B9nD,KAAK8nD,WAAc9nD,KAAK4S,KAAKsb,GAAlC,CAGA,GAAKluB,KAAKwtB,GAAGo9B,aAOX5qD,KAAKglC,cAAgBsjB,EAAMtoD,KAAK4S,KAAKoT,OAPZ,CACzB,IAAI+mC,EAAe/sD,KAAKwtB,GAAGtjB,EACvB6iD,IAAiB/sD,KAAK4S,KAAKzI,KAC7B4iD,EAAe/sD,KAAK4S,KAAKzI,GAAK,GAEhCnK,KAAKglC,cAAgB+nB,CAC3B,CAGI,IAAI7kD,EACA0S,EAAM5a,KAAKi/C,SAASt+C,OAKxB,IAJKX,KAAKojB,gBACRpjB,KAAKktD,YAAYltD,KAAKglC,eAGnB98B,EAAI0S,EAAM,EAAG1S,GAAK,EAAGA,GAAK,GACzBlI,KAAKojB,gBAAkBpjB,KAAKi/C,SAAS/2C,MACvClI,KAAKi/C,SAAS/2C,GAAG+lB,aAAajuB,KAAKglC,cAAgBhlC,KAAKqjB,OAAOnb,GAAG6d,IAC9D/lB,KAAKi/C,SAAS/2C,GAAGq9B,OACnBvlC,KAAKulC,MAAO,GApBtB,CAwBA,EACEoiC,aAAa9kE,UAAUkzD,mBAAqB,WAC1C,IAAI7tD,EACA0S,EAAM5a,KAAKqjB,OAAO1iB,OACtB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,GACpBlI,KAAKojB,gBAAkBpjB,KAAKi/C,SAAS/2C,KACvClI,KAAKi/C,SAAS/2C,GAAGqrB,aAGzB,EACEo0C,aAAa9kE,UAAUioE,YAAc,SAAU7qB,GAC7CjgD,KAAKi/C,SAAWgB,CACpB,EACE0nB,aAAa9kE,UAAUkoE,YAAc,WACnC,OAAO/qE,KAAKi/C,QAChB,EACE0oB,aAAa9kE,UAAUmoE,gBAAkB,WACvC,IAAI9iE,EACA0S,EAAM5a,KAAKqjB,OAAO1iB,OACtB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACpBlI,KAAKi/C,SAAS/2C,IAChBlI,KAAKi/C,SAAS/2C,GAAGwjB,SAGzB,EACEi8C,aAAa9kE,UAAU6oB,QAAU,WAC/B1rB,KAAKgrE,kBACLhrE,KAAK+0D,oBACT,EAaEv6C,gBAAgB,CAACktD,gBAAiBC,aAAcpU,gBAAiBqU,gBACjEA,eAAe/kE,UAAU2qD,WAAa,SAAU56C,GAC9C,OAAO,IAAIg1D,eAAeh1D,EAAM5S,KAAKywB,WAAYzwB,KACrD,EAgEEwa,gBAAgB,CAACktD,iBAAkBI,aACnCA,YAAYjlE,UAAU2qD,WAAa,SAAU56C,GAC3C,OAAO,IAAIg1D,eAAeh1D,EAAM5S,KAAKywB,WAAYzwB,KACrD,EAOE8oE,sBAAsBjmE,UAAY,CAChCooE,qBAAsB,SAA8BrZ,GAClD,IAAI1pD,EACA0S,EAAMg3C,EAAWjxD,OACjB9D,EAAM,IACV,IAAKqL,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBrL,GAAO+0D,EAAW1pD,GAAG0O,UAAU/Z,IAAM,IAEvC,IAAIquE,EAAWlrE,KAAK+oE,UAAUlsE,GAU9B,OATKquE,IACHA,EAAW,CACTtZ,WAAY,GAAG/sD,OAAO+sD,GACtBnJ,eAAgB,IAAIhc,OACpBlH,MAAM,GAERvlC,KAAK+oE,UAAUlsE,GAAOquE,EACtBlrE,KAAKgpE,aAAa3+D,KAAK6gE,IAElBA,CACb,EACIC,gBAAiB,SAAyBD,EAAUlZ,GAIlD,IAHA,IAAI9pD,EAAI,EACJ0S,EAAMswD,EAAStZ,WAAWjxD,OAC1B4kC,EAAOysB,EACJ9pD,EAAI0S,IAAQo3C,GAAc,CAC/B,GAAIkZ,EAAStZ,WAAW1pD,GAAG0O,UAAU6pC,OAAOlb,KAAM,CAChDA,GAAO,EACP,KACV,CACQr9B,GAAK,CACb,CACM,GAAIq9B,EAEF,IADA2lC,EAASziB,eAAeze,QACnB9hC,EAAI0S,EAAM,EAAG1S,GAAK,EAAGA,GAAK,EAC7BgjE,EAASziB,eAAezY,SAASk7B,EAAStZ,WAAW1pD,GAAG0O,UAAU6pC,OAAOv2C,GAG7EghE,EAAS3lC,KAAOA,CACtB,EACI6lC,iBAAkB,SAA0BpZ,GAC1C,IAAI9pD,EACA0S,EAAM5a,KAAKgpE,aAAaroE,OAC5B,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAKmrE,gBAAgBnrE,KAAKgpE,aAAa9gE,GAAI8pD,EAEnD,EACIqZ,UAAW,WAET,OADArrE,KAAKipE,qBAAuB,EACrB,IAAMjpE,KAAKipE,mBACxB,GAGE,IAAIqC,WAAa,WACf,IAAIrzD,EAAK,+BACLszD,EAAa,KACbC,EAAgB,KAChBC,EAAM,KAuCV,SAASC,IAhBT,IACMC,EACAnZ,EACAviB,EAcCs7B,IAhBDI,EAAO3pD,SAAS,OAChBwwC,EAAMxwC,SAAS,UACfiuB,EAASjuB,SAAS,iBACtBwwC,EAAIh7B,aAAa,KAAMvf,GACvBg4B,EAAOzY,aAAa,OAAQ,UAC5ByY,EAAOzY,aAAa,8BAA+B,QACnDyY,EAAOzY,aAAa,SAAU,sFAC9Bg7B,EAAIviD,YAAYggC,GAChB07B,EAAK17D,YAAYuiD,GACjBmZ,EAAKn0C,aAAa,KAAMvf,EAAK,QACzBy6C,eAAeC,gBACjBgZ,EAAKpnE,MAAM2B,QAAU,QAMrBulE,EAJKE,EAKL/7D,SAAStG,KAAK2G,YAAYw7D,GAC1BF,EAAahxD,UAAU,WACvBixD,EAAgBD,EAAWhiD,WAAW,OAExBtoB,OAAS,QAAUgX,EAAK,IACtCuzD,EAAchiD,UAAY,gBAC1BgiD,EAAc/hD,SAAS,EAAG,EAAG,EAAG,GAExC,CAWI,MAAO,CACL/B,KAAMgkD,EACNnqE,IAZF,SAAiB8nB,GAQf,OAPKkiD,GACHG,IAEFH,EAAWrmE,MAAQmkB,EAAOnkB,MAC1BqmE,EAAWpmE,OAASkkB,EAAOlkB,OAE3BqmE,EAAcvqE,OAAS,QAAUgX,EAAK,IAC/BszD,CACb,EAKA,EACE,SAASK,aAAa1mE,EAAOC,GAC3B,GAAIutD,eAAeE,gBACjB,OAAO,IAAI3O,gBAAgB/+C,EAAOC,GAEpC,IAAIkkB,EAAS9O,UAAU,UAGvB,OAFA8O,EAAOnkB,MAAQA,EACfmkB,EAAOlkB,OAASA,EACTkkB,CACX,CACE,IAAIpC,YACK,CACL4kD,eAAgBP,WAAW5jD,KAC3BokD,cAAeR,WAAW/pE,IAC1BqqE,aAAcA,cAIdG,kBAAoB,CAAA,EACxB,SAASC,UAAUp1C,GACjB,IAAI1uB,EAGA8qD,EAFAp4C,EAAMgc,EAAKhkB,KAAKi3C,GAAKjzB,EAAKhkB,KAAKi3C,GAAGlpD,OAAS,EAG/C,IAFAX,KAAKkzD,QAAU,GAEVhrD,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAAG,CAC3B8qD,EAAgB,KAChB,IAAIt2D,EAAOk6B,EAAKhkB,KAAKi3C,GAAG3hD,GAAG+b,GACvB8nD,kBAAkBrvE,KAEpBs2D,EAAgB,IAAIG,EADP4Y,kBAAkBrvE,GAAM02D,QACVx8B,EAAK41B,eAAe1C,eAAe5hD,GAAI0uB,IAEhEo8B,GACFhzD,KAAKkzD,QAAQ7oD,KAAK2oD,EAE1B,CACQhzD,KAAKkzD,QAAQvyD,QACfi2B,EAAKsxB,uBAAuBloD,KAElC,CAmBE,SAASisE,eAAeh0D,EAAIm7C,GAC1B2Y,kBAAkB9zD,GAAM,CACtBm7C,OAAQA,EAEd,CAEE,SAAS8Y,cAAct5D,EAAM3B,GAK3B,IAAI/I,EAJJlI,KAAK4S,KAAOA,EACZ5S,KAAKiR,QAAUA,EACfjR,KAAK8jB,gBAAkB9jB,KAAK4S,KAAKkR,iBAAmB,GACpD9jB,KAAKovD,SAAWjyC,iBAAiBnd,KAAK8jB,gBAAgBnjB,QAEtD,IAAIia,EAAM5a,KAAK8jB,gBAAgBnjB,OAC3BwrE,GAAW,EACf,IAAKjkE,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACa,MAAjClI,KAAK8jB,gBAAgB5b,GAAG/D,OAC1BgoE,GAAW,GAEbnsE,KAAKovD,SAASlnD,GAAK+gC,qBAAqB4mB,aAAa7vD,KAAKiR,QAASjR,KAAK8jB,gBAAgB5b,GAAI,GAE9FlI,KAAKmsE,SAAWA,EACZA,GACFnsE,KAAKiR,QAAQi3C,uBAAuBloD,KAE1C,CA2CE,SAASosE,gBAAgB,CArFzBJ,UAAUnpE,UAAU0wB,YAAc,SAAUqS,GAC1C,IAAI19B,EACA0S,EAAM5a,KAAKkzD,QAAQvyD,OACvB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAKkzD,QAAQhrD,GAAGqrB,YAAYqS,EAElC,EACEomC,UAAUnpE,UAAU6uD,WAAa,SAAUh1D,GACzC,IAAIwL,EACA0S,EAAM5a,KAAKkzD,QAAQvyD,OACnBipD,EAAU,GACd,IAAK1hD,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACpBlI,KAAKkzD,QAAQhrD,GAAGxL,OAASA,GAC3BktD,EAAQv/C,KAAKrK,KAAKkzD,QAAQhrD,IAG9B,OAAO0hD,CACX,EA0BEsiB,cAAcrpE,UAAU0wB,YAAc,WACpC,GAAKvzB,KAAKmsE,SAAV,CAGA,IAEIjkE,EAEA6b,EACAotB,EACAv+B,EANAgE,EAAY5W,KAAKiR,QAAQw3C,eAAexR,IACxC3tB,EAAMtpB,KAAKiR,QAAQo7D,cAEnBzxD,EAAM5a,KAAK8jB,gBAAgBnjB,OAK/B,IADA2oB,EAAIgjD,YACCpkE,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB,GAAqC,MAAjClI,KAAK8jB,gBAAgB5b,GAAG/D,KAAc,CAWxC,IAAIqf,EAVAxjB,KAAK8jB,gBAAgB5b,GAAGs2C,MAC1Bl1B,EAAIijD,OAAO,EAAG,GACdjjD,EAAIkjD,OAAOxsE,KAAKiR,QAAQwf,WAAWq+B,SAASvM,EAAG,GAC/Cj5B,EAAIkjD,OAAOxsE,KAAKiR,QAAQwf,WAAWq+B,SAASvM,EAAGviD,KAAKiR,QAAQwf,WAAWq+B,SAASpuC,GAChF4I,EAAIkjD,OAAO,EAAGxsE,KAAKiR,QAAQwf,WAAWq+B,SAASpuC,GAC/C4I,EAAIkjD,OAAO,EAAG,IAEhB55D,EAAO5S,KAAKovD,SAASlnD,GAAGgC,EACxB6Z,EAAKnN,EAAUq6B,kBAAkBr+B,EAAK1I,EAAE,GAAG,GAAI0I,EAAK1I,EAAE,GAAG,GAAI,GAC7Dof,EAAIijD,OAAOxoD,EAAG,GAAIA,EAAG,IAErB,IAAIN,EAAO7Q,EAAKioB,QAChB,IAAKrX,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB2tB,EAAMv6B,EAAUy6B,oBAAoBz+B,EAAKyK,EAAEmG,EAAI,GAAI5Q,EAAK1K,EAAEsb,GAAI5Q,EAAK1I,EAAEsZ,IACrE8F,EAAImjD,cAAct7B,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAEhEA,EAAMv6B,EAAUy6B,oBAAoBz+B,EAAKyK,EAAEmG,EAAI,GAAI5Q,EAAK1K,EAAE,GAAI0K,EAAK1I,EAAE,IACrEof,EAAImjD,cAAct7B,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GACtE,CAEInxC,KAAKiR,QAAQwf,WAAWtB,SAASu9C,MAAK,GACtCpjD,EAAIqjD,MAhCR,CAiCA,EACET,cAAcrpE,UAAUkvD,gBAAkB7C,YAAYrsD,UAAUkvD,gBAChEma,cAAcrpE,UAAU6oB,QAAU,WAChC1rB,KAAKiR,QAAU,IACnB,EAGE,IAAI27D,cAAgB,CAClB,EAAG,YACH,EAAG,aACH,EAAG,YACH,EAAG,cAqJL,SAASC,YAAY57D,EAAS2B,EAAM+qC,EAAQmvB,GAC1C9sE,KAAK+sE,aAAe,GACpB/sE,KAAKg+C,GAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAC1B,IASI91C,EATA+b,EAAK,EACO,OAAZrR,EAAKqR,GACPA,EAAK,EACgB,OAAZrR,EAAKqR,GACdA,EAAK,EACgB,OAAZrR,EAAKqR,KACdA,EAAK,GAEPjkB,KAAKyiC,GAAKwG,qBAAqB4mB,aAAa5+C,EAAS2B,EAAMqR,EAAIhT,GAE/D,IACI+7D,EADApyD,EAAM+iC,EAAOh9C,OAEjB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACnBy1C,EAAOz1C,GAAGye,SACbqmD,EAAc,CACZpb,WAAYkb,EAAkB7B,qBAAqBttB,EAAOz1C,GAAG0pD,YAC7Dqb,QAAS,IAEXjtE,KAAK+sE,aAAa1iE,KAAK2iE,GACvBrvB,EAAOz1C,GAAG+2C,SAAS50C,KAAK2iE,GAGhC,CAGE,SAASE,eAAet6D,EAAM6d,EAAYlM,GACxCvkB,KAAKqkB,OAAS,GACdrkB,KAAK8rD,WAAal5C,EAAKyR,OACvBrkB,KAAK07D,WAAa,GAClB17D,KAAK+rD,UAAY,GACjB/rD,KAAK04D,aAAe,GACpB14D,KAAKo2D,eAAiB,GACtBp2D,KAAKy2D,kBAAoB,GACzBz2D,KAAK8sE,kBAAoB,IAAIhE,sBAC7B9oE,KAAK2zD,YAAY/gD,EAAM6d,EAAYlM,EACvC,CAwcE,SAAS4oD,cAAcv6D,EAAM6d,EAAYlM,GACvCvkB,KAAKunE,UAAY,GACjBvnE,KAAKg9D,QAAU,EACfh9D,KAAK68D,eAAgB,EACrB78D,KAAK88D,iBAAkB,EACvB98D,KAAK+8D,iBAAkB,EACvB/8D,KAAKotE,QAAS,EACdptE,KAAK+T,MAAO,EACZ/T,KAAKw8D,cAAgB,EACrBx8D,KAAKqtE,cAAgB,KACrBrtE,KAAK0jE,WAAa,SAClB1jE,KAAKukC,OAAS,CACZxwB,KAAM,gBACNq5D,OAAQ,gBACRE,OAAQ,EACRC,OAAQ,IAEVvtE,KAAK2zD,YAAY/gD,EAAM6d,EAAYlM,EACvC,CA6ME,SAASipD,eAAe56D,EAAM6d,EAAYlM,GACxCvkB,KAAKkqB,UAAYuG,EAAWiF,aAAa9iB,EAAKuR,OAC9CnkB,KAAKwqB,IAAMiG,EAAW25B,YAAYz+B,SAAS3rB,KAAKkqB,WAChDlqB,KAAK2zD,YAAY/gD,EAAM6d,EAAYlM,EACvC,CAmCE,SAASkpD,eAAe76D,EAAM6d,EAAYlM,GACxCvkB,KAAK2zD,YAAY/gD,EAAM6d,EAAYlM,EACvC,CAaE,SAASmpD,qBAAqB,CA6Q9B,SAASC,gBACP3tE,KAAKsxD,SAAU,EACftxD,KAAK4W,UAAYiG,iBAAiB,UAAW,IAC7C7c,KAAKwpB,UAAY,GACjBxpB,KAAK4tE,YAAc,GACnB5tE,KAAKqgE,UAAY,GACjBrgE,KAAK6tE,QAAU,GACf7tE,KAAKy8C,SAAW,GAChBz8C,KAAK08C,WAAa,GAClB18C,KAAKiY,GAAK5E,KAAKkL,QACnB,CACE,SAASuvD,gBAIP,IAAI5lE,EAEJ,IALAlI,KAAK+tE,MAAQ,GACb/tE,KAAKguE,QAAU,EACfhuE,KAAKiuE,IAAM,IAAIxhC,OAGVvkC,EAAI,EAAGA,EADF,GACWA,GAAK,EAAG,CAC3B,IAAImkE,EAAgB,IAAIsB,cACxB3tE,KAAK+tE,MAAM7lE,GAAKmkE,CACtB,CACIrsE,KAAK66B,QALK,GAMV76B,KAAKkuE,cAAgB,KACrBluE,KAAKmuE,aAAe,IAAI1hC,OACxBzsC,KAAKouE,eAAiB,EAEtBpuE,KAAKquE,iBAAmB,GACxBruE,KAAKsuE,iBAAmB,GAExBtuE,KAAKuuE,mBAAqB,GAC1BvuE,KAAKwuE,mBAAqB,GAE1BxuE,KAAKyuE,iBAAmB,GACxBzuE,KAAK0uE,iBAAmB,GAExB1uE,KAAK2uE,eAAiB,GACtB3uE,KAAK4uE,eAAiB,GAEtB5uE,KAAK6uE,gBAAkB,GACvB7uE,KAAK8uE,gBAAkB,GAEvB9uE,KAAK+uE,kBAAoB,GACzB/uE,KAAKgvE,kBAAoB,EAC7B,CA2KE,SAASC,cAAcr8D,EAAM6d,EAAYlM,GACvCvkB,KAAKojB,gBAAiB,EACtBpjB,KAAKqjB,OAASzQ,EAAKyQ,OACnBrjB,KAAKwuD,gBAAkB,GACvBxuD,KAAKi/C,SAAW9hC,iBAAiBnd,KAAKqjB,OAAO1iB,QAC7CX,KAAK2zD,YAAY/gD,EAAM6d,EAAYlM,GACnCvkB,KAAKwtB,GAAK5a,EAAK4a,GAAKiZ,gBAAgBC,QAAQ1mC,KAAM4S,EAAK4a,GAAI,EAAGiD,EAAW5B,UAAW7uB,MAAQ,CAC1F4qD,cAAc,EAEpB,CAkCE,SAASskB,eAAergB,EAAelyD,GACrCqD,KAAK6uD,cAAgBA,EACrB7uD,KAAK2oD,aAAe,CAClBwmB,aAAaxyE,QAAiC0J,IAAvB1J,EAAOwyE,aAA4BxyE,EAAOwyE,YACjEC,QAASzyE,GAAUA,EAAOyyE,SAAW,KACrCnhB,gBAAiBtxD,GAAUA,EAAOsxD,kBAAmB,EACrDqa,oBAAqB3rE,GAAUA,EAAO2rE,qBAAuB,gBAC7DpS,yBAA0Bv5D,GAAUA,EAAOu5D,0BAA4B,iBACvEqS,kBAAmB5rE,GAAUA,EAAO4rE,mBAAqB,UACzDx2D,UAAWpV,GAAUA,EAAOoV,WAAa,GACzCkG,GAAItb,GAAUA,EAAOsb,IAAM,GAC3B2wD,gBAAiBjsE,QAAoC0J,IAA1B1J,EAAOisE,gBAAgCjsE,EAAOisE,gBAE3E5oE,KAAK2oD,aAAa0mB,IAAM1yE,GAAUA,EAAO0yE,KAAO,EAC5CrvE,KAAK6uD,cAAcz+B,UACrBpwB,KAAK2oD,aAAa0mB,IAAM1yE,GAAUA,EAAO0yE,KAAO/8D,OAAOg9D,kBAAoB,GAE7EtvE,KAAKglC,eAAgB,EACrBhlC,KAAKywB,WAAa,CAChB+P,UAAU,EACV+E,MAAM,EACNojB,aAAc3oD,KAAK2oD,aACnB4mB,oBAAoB,GAEtBvvE,KAAKwvE,YAAc,IAAI1B,cACvB9tE,KAAKi/C,SAAW,GAChBj/C,KAAKwuD,gBAAkB,GACvBxuD,KAAKmuE,aAAe,IAAI1hC,OACxBzsC,KAAKojB,gBAAiB,EACtBpjB,KAAK+yB,aAAe,SAChB/yB,KAAK2oD,aAAawmB,cACpBnvE,KAAKyvE,aAAezvE,KAAKwvE,YAAY54D,UAAUxT,KAAKpD,KAAKwvE,aACzDxvE,KAAK0vE,WAAa1vE,KAAKwvE,YAAYle,QAAQluD,KAAKpD,KAAKwvE,aACrDxvE,KAAK2vE,aAAe3vE,KAAKwvE,YAAYhmD,UAAUpmB,KAAKpD,KAAKwvE,aACzDxvE,KAAK4vE,eAAiB5vE,KAAKwvE,YAAY5B,YAAYxqE,KAAKpD,KAAKwvE,aAC7DxvE,KAAK6vE,aAAe7vE,KAAKwvE,YAAYnP,UAAUj9D,KAAKpD,KAAKwvE,aACzDxvE,KAAK8vE,WAAa9vE,KAAKwvE,YAAY3B,QAAQzqE,KAAKpD,KAAKwvE,aACrDxvE,KAAK+vE,YAAc/vE,KAAKwvE,YAAY/yB,SAASr5C,KAAKpD,KAAKwvE,aACvDxvE,KAAKgwE,cAAgBhwE,KAAKwvE,YAAY9yB,WAAWt5C,KAAKpD,KAAKwvE,aAC3DxvE,KAAKiwE,QAAUjwE,KAAKwvE,YAAYz7D,KAAK3Q,KAAKpD,KAAKwvE,aAC/CxvE,KAAKkwE,YAAclwE,KAAKwvE,YAAY/lD,SAASrmB,KAAKpD,KAAKwvE,aACvDxvE,KAAKmwE,UAAYnwE,KAAKwvE,YAAYpC,OAAOhqE,KAAKpD,KAAKwvE,aACnDxvE,KAAK0sE,KAAO1sE,KAAKwvE,YAAY9C,KAAKtpE,KAAKpD,KAAKwvE,aAElD,CAME,SAASY,eAAe,CA4ExB,SAASC,cAAcz9D,EAAM6d,EAAYlM,GACvCvkB,KAAK2zD,YAAY/gD,EAAM6d,EAAYlM,EACvC,CAoBE,SAAS+rD,cAAc19D,EAAM6d,EAAYlM,GAEvCvkB,KAAKqkB,OAAS,GAEdrkB,KAAK8rD,WAAal5C,EAAKyR,OAEvBrkB,KAAK07D,WAAa,GAElB17D,KAAKo2D,eAAiB,GAEtBp2D,KAAK+rD,UAAY,GAEjB/rD,KAAKy2D,kBAAoB,GAEzBz2D,KAAK27D,iBAAmB,GACxB37D,KAAKuwE,gBAAkBvuD,SAAS,KAChChiB,KAAK2zD,YAAY/gD,EAAM6d,EAAYlM,GAGnCvkB,KAAK04D,aAAe,GACpB14D,KAAKwwE,YAAc,CACjBxxE,EAAG,OACHwK,GAAG,OACHkX,EAAG,EACH6hC,EAAG,EAET,CA6LE,SAASkuB,aAAa79D,EAAM6d,EAAYlM,GACtCvkB,KAAKunE,UAAY,GACjBvnE,KAAK0wE,UAAY,GACjB1wE,KAAKwwE,YAAc,CACjBxxE,EAAG,OACHwK,GAAG,OACHkX,EAAG,EACH6hC,EAAG,GAELviD,KAAK0jE,WAAa,MAClB1jE,KAAK2wE,UAAW,EAChB3wE,KAAK2zD,YAAY/gD,EAAM6d,EAAYlM,EACvC,CAkPE,SAASqsD,eAAeh+D,EAAM6d,EAAYlM,GACxCvkB,KAAKqgC,YACLrgC,KAAKqqD,aAAaz3C,EAAM6d,EAAYlM,GACpCvkB,KAAK41D,gBACL,IAAIlvB,EAAUD,gBAAgBC,QAY9B,GAXA1mC,KAAK6wE,GAAKnqC,EAAQ1mC,KAAM4S,EAAKi+D,GAAI,EAAG,EAAG7wE,MACnC4S,EAAKiS,GAAGrd,EAAES,GACZjI,KAAKy2C,GAAK/P,EAAQ1mC,KAAM4S,EAAKiS,GAAGrd,EAAExI,EAAG,EAAG,EAAGgB,MAC3CA,KAAK02C,GAAKhQ,EAAQ1mC,KAAM4S,EAAKiS,GAAGrd,EAAEgC,EAAG,EAAG,EAAGxJ,MAC3CA,KAAK22C,GAAKjQ,EAAQ1mC,KAAM4S,EAAKiS,GAAGrd,EAAEipC,EAAG,EAAG,EAAGzwC,OAE3CA,KAAKwH,EAAIk/B,EAAQ1mC,KAAM4S,EAAKiS,GAAGrd,EAAG,EAAG,EAAGxH,MAEtC4S,EAAKiS,GAAGoB,IACVjmB,KAAKimB,EAAIygB,EAAQ1mC,KAAM4S,EAAKiS,GAAGoB,EAAG,EAAG,EAAGjmB,OAEtC4S,EAAKiS,GAAGsmB,GAAGjqC,EAAEP,QAAUiS,EAAKiS,GAAGsmB,GAAGjqC,EAAE,GAAGugC,GAAI,CAC7C,IAAIv5B,EACA0S,EAAMhI,EAAKiS,GAAGsmB,GAAGjqC,EAAEP,OACvB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB0K,EAAKiS,GAAGsmB,GAAGjqC,EAAEgH,GAAGu5B,GAAK,KACrB7uB,EAAKiS,GAAGsmB,GAAGjqC,EAAEgH,GAAGw5B,GAAK,IAE7B,CACI1hC,KAAKmrC,GAAKzE,EAAQ1mC,KAAM4S,EAAKiS,GAAGsmB,GAAI,EAAGvsB,UAAW5e,MAClDA,KAAKmrC,GAAG1I,IAAK,EACbziC,KAAK42C,GAAKlQ,EAAQ1mC,KAAM4S,EAAKiS,GAAG+xB,GAAI,EAAGh4B,UAAW5e,MAClDA,KAAK62C,GAAKnQ,EAAQ1mC,KAAM4S,EAAKiS,GAAGgyB,GAAI,EAAGj4B,UAAW5e,MAClDA,KAAK82C,GAAKpQ,EAAQ1mC,KAAM4S,EAAKiS,GAAGiyB,GAAI,EAAGl4B,UAAW5e,MAClDA,KAAKi3C,IAAM,IAAIxK,OACfzsC,KAAK8wE,SAAW,IAAIrkC,OACpBzsC,KAAK4lC,eAAgB,EAGrB5lC,KAAKyoD,eAAiB,CACpBC,MAAO1oD,KAEb,CA+GE,SAAS+wE,cAAcn+D,EAAM6d,EAAYlM,GACvCvkB,KAAKkqB,UAAYuG,EAAWiF,aAAa9iB,EAAKuR,OAC9CnkB,KAAK2zD,YAAY/gD,EAAM6d,EAAYlM,EACvC,CAuBE,SAASysD,mBAAmBniB,EAAelyD,GACzCqD,KAAK6uD,cAAgBA,EACrB7uD,KAAKqjB,OAAS,KACdrjB,KAAKglC,eAAgB,EACrBhlC,KAAK2oD,aAAe,CAClB52C,UAAWpV,GAAUA,EAAOoV,WAAa,GACzCmkD,yBAA0Bv5D,GAAUA,EAAOu5D,0BAA4B,iBACvEtN,oBAAqBjsD,IAAuC,IAA7BA,EAAOisD,mBACtC+f,WAAY,CACVzjE,MAAOvI,GAAUA,EAAOgsE,YAAchsE,EAAOgsE,WAAWzjE,OAAS,OACjEC,OAAQxI,GAAUA,EAAOgsE,YAAchsE,EAAOgsE,WAAWxjE,QAAU,OACnEnG,EAAGrC,GAAUA,EAAOgsE,YAAchsE,EAAOgsE,WAAW3pE,GAAK,QACzDwK,EAAG7M,GAAUA,EAAOgsE,YAAchsE,EAAOgsE,WAAWn/D,GAAK,UAG7DxJ,KAAKywB,WAAa,CAChB8U,MAAM,EACN/E,UAAU,EACVmoB,aAAc3oD,KAAK2oD,cAErB3oD,KAAKwuD,gBAAkB,GACvBxuD,KAAKi/C,SAAW,GAChBj/C,KAAKixE,eAAiB,GACtBjxE,KAAK6oE,WAAY,EACjB7oE,KAAKkxE,OAAS,KACdlxE,KAAK6nE,YAAa,EAClB7nE,KAAK+yB,aAAe,MACxB,CAgRE,SAASo+C,aAAav+D,EAAM6d,EAAYlM,GACtCvkB,KAAKqjB,OAASzQ,EAAKyQ,OACnBrjB,KAAK6nE,YAAcj1D,EAAKgR,QACxB5jB,KAAKojB,gBAAiB,EACtBpjB,KAAKwuD,gBAAkB,GACvBxuD,KAAKi/C,SAAWj/C,KAAKqjB,OAASlG,iBAAiBnd,KAAKqjB,OAAO1iB,QAAU,GACrEX,KAAK2zD,YAAY/gD,EAAM6d,EAAYlM,GACnCvkB,KAAKwtB,GAAK5a,EAAK4a,GAAKiZ,gBAAgBC,QAAQ1mC,KAAM4S,EAAK4a,GAAI,EAAGiD,EAAW5B,UAAW7uB,MAAQ,CAC1F4qD,cAAc,EAEpB,CAoCE,SAASwmB,eAAeviB,EAAelyD,GACrCqD,KAAK6uD,cAAgBA,EACrB7uD,KAAKqjB,OAAS,KACdrjB,KAAKglC,eAAgB,EACrBhlC,KAAK2oD,aAAe,CAClB52C,UAAWpV,GAAUA,EAAOoV,WAAa,GACzCmkD,yBAA0Bv5D,GAAUA,EAAOu5D,0BAA4B,iBACvEtN,oBAAqBjsD,IAAuC,IAA7BA,EAAOisD,mBACtC+f,WAAY,CACVzjE,MAAOvI,GAAUA,EAAOgsE,YAAchsE,EAAOgsE,WAAWzjE,OAAS,OACjEC,OAAQxI,GAAUA,EAAOgsE,YAAchsE,EAAOgsE,WAAWxjE,QAAU,OACnEnG,EAAGrC,GAAUA,EAAOgsE,YAAchsE,EAAOgsE,WAAW3pE,GAAK,QACzDwK,EAAG7M,GAAUA,EAAOgsE,YAAchsE,EAAOgsE,WAAWn/D,GAAK,SAE3Do/D,gBAAiBjsE,QAAoC0J,IAA1B1J,EAAOisE,gBAAgCjsE,EAAOisE,gBAE3E5oE,KAAKywB,WAAa,CAChB8U,MAAM,EACN/E,UAAU,EACVmoB,aAAc3oD,KAAK2oD,cAErB3oD,KAAKwuD,gBAAkB,GACvBxuD,KAAKi/C,SAAW,GAChBj/C,KAAKixE,eAAiB,GACtBjxE,KAAK6oE,WAAY,EACjB7oE,KAAKkxE,OAAS,KACdlxE,KAAK6nE,YAAa,EAClB7nE,KAAK+yB,aAAe,MACxB,CAhjFEq5C,cAAcvpE,UAAY,CACxBwuE,eAAgB,WAA0B,EAC1Ctd,oBAAqB,WAA+B,EACpDC,wBAAyB,WAMvB,GAAIh0D,KAAK4S,KAAK4hD,IAAM,EAAG,CACrBx0D,KAAKsxE,QAAU,GACf,IAAIjF,EAAgBrsE,KAAKywB,WAAW47C,cAChCkF,EAAetqD,YAAY2kD,aAAaS,EAAchjD,OAAOnkB,MAAOmnE,EAAchjD,OAAOlkB,QAC7FnF,KAAKsxE,QAAQjnE,KAAKknE,GAClB,IAAIC,EAAgBvqD,YAAY2kD,aAAaS,EAAchjD,OAAOnkB,MAAOmnE,EAAchjD,OAAOlkB,QAC9FnF,KAAKsxE,QAAQjnE,KAAKmnE,GACdxxE,KAAK4S,KAAK4hD,IAAM,IAAM5kD,SAAS6hE,UACjCxqD,YAAY4kD,gBAEtB,CACM7rE,KAAKqsE,cAAgBrsE,KAAKywB,WAAW47C,cACrCrsE,KAAK0xE,gBAAkB1xE,KAAKywB,WAAWihD,gBACvC1xE,KAAKwxD,yBAA2B,IAAIwa,UAAUhsE,MAC9CA,KAAKuxD,wBACX,EACIuE,cAAe,WAAyB,EACxC5J,aAAc,WACZ,IAAIz7B,EAAazwB,KAAKywB,WACtB,GAAIA,EAAWkhD,YAAc3xE,KAAK4S,KAAKw5C,GAAI,CACzC37B,EAAWkhD,UAAY3xE,KAAK4S,KAAKw5C,GACjC,IAAID,EAAiBlD,aAAajpD,KAAK4S,KAAKw5C,IAC5C37B,EAAW47C,cAAcuF,yBAA2BzlB,CAC5D,CACA,EACI6I,2BAA4B,WAC1Bh1D,KAAKwrD,YAAc,IAAI0gB,cAAclsE,KAAK4S,KAAM5S,MAChDA,KAAKyxD,iBAAmBzxD,KAAKwxD,yBAAyBE,WAAW3C,YAAYC,iBACnF,EACI6iB,YAAa,WACN7xE,KAAK+nD,QAAY/nD,KAAK8nD,YAAa9nD,KAAKgoD,gBAC3ChoD,KAAK+nD,QAAS,EAEtB,EACI+pB,YAAa,WACP9xE,KAAK8nD,YAAc9nD,KAAKgoD,gBAC1BhoD,KAAK+nD,QAAS,EACd/nD,KAAK4lC,eAAgB,EACrB5lC,KAAKwrD,YAAY5lB,eAAgB,EAEzC,EACIupC,YAAa,SAAqB9C,GAChCA,EAAc0F,UAAU/xE,KAAK0xE,gBAAgB1jC,GAAIhuC,KAAK0xE,gBAAgBztD,GAAIjkB,KAAK0xE,gBAAgBnvB,EAAIviD,KAAK0xE,gBAAgBnkC,GAAIvtC,KAAK0xE,gBAAgBhxD,EAAI1gB,KAAK0xE,gBAAgB7mC,GAChL,EACImnC,aAAc,WACZ,GAAIhyE,KAAK4S,KAAK4hD,IAAM,EAAG,CACrB,IACIyd,EADSjyE,KAAKsxE,QAAQ,GACH/nD,WAAW,MAClCvpB,KAAKmvE,YAAY8C,GAEjBA,EAAUC,UAAUlyE,KAAKqsE,cAAchjD,OAAQ,EAAG,GAGlDrpB,KAAKw+D,iBAAmBx+D,KAAKqsE,cAAc8F,eAC3CnyE,KAAKqsE,cAAcz+B,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAC/C5tC,KAAKmvE,YAAYnvE,KAAKqsE,eACtBrsE,KAAKqsE,cAAcz+B,aAAa5tC,KAAKw+D,iBAC7C,CACA,EACI4T,UAAW,WACT,GAAIpyE,KAAK4S,KAAK4hD,IAAM,EAAG,CACrB,IAAI6d,EAASryE,KAAKsxE,QAAQ,GAItBW,EAAYI,EAAO9oD,WAAW,MAelC,GAdAvpB,KAAKmvE,YAAY8C,GACjBA,EAAUC,UAAUlyE,KAAKqsE,cAAchjD,OAAQ,EAAG,GAElDrpB,KAAKqsE,cAAcz+B,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAC/C5tC,KAAKmvE,YAAYnvE,KAAKqsE,eACtBrsE,KAAKqsE,cAAcz+B,aAAa5tC,KAAKw+D,kBAE1Bx+D,KAAKukB,KAAKkqC,eAAe,OAAQzuD,KAAK4S,KAAO5S,KAAK4S,KAAK+3D,GAAK3qE,KAAK4S,KAAK+uB,IAAM,GAClFpO,aAAY,GAEjBvzB,KAAKqsE,cAAcz+B,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAI3C5tC,KAAK4S,KAAK4hD,IAAM,IAAM5kD,SAAS6hE,SAAU,CAG3C,IAAIlG,EAAatkD,YAAY6kD,cAAc9rE,KAAKqsE,cAAchjD,QAC1CkiD,EAAWhiD,WAAW,MAC5B2oD,UAAUlyE,KAAKqsE,cAAchjD,OAAQ,EAAG,GACtDrpB,KAAKmvE,YAAYnvE,KAAKqsE,eAEtBrsE,KAAKqsE,cAAc6F,UAAU3G,EAAY,EAAG,EACtD,CACQvrE,KAAKqsE,cAAcuF,yBAA2BhF,cAAc5sE,KAAK4S,KAAK4hD,IACtEx0D,KAAKqsE,cAAc6F,UAAUG,EAAQ,EAAG,GAGxCryE,KAAKqsE,cAAcuF,yBAA2B,mBAC9C5xE,KAAKqsE,cAAc6F,UAAUlyE,KAAKsxE,QAAQ,GAAI,EAAG,GACjDtxE,KAAKqsE,cAAcz+B,aAAa5tC,KAAKw+D,kBAErCx+D,KAAKqsE,cAAcuF,yBAA2B,aACtD,CACA,EACIr+C,YAAa,SAAqB2jB,GAChC,IAAIl3C,KAAK+nD,SAAU/nD,KAAK4S,KAAK8hD,KAGR,IAAjB10D,KAAK4S,KAAKyhD,IAAand,GAA3B,CAGAl3C,KAAKgxD,kBACLhxD,KAAK6oD,mBACL7oD,KAAKmxD,uBACLnxD,KAAKksD,eACL,IAAIomB,EAAkC,IAAjBtyE,KAAK4S,KAAKqR,GAC/BjkB,KAAKgyE,eACLhyE,KAAKywB,WAAWtB,SAASu9C,KAAK4F,GAC9BtyE,KAAKywB,WAAWtB,SAASsgD,aAAazvE,KAAKyoD,eAAeoI,SAAS5zD,OACnE+C,KAAKywB,WAAWtB,SAASugD,WAAW1vE,KAAKyoD,eAAeqI,cACxD9wD,KAAK+1D,qBACL/1D,KAAKywB,WAAWtB,SAASojD,QAAQD,GACjCtyE,KAAKoyE,YACDpyE,KAAKwrD,YAAY2gB,UACnBnsE,KAAKywB,WAAWtB,SAASojD,SAAQ,GAE/BvyE,KAAK4lC,gBACP5lC,KAAK4lC,eAAgB,EAjB7B,CAmBA,EACIla,QAAS,WACP1rB,KAAKqsE,cAAgB,KACrBrsE,KAAK4S,KAAO,KACZ5S,KAAKywB,WAAa,KAClBzwB,KAAKwrD,YAAY9/B,SACvB,EACIomC,QAAS,IAAIrlB,QAEf2/B,cAAcvpE,UAAU8yB,KAAOy2C,cAAcvpE,UAAUgvE,YACvDzF,cAAcvpE,UAAU+yB,KAAOw2C,cAAcvpE,UAAUivE,YA4BvDjF,YAAYhqE,UAAUqxC,cAAgB2iB,aAAah0D,UAAUqxC,cAa7D15B,gBAAgB,CAACyvC,YAAagF,iBAAkBmd,cAAetY,cAAeN,iBAAkBtJ,aAAcvC,mBAAoBulB,gBAClIA,eAAerqE,UAAU8wD,YAAcF,qBAAqB5wD,UAAU8wD,YACtEuZ,eAAerqE,UAAU2vE,gBAAkB,CACzClhB,QAAS,EACTV,QAAQ,GAEVsc,eAAerqE,UAAU4vE,aAAe,GACxCvF,eAAerqE,UAAUizD,cAAgB,WACvC91D,KAAK09D,aAAa19D,KAAK8rD,WAAY9rD,KAAK+rD,UAAW/rD,KAAK04D,cAAc,EAAM,GAChF,EACEwU,eAAerqE,UAAUk7D,mBAAqB,SAAUnrD,EAAMg/C,GAC5D,IAAIkJ,EAAY,CACdloD,KAAMA,EACNlW,KAAMkW,EAAKqR,GACXyuD,cAAe1yE,KAAK8sE,kBAAkB7B,qBAAqBrZ,GAC3DA,WAAY,GACZ3S,SAAU,GACVt4B,QAAoB,IAAZ/T,EAAK8hD,IAEXsJ,EAAc,CAAA,EAkBlB,GAjBgB,OAAZprD,EAAKqR,IAA2B,OAAZrR,EAAKqR,IAC3B+5C,EAAYx3C,EAAIigB,gBAAgBC,QAAQ1mC,KAAM4S,EAAK4T,EAAG,EAAG,IAAKxmB,MACzDg+D,EAAYx3C,EAAEtlB,IACjB45D,EAAU6X,GAAK,OAAS50D,QAAQigD,EAAYx3C,EAAEtc,EAAE,IAAM,IAAM6T,QAAQigD,EAAYx3C,EAAEtc,EAAE,IAAM,IAAM6T,QAAQigD,EAAYx3C,EAAEtc,EAAE,IAAM,MAE3G,OAAZ0I,EAAKqR,IAA2B,OAAZrR,EAAKqR,KAClC+5C,EAAY/1D,EAAIw+B,gBAAgBC,QAAQ1mC,KAAM4S,EAAK3K,EAAG,EAAG,KAAMjI,MAC/Dg+D,EAAY3+D,EAAIonC,gBAAgBC,QAAQ1mC,KAAM4S,EAAKvT,EAAG,EAAG,KAAMW,MAC/Dg+D,EAAYt9C,EAAI+lB,gBAAgBC,QAAQ1mC,KAAM4S,EAAK8N,GAAK,CACtDxf,EAAG,GACF,EAAG,IAAMlB,MACZg+D,EAAY/3C,EAAIwgB,gBAAgBC,QAAQ1mC,KAAM4S,EAAKqT,GAAK,CACtD/kB,EAAG,GACF,EAAG0d,UAAW5e,MACjBg+D,EAAYl0D,EAAI,IAAIiuD,iBAAiB/3D,KAAM4S,EAAK9I,EAAG9J,OAErDg+D,EAAY3gD,EAAIopB,gBAAgBC,QAAQ1mC,KAAM4S,EAAKyK,EAAG,EAAG,IAAMrd,MAC/C,OAAZ4S,EAAKqR,IAA2B,OAAZrR,EAAKqR,IAW3B,GAVA62C,EAAUrB,GAAK9C,YAAY/jD,EAAK6mD,IAAM,GACtCqB,EAAU9Y,GAAK4U,aAAahkD,EAAKovC,IAAM,GACxB,GAAXpvC,EAAKovC,KAEP8Y,EAAU/Y,GAAKnvC,EAAKmvC,IAEtBic,EAAYzb,EAAI9b,gBAAgBC,QAAQ1mC,KAAM4S,EAAK2vC,EAAG,EAAG,KAAMviD,MAC1Dg+D,EAAYzb,EAAErhD,IACjB45D,EAAU8X,GAAK5U,EAAYzb,EAAEr4C,GAE3B0I,EAAKxL,EAAG,CACV,IAAIA,EAAI,IAAIkwD,aAAat3D,KAAM4S,EAAKxL,EAAG,SAAUpH,MACjDg+D,EAAY52D,EAAIA,EACX42D,EAAY52D,EAAElG,IACjB45D,EAAU+X,GAAK7U,EAAY52D,EAAEqwD,UAC7BqD,EAAc,GAAIkD,EAAY52D,EAAEswD,WAAW,GAErD,OAEMoD,EAAUn6C,EAAe,IAAX/N,EAAK+N,EAAU,UAAY,UAI3C,OAFA3gB,KAAK07D,WAAWrxD,KAAKywD,GACrBkD,EAAYz5D,MAAQu2D,EACbkD,CACX,EACEkP,eAAerqE,UAAUq7D,mBAAqB,WAK5C,MAJkB,CAChBp5C,GAAI,GACJ4zC,aAAc,GAGpB,EACEwU,eAAerqE,UAAUs7D,uBAAyB,SAAUvrD,GAU1D,MATkB,CAChBgE,UAAW,CACT06C,QAAS,EACTV,QAAQ,EACR/zD,IAAKmD,KAAK8sE,kBAAkBzB,YAC5BlhE,GAAIs8B,gBAAgBC,QAAQ1mC,KAAM4S,EAAKyK,EAAG,EAAG,IAAMrd,MACnDygD,OAAQrK,yBAAyBqB,qBAAqBz3C,KAAM4S,EAAM5S,OAI1E,EACEktE,eAAerqE,UAAUw7D,mBAAqB,SAAUzrD,GACtD,IAAIorD,EAAc,IAAI6O,YAAY7sE,KAAM4S,EAAM5S,KAAK07D,WAAY17D,KAAK8sE,mBAGpE,OAFA9sE,KAAKqkB,OAAOha,KAAK2zD,GACjBh+D,KAAKm2D,oBAAoB6H,GAClBA,CACX,EACEkP,eAAerqE,UAAUm9C,aAAe,WAEtC,IAAI93C,EADJlI,KAAK4lC,eAAgB,EAErB,IAAIhrB,EAAM5a,KAAK+rD,UAAUprD,OACzB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAK04D,aAAaxwD,GAAKlI,KAAK+rD,UAAU7jD,GAIxC,IAFAlI,KAAK09D,aAAa19D,KAAK8rD,WAAY9rD,KAAK+rD,UAAW/rD,KAAK04D,cAAc,EAAM,IAC5E99C,EAAM5a,KAAK8mC,kBAAkBnmC,OACxBuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAK8mC,kBAAkB5+B,GAAGk+B,WAE5BpmC,KAAKu2D,kBACLv2D,KAAK8sE,kBAAkB1B,iBAAiBprE,KAAK4lC,cACjD,EACEsnC,eAAerqE,UAAUiwE,wBAA0B,SAAUl8D,GAC3D,IAAI1O,EACA0S,EAAM5a,KAAK07D,WAAW/6D,OAC1B,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACnBlI,KAAK07D,WAAWxzD,GAAGye,QACtB3mB,KAAK07D,WAAWxzD,GAAG0pD,WAAWvnD,KAAKuM,EAG3C,EACEs2D,eAAerqE,UAAUkwE,6BAA+B,WACtD,IAAI7qE,EACA0S,EAAM5a,KAAK07D,WAAW/6D,OAC1B,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACnBlI,KAAK07D,WAAWxzD,GAAGye,QACtB3mB,KAAK07D,WAAWxzD,GAAG0pD,WAAWxnD,KAGtC,EACE8iE,eAAerqE,UAAUmwE,YAAc,SAAUr1B,GAC/C,IAAIz1C,EACA0S,EAAM+iC,EAAOh9C,OACjB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBy1C,EAAOz1C,GAAGye,QAAS,CAEzB,EACEumD,eAAerqE,UAAU66D,aAAe,SAAU3gD,EAAKgvC,EAAW2M,EAAcua,EAAcrhB,GAC5F,IAAI1pD,EAEAsb,EACAC,EAGAi7C,EACAD,EACAD,EAPA5jD,EAAMmC,EAAIpc,OAAS,EAGnBg+D,EAAY,GACZC,EAAe,GAIfsU,EAAgB,GAAGruE,OAAO+sD,GAC9B,IAAK1pD,EAAI0S,EAAK1S,GAAK,EAAGA,GAAK,EAAG,CAO5B,IANAw2D,EAAe1+D,KAAKw2D,uBAAuBz5C,EAAI7U,KAI7C6jD,EAAU7jD,GAAKwwD,EAAagG,EAAe,GAF3C3hD,EAAI7U,GAAGirE,cAAgBF,EAIP,OAAdl2D,EAAI7U,GAAG+b,IAA6B,OAAdlH,EAAI7U,GAAG+b,IAA6B,OAAdlH,EAAI7U,GAAG+b,IAA6B,OAAdlH,EAAI7U,GAAG+b,GACtEy6C,EAGH3S,EAAU7jD,GAAG3D,MAAMoiB,QAAS,EAF5BolC,EAAU7jD,GAAKlI,KAAK+9D,mBAAmBhhD,EAAI7U,GAAIgrE,GAIjDvU,EAAUt0D,KAAK0hD,EAAU7jD,GAAG3D,YACvB,GAAkB,OAAdwY,EAAI7U,GAAG+b,GAAa,CAC7B,GAAKy6C,EAIH,IADAj7C,EAAOsoC,EAAU7jD,GAAG4c,GAAGnkB,OAClB6iB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBuoC,EAAU7jD,GAAGwwD,aAAal1C,GAAKuoC,EAAU7jD,GAAG4c,GAAGtB,QAJjDuoC,EAAU7jD,GAAKlI,KAAKk+D,mBAAmBnhD,EAAI7U,IAO7ClI,KAAK09D,aAAa3gD,EAAI7U,GAAG4c,GAAIinC,EAAU7jD,GAAG4c,GAAIinC,EAAU7jD,GAAGwwD,aAAcua,EAAcC,EAC/F,KAA+B,OAAdn2D,EAAI7U,GAAG+b,IACXy6C,IACHF,EAAmBx+D,KAAKm+D,uBAAuBphD,EAAI7U,IACnD6jD,EAAU7jD,GAAKs2D,GAEjB0U,EAAc7oE,KAAK0hD,EAAU7jD,IAC7BlI,KAAK8yE,wBAAwB/mB,EAAU7jD,KAChB,OAAd6U,EAAI7U,GAAG+b,IAA6B,OAAdlH,EAAI7U,GAAG+b,IAA6B,OAAdlH,EAAI7U,GAAG+b,IAA6B,OAAdlH,EAAI7U,GAAG+b,GAC7Ey6C,IACH3S,EAAU7jD,GAAKlI,KAAKq+D,mBAAmBthD,EAAI7U,KAEtB,OAAd6U,EAAI7U,GAAG+b,IAA6B,OAAdlH,EAAI7U,GAAG+b,IAA6B,OAAdlH,EAAI7U,GAAG+b,IAA6B,OAAdlH,EAAI7U,GAAG+b,IAA6B,OAAdlH,EAAI7U,GAAG+b,IACnGy6C,GAMHD,EAAW1S,EAAU7jD,IACZye,QAAS,IANlB83C,EAAWhrB,eAAeG,YAAY72B,EAAI7U,GAAG+b,KACpC8Q,KAAK/0B,KAAM+c,EAAI7U,IACxB6jD,EAAU7jD,GAAKu2D,EACfz+D,KAAKo2D,eAAe/rD,KAAKo0D,IAK3BG,EAAav0D,KAAKo0D,IACK,OAAd1hD,EAAI7U,GAAG+b,KACXy6C,GAOHD,EAAW1S,EAAU7jD,IACZye,QAAS,GAPlB83C,EAAWhrB,eAAeG,YAAY72B,EAAI7U,GAAG+b,IAC7C8nC,EAAU7jD,GAAKu2D,EACfA,EAAS1pC,KAAK/0B,KAAM+c,EAAK7U,EAAG6jD,GAC5B/rD,KAAKo2D,eAAe/rD,KAAKo0D,GACzBwU,GAAe,GAKjBrU,EAAav0D,KAAKo0D,IAEpBz+D,KAAK02D,oBAAoB35C,EAAI7U,GAAIA,EAAI,EAC3C,CAII,IAHAlI,KAAK+yE,+BACL/yE,KAAKgzE,YAAYrU,GACjB/jD,EAAMgkD,EAAaj+D,OACduH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB02D,EAAa12D,GAAGye,QAAS,CAE/B,EACEumD,eAAerqE,UAAUkzD,mBAAqB,WAC5C/1D,KAAKwyE,gBAAgBlhB,QAAU,EAC/BtxD,KAAKwyE,gBAAgB5hB,QAAS,EAC9B5wD,KAAKu2D,kBACLv2D,KAAK8sE,kBAAkB1B,iBAAiBprE,KAAK4lC,eAC7C5lC,KAAK6+D,YAAY7+D,KAAKwyE,gBAAiBxyE,KAAK8rD,WAAY9rD,KAAK+rD,WAAW,EAC5E,EACEmhB,eAAerqE,UAAUuwE,qBAAuB,SAAUC,EAAiBC,IACrED,EAAgBziB,QAAU0iB,EAAenpE,GAAGo7B,MAAQvlC,KAAK4lC,iBAC3D0tC,EAAehiB,QAAU+hB,EAAgB/hB,QACzCgiB,EAAehiB,SAAWgiB,EAAenpE,GAAGD,EAC5CopE,EAAe1iB,QAAS,EAE9B,EACEsc,eAAerqE,UAAU0wE,UAAY,WACnC,IAAIrrE,EAEAsb,EACAC,EACAviB,EACAwiB,EACAu8B,EACAuzB,EAGA92E,EACA+2E,EAVA74D,EAAM5a,KAAK07D,WAAW/6D,OAOtBwuB,EAAWnvB,KAAKywB,WAAWtB,SAC3B7F,EAAMtpB,KAAKywB,WAAW47C,cAG1B,IAAKnkE,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EASxB,IAAgB,QAPhBxL,GADA+2E,EAAezzE,KAAK07D,WAAWxzD,IACXxL,OAOa,OAATA,GAAsC,IAApB+2E,EAAab,KAAaa,EAAa7gE,KAAKugE,eAAuC,IAAtBM,EAAaC,MAAqD,IAAvC1zE,KAAKywB,WAAW8+C,mBAA2B,CAwB3K,IAvBApgD,EAASu9C,OACTzsB,EAAQwzB,EAAax0B,SACR,OAATviD,GAA0B,OAATA,GACnByyB,EAASygD,eAAwB,OAATlzE,EAAgB+2E,EAAad,GAAKc,EAAaE,KAEvExkD,EAAS0gD,aAAa4D,EAAab,IAEnCzjD,EAAS2gD,WAAW2D,EAAaha,IAEjCtqC,EAAS4gD,YAAY0D,EAAazxB,IAElC7yB,EAAS6gD,cAAcyD,EAAa1xB,IAAM,IAG1C5yB,EAASwgD,aAAsB,OAATjzE,EAAgB+2E,EAAad,GAAKc,EAAaE,KAGvExkD,EAASugD,WAAW+D,EAAaC,MACpB,OAATh3E,GAA0B,OAATA,GACnB4sB,EAAIgjD,YAENn9C,EAASsgD,aAAagE,EAAaf,cAAcjqB,eAAexrD,OAChEwmB,EAAOw8B,EAAMt/C,OACR6iB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAAG,CAU5B,IATa,OAAT9mB,GAA0B,OAATA,IACnB4sB,EAAIgjD,YACAmH,EAAaZ,KACfvpD,EAAIsqD,YAAYH,EAAaZ,IAC7BvpD,EAAIuqD,eAAiBJ,EAAiB,KAI1C/vD,GADA8vD,EAAQvzB,EAAMz8B,GAAGypD,SACJtsE,OACRO,EAAI,EAAGA,EAAIwiB,EAAMxiB,GAAK,EACN,MAAfsyE,EAAMtyE,GAAG8G,EACXshB,EAAIijD,OAAOiH,EAAMtyE,GAAGsG,EAAE,GAAIgsE,EAAMtyE,GAAGsG,EAAE,IACb,MAAfgsE,EAAMtyE,GAAG8G,EAClBshB,EAAImjD,cAAc+G,EAAMtyE,GAAGiwC,IAAI,GAAIqiC,EAAMtyE,GAAGiwC,IAAI,GAAIqiC,EAAMtyE,GAAGiwC,IAAI,GAAIqiC,EAAMtyE,GAAGiwC,IAAI,GAAIqiC,EAAMtyE,GAAGiwC,IAAI,GAAIqiC,EAAMtyE,GAAGiwC,IAAI,IAEpH7nB,EAAIwqD,YAGK,OAATp3E,GAA0B,OAATA,IAEnByyB,EAASghD,YACLsD,EAAaZ,IACfvpD,EAAIsqD,YAAY5zE,KAAKyyE,cAGnC,CACqB,OAAT/1E,GAA0B,OAATA,GAEnBsD,KAAKywB,WAAWtB,SAAS8gD,QAAQwD,EAAa9yD,GAEhDwO,EAASojD,SACjB,CAEA,EACErF,eAAerqE,UAAUg8D,YAAc,SAAUwU,EAAiB7zB,EAAO5sC,EAAMmhE,GAC7E,IAAI7rE,EAEAorE,EAEJ,IADAA,EAAiBD,EACZnrE,EAHKs3C,EAAM7+C,OAAS,EAGXuH,GAAK,EAAGA,GAAK,EACL,OAAhBs3C,EAAMt3C,GAAG+b,IACXqvD,EAAiB1gE,EAAK1K,GAAG0O,UACzB5W,KAAKozE,qBAAqBC,EAAiBC,IAClB,OAAhB9zB,EAAMt3C,GAAG+b,IAA+B,OAAhBu7B,EAAMt3C,GAAG+b,IAA+B,OAAhBu7B,EAAMt3C,GAAG+b,IAA+B,OAAhBu7B,EAAMt3C,GAAG+b,GAC1FjkB,KAAKw6D,WAAWhb,EAAMt3C,GAAI0K,EAAK1K,IACN,OAAhBs3C,EAAMt3C,GAAG+b,GAClBjkB,KAAK66D,WAAWrb,EAAMt3C,GAAI0K,EAAK1K,GAAIorE,GACV,OAAhB9zB,EAAMt3C,GAAG+b,GAClBjkB,KAAKi7D,aAAazb,EAAMt3C,GAAI0K,EAAK1K,GAAIorE,GACZ,OAAhB9zB,EAAMt3C,GAAG+b,IAA+B,OAAhBu7B,EAAMt3C,GAAG+b,GAC1CjkB,KAAKg0E,mBAAmBx0B,EAAMt3C,GAAI0K,EAAK1K,GAAIorE,GAClB,OAAhB9zB,EAAMt3C,GAAG+b,GAClBjkB,KAAK6+D,YAAYyU,EAAgB9zB,EAAMt3C,GAAG4c,GAAIlS,EAAK1K,GAAG4c,IAC7C06B,EAAMt3C,GAAG+b,GAIlB8vD,GACF/zE,KAAKuzE,WAEX,EACErG,eAAerqE,UAAUoxE,kBAAoB,SAAUjH,EAAavkC,GAClE,GAAIzoC,KAAK4lC,eAAiB6C,EAAMlD,MAAQynC,EAAYpb,WAAWrsB,KAAM,CACnE,IAEIr9B,EACA0S,EACA4I,EAJA0wD,EAAalH,EAAYC,QACzBvjC,EAAQjB,EAAMiB,MAIdjmB,EAAOimB,EAAM7O,QACjBq5C,EAAWvzE,OAAS,EACpB,IAAIwzE,EAAoBnH,EAAYpb,WAAWnJ,eAC/C,IAAKjlC,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAAG,CAC5B,IAAI0uC,EAAYxoB,EAAMrlB,OAAOb,GAC7B,GAAI0uC,GAAaA,EAAUhoD,EAAG,CAE5B,IADA0Q,EAAMs3C,EAAUr3B,QACX3yB,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACd,IAANA,GACFgsE,EAAW7pE,KAAK,CACdrC,EAAG,IACHR,EAAG2sE,EAAkBljC,kBAAkBihB,EAAUhoD,EAAE,GAAG,GAAIgoD,EAAUhoD,EAAE,GAAG,GAAI,KAGjFgqE,EAAW7pE,KAAK,CACdrC,EAAG,IACHmpC,IAAKgjC,EAAkB9iC,oBAAoB6gB,EAAU70C,EAAEnV,EAAI,GAAIgqD,EAAUhqD,EAAEA,GAAIgqD,EAAUhoD,EAAEhC,MAGnF,IAAR0S,GACFs5D,EAAW7pE,KAAK,CACdrC,EAAG,IACHR,EAAG2sE,EAAkBljC,kBAAkBihB,EAAUhoD,EAAE,GAAG,GAAIgoD,EAAUhoD,EAAE,GAAG,GAAI,KAG7EgoD,EAAU1rC,GAAK5L,IACjBs5D,EAAW7pE,KAAK,CACdrC,EAAG,IACHmpC,IAAKgjC,EAAkB9iC,oBAAoB6gB,EAAU70C,EAAEnV,EAAI,GAAIgqD,EAAUhqD,EAAE,GAAIgqD,EAAUhoD,EAAE,MAE7FgqE,EAAW7pE,KAAK,CACdrC,EAAG,MAGjB,CACA,CACMglE,EAAYC,QAAUiH,CAC5B,CACA,EACEhH,eAAerqE,UAAU23D,WAAa,SAAUn0C,EAAUi0C,GACxD,IAAoB,IAAhBj0C,EAASquC,IAAeruC,EAAS8sD,cAAe,CAClD,IAAIjrE,EACA0S,EAAM0/C,EAASyS,aAAapsE,OAChC,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAKi0E,kBAAkB3Z,EAASyS,aAAa7kE,GAAIoyD,EAAS73B,GAElE,CACA,EACEyqC,eAAerqE,UAAUg4D,WAAa,SAAUR,EAAWC,EAAUgZ,GACnE,IAAIxY,EAAYR,EAAS/1D,OACrB+1D,EAAS9zC,EAAE+e,MAAQvlC,KAAK4lC,iBAC1Bk1B,EAAU6X,GAAK,OAAS50D,QAAQu8C,EAAS9zC,EAAEtc,EAAE,IAAM,IAAM6T,QAAQu8C,EAAS9zC,EAAEtc,EAAE,IAAM,IAAM6T,QAAQu8C,EAAS9zC,EAAEtc,EAAE,IAAM,MAEnHowD,EAASj9C,EAAEkoB,MAAQ+tC,EAAe1iB,QAAU5wD,KAAK4lC,iBACnDk1B,EAAU4Y,KAAOpZ,EAASj9C,EAAEnT,EAAIopE,EAAehiB,QAErD,EACE4b,eAAerqE,UAAUmxE,mBAAqB,SAAU3Z,EAAWC,EAAUgZ,GAC3E,IACIK,EADA7Y,EAAYR,EAAS/1D,MAEzB,IAAKu2D,EAAU6Y,KAAOrZ,EAASxwD,EAAEy7B,MAAQ+0B,EAASryD,EAAEs9B,MAAQ+0B,EAASj7D,EAAEkmC,MAAwB,IAAhB80B,EAAUryD,IAAYsyD,EAAS55C,EAAE6kB,MAAQ+0B,EAASr0C,EAAEsf,MAAO,CACxI,IAmBIr9B,EAnBAohB,EAAMtpB,KAAKywB,WAAW47C,cACtBlwC,EAAMm+B,EAASryD,EAAEiC,EACjBkyB,EAAMk+B,EAASj7D,EAAE6K,EACrB,GAAoB,IAAhBmwD,EAAUryD,EACZ2rE,EAAMrqD,EAAI8qD,qBAAqBj4C,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,QACtD,CACL,IAAIiP,EAAMh4B,KAAKyK,KAAKzK,KAAKuK,IAAIue,EAAI,GAAKC,EAAI,GAAI,GAAK/oB,KAAKuK,IAAIue,EAAI,GAAKC,EAAI,GAAI,IACzEm/B,EAAMloD,KAAK8wB,MAAM/H,EAAI,GAAKD,EAAI,GAAIC,EAAI,GAAKD,EAAI,IAC/CwD,EAAU26B,EAAS55C,EAAExW,EACrBy1B,GAAW,EACbA,EAAU,IACDA,QACTA,GAAU,KAEZ,IAAImc,EAAOzQ,EAAM1L,EACb3gC,EAAIqU,KAAKoxB,IAAI82B,EAAMjB,EAASr0C,EAAE/b,GAAK4xC,EAAO3f,EAAI,GAC9C3yB,EAAI6J,KAAKuwB,IAAI23B,EAAMjB,EAASr0C,EAAE/b,GAAK4xC,EAAO3f,EAAI,GAClDw3C,EAAMrqD,EAAI+qD,qBAAqBr1E,EAAGwK,EAAG,EAAG2yB,EAAI,GAAIA,EAAI,GAAIkP,EAChE,CAEM,IAAIzwB,EAAMy/C,EAAUvwD,EAAEtC,EAClB6zD,EAAUf,EAASxwD,EAAE0c,EACrB8qC,EAAU,EACd,IAAKppD,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACpBoyD,EAASxwD,EAAEuuD,aAAeiC,EAASxwD,EAAEquD,eACvC7G,EAAUgJ,EAASxwD,EAAEuT,EAAM,EAAJnV,EAAQ,IAEjCyrE,EAAIW,aAAajZ,EAAY,EAAJnzD,GAAS,IAAK,QAAUmzD,EAAY,EAAJnzD,EAAQ,GAAK,IAAMmzD,EAAY,EAAJnzD,EAAQ,GAAK,IAAMmzD,EAAY,EAAJnzD,EAAQ,GAAK,IAAMopD,EAAU,KAE9IwJ,EAAU6Y,IAAMA,CACtB,CACI7Y,EAAU4Y,KAAOpZ,EAASj9C,EAAEnT,EAAIopE,EAAehiB,OACnD,EACE4b,eAAerqE,UAAUo4D,aAAe,SAAUZ,EAAWC,EAAUgZ,GACrE,IAAIxY,EAAYR,EAAS/1D,MACrB6C,EAAIkzD,EAASlzD,EACbA,IAAMA,EAAEm+B,MAAQvlC,KAAK4lC,iBACvBk1B,EAAU+X,GAAKzrE,EAAEqwD,UACjBqD,EAAc,GAAI1zD,EAAEswD,WAAW,KAE7B4C,EAAS9zC,EAAE+e,MAAQvlC,KAAK4lC,iBAC1Bk1B,EAAU6X,GAAK,OAAS50D,QAAQu8C,EAAS9zC,EAAEtc,EAAE,IAAM,IAAM6T,QAAQu8C,EAAS9zC,EAAEtc,EAAE,IAAM,IAAM6T,QAAQu8C,EAAS9zC,EAAEtc,EAAE,IAAM,MAEnHowD,EAASj9C,EAAEkoB,MAAQ+tC,EAAe1iB,QAAU5wD,KAAK4lC,iBACnDk1B,EAAU4Y,KAAOpZ,EAASj9C,EAAEnT,EAAIopE,EAAehiB,UAE7CgJ,EAAS/X,EAAEhd,MAAQvlC,KAAK4lC,iBAC1Bk1B,EAAU8X,GAAKtY,EAAS/X,EAAEr4C,EAEhC,EACEgjE,eAAerqE,UAAU6oB,QAAU,WACjC1rB,KAAK8rD,WAAa,KAClB9rD,KAAKywB,WAAa,KAClBzwB,KAAKqsE,cAAgB,KACrBrsE,KAAK07D,WAAW/6D,OAAS,EACzBX,KAAK+rD,UAAUprD,OAAS,CAC5B,EAqBE6Z,gBAAgB,CAACyvC,YAAagF,iBAAkBmd,cAAe5Y,iBAAkBtJ,aAAcvC,kBAAmB0c,cAAe8I,eACjIA,cAActqE,UAAU+gD,QAAUrpC,UAAU,UAAUgP,WAAW,MACjE4jD,cAActqE,UAAUukE,aAAe,WACrC,IAAI7hD,EAAevlB,KAAK6iE,aAAazG,YACrCp8D,KAAKmkE,gBAAkBhnD,iBAAiBoI,EAAasoB,EAAItoB,EAAasoB,EAAEltC,OAAS,GACjF,IAAI4zE,GAAU,EACVhvD,EAAau2C,IACfyY,GAAU,EACVv0E,KAAKukC,OAAOxwB,KAAO/T,KAAKgnE,WAAWzhD,EAAau2C,KAEhD97D,KAAKukC,OAAOxwB,KAAO,gBAErB/T,KAAK+T,KAAOwgE,EACZ,IAAIC,GAAY,EACZjvD,EAAauhC,KACf0tB,GAAY,EACZx0E,KAAKukC,OAAO6oC,OAASptE,KAAKgnE,WAAWzhD,EAAauhC,IAClD9mD,KAAKukC,OAAO+oC,OAAS/nD,EAAas2C,IAEpC,IACI3zD,EACA0S,EAOAiL,EACAiY,EACA58B,EACAwiB,EACAW,EACAb,EACAC,EACAyuC,EACAuiB,EACAC,EAlBAh3B,EAAW19C,KAAKywB,WAAWmB,YAAYq1B,cAAc1hC,EAAahc,GAGlEy2D,EAAUz6C,EAAasoB,EACvBm3B,EAAehlE,KAAK8xD,QACxB9xD,KAAKotE,OAASoH,EACdx0E,KAAKukC,OAAOgpC,OAAShoD,EAAa03C,UAAY,MAAQj9D,KAAKywB,WAAWmB,YAAYq1B,cAAc1hC,EAAahc,GAAGs6C,QAChHjpC,EAAM2K,EAAa23C,UAAUv8D,OAY7B,IAAIuoE,EAAclpE,KAAK4S,KAAKs2D,YACxB3I,EAAmC,KAAlBh7C,EAAay4B,GAAaz4B,EAAa03C,UACxDuH,EAAO,EACPC,EAAO,EACPa,GAAY,EACZj9B,EAAM,EACV,IAAKngC,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAAG,CAE3B41B,GADAjY,EAAW7lB,KAAKywB,WAAWmB,YAAYm1B,YAAYxhC,EAAa23C,UAAUh1D,GAAIw1C,EAASE,OAAQ59C,KAAKywB,WAAWmB,YAAYq1B,cAAc1hC,EAAahc,GAAGs6C,WACjIh+B,EAASjT,MAAQ,CAAA,EACzCoyD,EAAah7B,QACTk/B,GAAelJ,EAAQ93D,GAAGC,IAC5Bq8D,GAAQjE,EACRkE,GAAQl/C,EAAay3C,QACrByH,GAAQa,EAAY,EAAI,EACxBA,GAAY,GAGd7hD,GADAY,EAASyZ,EAAUzZ,OAASyZ,EAAUzZ,OAAO,GAAGS,GAAK,IACvCnkB,OACdqkE,EAAat3B,MAAMnoB,EAAa03C,UAAY,IAAK13C,EAAa03C,UAAY,KACtEiM,GACFlpE,KAAK8mE,4BAA4BvhD,EAAcy/C,EAAchF,EAAQ93D,GAAG6kB,KAAMy3C,EAAMC,GAEtFgQ,EAAWt3D,iBAAiBsG,EAAO,GACnC,IAAIkxD,EAAkB,EACtB,IAAKnxD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB,GAAqB,OAAjBa,EAAOb,GAAGS,GAAa,CAIzB,IAHAP,EAAOW,EAAOb,GAAGqB,GAAG3jB,EAAEgH,EAAEvH,OACxBuxD,EAAY7tC,EAAOb,GAAGqB,GAAG3jB,EACzBwzE,EAAU,GACLxzE,EAAI,EAAGA,EAAIwiB,EAAMxiB,GAAK,EACf,IAANA,GACFwzE,EAAQrqE,KAAK26D,EAAat0B,SAASwhB,EAAUhoD,EAAE,GAAG,GAAIgoD,EAAUhoD,EAAE,GAAG,GAAI,GAAI86D,EAAar0B,SAASuhB,EAAUhoD,EAAE,GAAG,GAAIgoD,EAAUhoD,EAAE,GAAG,GAAI,IAE3IwqE,EAAQrqE,KAAK26D,EAAat0B,SAASwhB,EAAU70C,EAAEnc,EAAI,GAAG,GAAIgxD,EAAU70C,EAAEnc,EAAI,GAAG,GAAI,GAAI8jE,EAAar0B,SAASuhB,EAAU70C,EAAEnc,EAAI,GAAG,GAAIgxD,EAAU70C,EAAEnc,EAAI,GAAG,GAAI,GAAI8jE,EAAat0B,SAASwhB,EAAUhqD,EAAEhH,GAAG,GAAIgxD,EAAUhqD,EAAEhH,GAAG,GAAI,GAAI8jE,EAAar0B,SAASuhB,EAAUhqD,EAAEhH,GAAG,GAAIgxD,EAAUhqD,EAAEhH,GAAG,GAAI,GAAI8jE,EAAat0B,SAASwhB,EAAUhoD,EAAEhJ,GAAG,GAAIgxD,EAAUhoD,EAAEhJ,GAAG,GAAI,GAAI8jE,EAAar0B,SAASuhB,EAAUhoD,EAAEhJ,GAAG,GAAIgxD,EAAUhoD,EAAEhJ,GAAG,GAAI,IAE3ZwzE,EAAQrqE,KAAK26D,EAAat0B,SAASwhB,EAAU70C,EAAEnc,EAAI,GAAG,GAAIgxD,EAAU70C,EAAEnc,EAAI,GAAG,GAAI,GAAI8jE,EAAar0B,SAASuhB,EAAU70C,EAAEnc,EAAI,GAAG,GAAIgxD,EAAU70C,EAAEnc,EAAI,GAAG,GAAI,GAAI8jE,EAAat0B,SAASwhB,EAAUhqD,EAAE,GAAG,GAAIgqD,EAAUhqD,EAAE,GAAG,GAAI,GAAI88D,EAAar0B,SAASuhB,EAAUhqD,EAAE,GAAG,GAAIgqD,EAAUhqD,EAAE,GAAG,GAAI,GAAI88D,EAAat0B,SAASwhB,EAAUhoD,EAAE,GAAG,GAAIgoD,EAAUhoD,EAAE,GAAG,GAAI,GAAI86D,EAAar0B,SAASuhB,EAAUhoD,EAAE,GAAG,GAAIgoD,EAAUhoD,EAAE,GAAG,GAAI,IACzZuqE,EAASE,GAAmBD,EAC5BC,GAAmB,CAC7B,CAEUzL,IACF1E,GAAQxE,EAAQ93D,GAAG2lC,EACnB22B,GAAQjE,GAENvgE,KAAKunE,UAAUl/B,GACjBroC,KAAKunE,UAAUl/B,GAAKzR,KAAO69C,EAE3Bz0E,KAAKunE,UAAUl/B,GAAO,CACpBzR,KAAM69C,GAGVpsC,GAAO,CACb,CACA,EACE8kC,cAActqE,UAAUkzD,mBAAqB,WAE3C,IAYI7tD,EACA0S,EACA4I,EACAC,EACAviB,EACAwiB,EAlBJ1jB,KAAKmnE,eACKnnE,KAAKqsE,cACXxpB,KAAO7iD,KAAKukC,OAAOgpC,OACvBvtE,KAAKywB,WAAWtB,SAAS2gD,WAAW,QAEpC9vE,KAAKywB,WAAWtB,SAAS4gD,YAAY,SAErC/vE,KAAKywB,WAAWtB,SAAS6gD,cAAc,GAGlChwE,KAAK4S,KAAKs2D,aACblpE,KAAK0mE,aAAanC,YAAYvkE,KAAK6iE,aAAazG,YAAap8D,KAAKokE,oBAQpE,IAGIkG,EAHAnG,EAAkBnkE,KAAK0mE,aAAavC,gBACpCnE,EAAUhgE,KAAK6iE,aAAazG,YAAYvuB,EAC5CjzB,EAAMolD,EAAQr/D,OAEd,IAGI8zE,EACAC,EAJAE,EAAW,KACXC,EAAa,KACbC,EAAc,KAGd3lD,EAAWnvB,KAAKywB,WAAWtB,SAC/B,IAAKjnB,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB,IAAK83D,EAAQ93D,GAAGC,EAAG,CAOjB,IANAmiE,EAAiBnG,EAAgBj8D,MAE/BinB,EAASu9C,OACTv9C,EAASsgD,aAAanF,EAAe9iE,GACrC2nB,EAASugD,WAAWpF,EAAejtD,IAEjCrd,KAAK+T,KAAM,CAeb,IAdIu2D,GAAkBA,EAAexO,GAC/B8Y,IAAatK,EAAexO,KAC9B3sC,EAASwgD,aAAarF,EAAexO,IACrC8Y,EAAWtK,EAAexO,IAGnB8Y,IAAa50E,KAAKukC,OAAOxwB,OAClC6gE,EAAW50E,KAAKukC,OAAOxwB,KACvBob,EAASwgD,aAAa3vE,KAAKukC,OAAOxwB,OAIpC0P,GADAgxD,EAAWz0E,KAAKunE,UAAUr/D,GAAG0uB,MACbj2B,OAChBX,KAAKywB,WAAW47C,cAAcC,YACzB9oD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAIzB,IAFAE,GADAgxD,EAAUD,EAASjxD,IACJ7iB,OACfX,KAAKywB,WAAW47C,cAAcE,OAAOmI,EAAQ,GAAIA,EAAQ,IACpDxzE,EAAI,EAAGA,EAAIwiB,EAAMxiB,GAAK,EACzBlB,KAAKywB,WAAW47C,cAAcI,cAAciI,EAAQxzE,GAAIwzE,EAAQxzE,EAAI,GAAIwzE,EAAQxzE,EAAI,GAAIwzE,EAAQxzE,EAAI,GAAIwzE,EAAQxzE,EAAI,GAAIwzE,EAAQxzE,EAAI,IAGxIlB,KAAKywB,WAAW47C,cAAcyH,YAC9B3kD,EAAS8gD,SAGnB,CACQ,GAAIjwE,KAAKotE,OAAQ,CA0Bf,IAzBI9C,GAAkBA,EAAezO,GAC/BiZ,IAAgBxK,EAAezO,KACjCiZ,EAAcxK,EAAezO,GAC7B1sC,EAAS0gD,aAAavF,EAAezO,KAG9BiZ,IAAgB90E,KAAKukC,OAAO+oC,SACrCwH,EAAc90E,KAAKukC,OAAO+oC,OAC1Bn+C,EAAS0gD,aAAa7vE,KAAKukC,OAAO+oC,SAGhChD,GAAkBA,EAAexjB,GAC/B+tB,IAAevK,EAAexjB,KAChC+tB,EAAavK,EAAexjB,GAC5B33B,EAASygD,eAAetF,EAAexjB,KAGhC+tB,IAAe70E,KAAKukC,OAAO6oC,SACpCyH,EAAa70E,KAAKukC,OAAO6oC,OACzBj+C,EAASygD,eAAe5vE,KAAKukC,OAAO6oC,SAItC3pD,GADAgxD,EAAWz0E,KAAKunE,UAAUr/D,GAAG0uB,MACbj2B,OAChBX,KAAKywB,WAAW47C,cAAcC,YACzB9oD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAIzB,IAFAE,GADAgxD,EAAUD,EAASjxD,IACJ7iB,OACfX,KAAKywB,WAAW47C,cAAcE,OAAOmI,EAAQ,GAAIA,EAAQ,IACpDxzE,EAAI,EAAGA,EAAIwiB,EAAMxiB,GAAK,EACzBlB,KAAKywB,WAAW47C,cAAcI,cAAciI,EAAQxzE,GAAIwzE,EAAQxzE,EAAI,GAAIwzE,EAAQxzE,EAAI,GAAIwzE,EAAQxzE,EAAI,GAAIwzE,EAAQxzE,EAAI,GAAIwzE,EAAQxzE,EAAI,IAGxIlB,KAAKywB,WAAW47C,cAAcyH,YAC9B3kD,EAASghD,WAGnB,CACY7F,GACFtqE,KAAKywB,WAAWtB,SAASojD,SAEnC,CAEA,EAOE/3D,gBAAgB,CAACyvC,YAAagF,iBAAkBmd,cAAe5Y,iBAAkBtJ,aAAcvC,mBAAoB6lB,gBACnHA,eAAe3qE,UAAU8wD,YAAc8H,gBAAgB54D,UAAU8wD,YACjE6Z,eAAe3qE,UAAUorB,aAAeylC,cAAc7wD,UAAUorB,aAChEu/C,eAAe3qE,UAAUizD,cAAgB,WACvC,GAAI91D,KAAKwqB,IAAItlB,QAAUlF,KAAKkqB,UAAUq4B,IAAMviD,KAAKwqB,IAAItlB,OAASlF,KAAKkqB,UAAUxJ,IAAM1gB,KAAKwqB,IAAIrlB,QAAS,CACnG,IAAIkkB,EAAS9O,UAAU,UACvB8O,EAAOnkB,MAAQlF,KAAKkqB,UAAUq4B,EAC9Bl5B,EAAOlkB,OAASnF,KAAKkqB,UAAUxJ,EAC/B,IAKIq0D,EACAC,EANA1rD,EAAMD,EAAOE,WAAW,MACxB0rD,EAAOj1E,KAAKwqB,IAAItlB,MAChBgwE,EAAOl1E,KAAKwqB,IAAIrlB,OAChBgwE,EAASF,EAAOC,EAChBE,EAAYp1E,KAAKkqB,UAAUq4B,EAAIviD,KAAKkqB,UAAUxJ,EAG9C20D,EAAMr1E,KAAKkqB,UAAU+rC,IAAMj2D,KAAKywB,WAAWk4B,aAAauN,yBACxDif,EAASC,GAAqB,mBAARC,GAA4BF,EAASC,GAAqB,mBAARC,EAE1EN,GADAC,EAAaE,GACYE,EAGzBJ,GADAD,EAAYE,GACaG,EAE3B9rD,EAAI4oD,UAAUlyE,KAAKwqB,KAAMyqD,EAAOF,GAAa,GAAIG,EAAOF,GAAc,EAAGD,EAAWC,EAAY,EAAG,EAAGh1E,KAAKkqB,UAAUq4B,EAAGviD,KAAKkqB,UAAUxJ,GACvI1gB,KAAKwqB,IAAMnB,CACjB,CACA,EACEmkD,eAAe3qE,UAAUkzD,mBAAqB,WAC5C/1D,KAAKqsE,cAAc6F,UAAUlyE,KAAKwqB,IAAK,EAAG,EAC9C,EACEgjD,eAAe3qE,UAAU6oB,QAAU,WACjC1rB,KAAKwqB,IAAM,IACf,EAKEhQ,gBAAgB,CAACyvC,YAAagF,iBAAkBmd,cAAe5Y,iBAAkBtJ,aAAcvC,mBAAoB8lB,gBACnHA,eAAe5qE,UAAU8wD,YAAc8H,gBAAgB54D,UAAU8wD,YACjE8Z,eAAe5qE,UAAUorB,aAAeylC,cAAc7wD,UAAUorB,aAChEw/C,eAAe5qE,UAAUkzD,mBAAqB,WAE5C/1D,KAAKywB,WAAWtB,SAASwgD,aAAa3vE,KAAK4S,KAAKk0C,IAEhD9mD,KAAKywB,WAAWtB,SAAS+gD,YAAY,EAAG,EAAGlwE,KAAK4S,KAAKipD,GAAI77D,KAAK4S,KAAK6vB,GAGvE,EAGEjoB,gBAAgB,CAACuwC,cAAe2iB,oBAChCA,mBAAmB7qE,UAAU8qD,YAAc,SAAU/6C,GACnD,OAAO,IAAIs6D,eAAet6D,EAAM5S,KAAKywB,WAAYzwB,KACrD,EACE0tE,mBAAmB7qE,UAAU+qD,WAAa,SAAUh7C,GAClD,OAAO,IAAIu6D,cAAcv6D,EAAM5S,KAAKywB,WAAYzwB,KACpD,EACE0tE,mBAAmB7qE,UAAU0qD,YAAc,SAAU36C,GACnD,OAAO,IAAI46D,eAAe56D,EAAM5S,KAAKywB,WAAYzwB,KACrD,EACE0tE,mBAAmB7qE,UAAU4qD,YAAc,SAAU76C,GACnD,OAAO,IAAI66D,eAAe76D,EAAM5S,KAAKywB,WAAYzwB,KACrD,EACE0tE,mBAAmB7qE,UAAU6qD,WAAaoa,YAAYjlE,UAAU6qD,WAChEggB,mBAAmB7qE,UAAU4sE,aAAe,SAAUxyE,GACnC,IAAbA,EAAM,IAAyB,IAAbA,EAAM,IAAyB,IAAbA,EAAM,IAAyB,IAAbA,EAAM,IAA0B,IAAdA,EAAM,KAA2B,IAAdA,EAAM,KAGrG+C,KAAKqsE,cAAcz1D,UAAU3Z,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,IAAKA,EAAM,IAC1F,EACEywE,mBAAmB7qE,UAAU6sE,WAAa,SAAUvlE,GAClDnK,KAAKqsE,cAAciJ,aAAenrE,EAAK,EAAI,EAAIA,CACnD,EACEujE,mBAAmB7qE,UAAU8sE,aAAe,SAAUzwE,GACpDc,KAAKqsE,cAAc7iD,UAAYtqB,CACnC,EACEwuE,mBAAmB7qE,UAAU+sE,eAAiB,SAAU1wE,GACtDc,KAAKqsE,cAAcuB,YAAc1uE,CACrC,EACEwuE,mBAAmB7qE,UAAUgtE,aAAe,SAAU3wE,GACpDc,KAAKqsE,cAAchM,UAAYnhE,CACnC,EACEwuE,mBAAmB7qE,UAAUitE,WAAa,SAAU5wE,GAClDc,KAAKqsE,cAAcwB,QAAU3uE,CACjC,EACEwuE,mBAAmB7qE,UAAUktE,YAAc,SAAU7wE,GACnDc,KAAKqsE,cAAc5vB,SAAWv9C,CAClC,EACEwuE,mBAAmB7qE,UAAUmtE,cAAgB,SAAU9wE,GACrDc,KAAKqsE,cAAc3vB,WAAax9C,CACpC,EACEwuE,mBAAmB7qE,UAAUotE,QAAU,SAAUsF,GAC/Cv1E,KAAKqsE,cAAct4D,KAAKwhE,EAC5B,EACE7H,mBAAmB7qE,UAAUqtE,YAAc,SAAUlxE,EAAGwK,EAAG+4C,EAAG7hC,GAC5D1gB,KAAKqsE,cAAc5iD,SAASzqB,EAAGwK,EAAG+4C,EAAG7hC,EACzC,EACEgtD,mBAAmB7qE,UAAUstE,UAAY,WACvCnwE,KAAKqsE,cAAce,QACvB,EACEM,mBAAmB7qE,UAAUmnC,MAAQ,WAC9BhqC,KAAK2oD,aAAawmB,YAIvBnvE,KAAKwvE,YAAYxlC,QAHfhqC,KAAKqsE,cAAckG,SAIzB,EACE7E,mBAAmB7qE,UAAU6pE,KAAO,WAClC1sE,KAAKqsE,cAAcK,MACvB,EACEgB,mBAAmB7qE,UAAU0vE,QAAU,SAAUiD,GAC1Cx1E,KAAK2oD,aAAawmB,aAInBqG,IACFx1E,KAAKywB,WAAWkhD,UAAY,eAE9B3xE,KAAKwvE,YAAY+C,QAAQiD,IANvBx1E,KAAKqsE,cAAckG,SAOzB,EACE7E,mBAAmB7qE,UAAUitB,gBAAkB,SAAU0C,GACvD,GAAIxyB,KAAK6uD,cAAcz+B,QAAS,CAC9BpwB,KAAK6uD,cAAcx+B,UAAY9V,UAAU,UACzC,IAAIk7D,EAAiBz1E,KAAK6uD,cAAcx+B,UAAU9rB,MAClDkxE,EAAevwE,MAAQ,OACvBuwE,EAAetwE,OAAS,OACxB,IAAI4jB,EAAS,cACb0sD,EAAez2D,gBAAkB+J,EACjC0sD,EAAeC,mBAAqB3sD,EACpC0sD,EAAex2D,sBAAwB8J,EACvC0sD,EAAe,qBAAuB1sD,EACtC0sD,EAAelN,kBAAoBvoE,KAAK2oD,aAAa4f,kBACrDvoE,KAAK6uD,cAAcz+B,QAAQngB,YAAYjQ,KAAK6uD,cAAcx+B,WAC1DrwB,KAAKqsE,cAAgBrsE,KAAK6uD,cAAcx+B,UAAU9G,WAAW,MACzDvpB,KAAK2oD,aAAa52C,WACpB/R,KAAK6uD,cAAcx+B,UAAUmH,aAAa,QAASx3B,KAAK2oD,aAAa52C,WAEnE/R,KAAK2oD,aAAa1wC,IACpBjY,KAAK6uD,cAAcx+B,UAAUmH,aAAa,KAAMx3B,KAAK2oD,aAAa1wC,GAE1E,MACMjY,KAAKqsE,cAAgBrsE,KAAK2oD,aAAaymB,QAEzCpvE,KAAKwvE,YAAYmG,WAAW31E,KAAKqsE,eACjCrsE,KAAK4S,KAAO4f,EACZxyB,KAAKqjB,OAASmP,EAASnP,OACvBrjB,KAAK0xE,gBAAkB,CACrBnvB,EAAG/vB,EAAS+vB,EACZ7hC,EAAG8R,EAAS9R,EACZ6sB,GAAI,EACJ1C,GAAI,EACJmD,GAAI,EACJ/pB,GAAI,GAENjkB,KAAK2uD,gBAAgBn8B,EAAU5iB,SAAStG,MACxCtJ,KAAKywB,WAAW47C,cAAgBrsE,KAAKqsE,cACrCrsE,KAAKywB,WAAWtB,SAAWnvB,KAC3BA,KAAKywB,WAAWmlD,UAAW,EAC3B51E,KAAKywB,WAAWw9B,gBAAkBjuD,KAAK2oD,aAAasF,gBACpDjuD,KAAKywB,WAAWihD,gBAAkB1xE,KAAK0xE,gBACvC1xE,KAAKi/C,SAAW9hC,iBAAiBqV,EAASnP,OAAO1iB,QACjDX,KAAKqzB,qBACT,EACEq6C,mBAAmB7qE,UAAUwwB,oBAAsB,SAAUnuB,EAAOC,GAElE,IAAI0wE,EACAC,EAiBAC,EACAC,EACJ,GArBAh2E,KAAKgqC,QAGD9kC,GACF2wE,EAAe3wE,EACf4wE,EAAgB3wE,EAChBnF,KAAKqsE,cAAchjD,OAAOnkB,MAAQ2wE,EAClC71E,KAAKqsE,cAAchjD,OAAOlkB,OAAS2wE,IAE/B91E,KAAK6uD,cAAcz+B,SAAWpwB,KAAK6uD,cAAcx+B,WACnDwlD,EAAe71E,KAAK6uD,cAAcz+B,QAAQ8yB,YAC1C4yB,EAAgB91E,KAAK6uD,cAAcz+B,QAAQ6lD,eAE3CJ,EAAe71E,KAAKqsE,cAAchjD,OAAOnkB,MACzC4wE,EAAgB91E,KAAKqsE,cAAchjD,OAAOlkB,QAE5CnF,KAAKqsE,cAAchjD,OAAOnkB,MAAQ2wE,EAAe71E,KAAK2oD,aAAa0mB,IACnErvE,KAAKqsE,cAAchjD,OAAOlkB,OAAS2wE,EAAgB91E,KAAK2oD,aAAa0mB,MAIT,IAA1DrvE,KAAK2oD,aAAa2f,oBAAoB/gD,QAAQ,UAA6E,IAA3DvnB,KAAK2oD,aAAa2f,oBAAoB/gD,QAAQ,SAAiB,CACjI,IAAI8tD,EAAMr1E,KAAK2oD,aAAa2f,oBAAoB7wD,MAAM,KAClDy+D,EAAWb,EAAI,IAAM,OACrB7tC,EAAM6tC,EAAI,IAAM,WAChB7Q,EAAOh9B,EAAIvW,OAAO,EAAG,GACrBwzC,EAAOj9B,EAAIvW,OAAO,GACtB8kD,EAAaF,EAAeC,GAC5BE,EAAeh2E,KAAK0xE,gBAAgBnvB,EAAIviD,KAAK0xE,gBAAgBhxD,GAC1Cq1D,GAA2B,SAAbG,GAAuBF,EAAeD,GAA2B,UAAbG,GACnFl2E,KAAK0xE,gBAAgBnkC,GAAKsoC,GAAgB71E,KAAK0xE,gBAAgBnvB,EAAIviD,KAAK2oD,aAAa0mB,KACrFrvE,KAAK0xE,gBAAgB7mC,GAAKgrC,GAAgB71E,KAAK0xE,gBAAgBnvB,EAAIviD,KAAK2oD,aAAa0mB,OAErFrvE,KAAK0xE,gBAAgBnkC,GAAKuoC,GAAiB91E,KAAK0xE,gBAAgBhxD,EAAI1gB,KAAK2oD,aAAa0mB,KACtFrvE,KAAK0xE,gBAAgB7mC,GAAKirC,GAAiB91E,KAAK0xE,gBAAgBhxD,EAAI1gB,KAAK2oD,aAAa0mB,MAGtFrvE,KAAK0xE,gBAAgB1jC,GADV,SAATw2B,IAAoBwR,EAAeD,GAA2B,SAAbG,GAAuBF,EAAeD,GAA2B,UAAbG,IAC5EL,EAAe71E,KAAK0xE,gBAAgBnvB,GAAKuzB,EAAgB91E,KAAK0xE,gBAAgBhxD,IAAM,EAAI1gB,KAAK2oD,aAAa0mB,IACnH,SAAT7K,IAAoBwR,EAAeD,GAA2B,SAAbG,GAAuBF,EAAeD,GAA2B,UAAbG,IACnFL,EAAe71E,KAAK0xE,gBAAgBnvB,GAAKuzB,EAAgB91E,KAAK0xE,gBAAgBhxD,IAAM1gB,KAAK2oD,aAAa0mB,IAEvG,EAG1BrvE,KAAK0xE,gBAAgBztD,GADV,SAATwgD,IAAoBuR,EAAeD,GAA2B,SAAbG,GAAuBF,EAAeD,GAA2B,UAAbG,IAC5EJ,EAAgB91E,KAAK0xE,gBAAgBhxD,GAAKm1D,EAAe71E,KAAK0xE,gBAAgBnvB,IAAM,EAAIviD,KAAK2oD,aAAa0mB,IACnH,SAAT5K,IAAoBuR,EAAeD,GAA2B,SAAbG,GAAuBF,EAAeD,GAA2B,UAAbG,IACnFJ,EAAgB91E,KAAK0xE,gBAAgBhxD,GAAKm1D,EAAe71E,KAAK0xE,gBAAgBnvB,IAAMviD,KAAK2oD,aAAa0mB,IAEvG,CAElC,KAAyD,SAA1CrvE,KAAK2oD,aAAa2f,qBAC3BtoE,KAAK0xE,gBAAgBnkC,GAAKsoC,GAAgB71E,KAAK0xE,gBAAgBnvB,EAAIviD,KAAK2oD,aAAa0mB,KACrFrvE,KAAK0xE,gBAAgB7mC,GAAKirC,GAAiB91E,KAAK0xE,gBAAgBhxD,EAAI1gB,KAAK2oD,aAAa0mB,KACtFrvE,KAAK0xE,gBAAgB1jC,GAAK,EAC1BhuC,KAAK0xE,gBAAgBztD,GAAK,IAE1BjkB,KAAK0xE,gBAAgBnkC,GAAKvtC,KAAK2oD,aAAa0mB,IAC5CrvE,KAAK0xE,gBAAgB7mC,GAAK7qC,KAAK2oD,aAAa0mB,IAC5CrvE,KAAK0xE,gBAAgB1jC,GAAK,EAC1BhuC,KAAK0xE,gBAAgBztD,GAAK,GAE5BjkB,KAAK0xE,gBAAgBz0E,MAAQ,CAAC+C,KAAK0xE,gBAAgBnkC,GAAI,EAAG,EAAG,EAAG,EAAGvtC,KAAK0xE,gBAAgB7mC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG7qC,KAAK0xE,gBAAgB1jC,GAAIhuC,KAAK0xE,gBAAgBztD,GAAI,EAAG,GAOnKjkB,KAAKyvE,aAAazvE,KAAK0xE,gBAAgBz0E,OACvC+C,KAAKqsE,cAAcC,YACnBtsE,KAAKqsE,cAAc/c,KAAK,EAAG,EAAGtvD,KAAK0xE,gBAAgBnvB,EAAGviD,KAAK0xE,gBAAgBhxD,GAC3E1gB,KAAKqsE,cAAcyH,YACnB9zE,KAAKqsE,cAAcM,OACnB3sE,KAAKuzB,YAAYvzB,KAAKglC,eAAe,EACzC,EACE0oC,mBAAmB7qE,UAAU6oB,QAAU,WAIrC,IAAIxjB,EAEJ,IALIlI,KAAK2oD,aAAawmB,aAAenvE,KAAK6uD,cAAcz+B,UACtDpwB,KAAK6uD,cAAcz+B,QAAQqH,UAAY,IAIpCvvB,GADKlI,KAAKqjB,OAASrjB,KAAKqjB,OAAO1iB,OAAS,GAC9B,EAAGuH,GAAK,EAAGA,GAAK,EACzBlI,KAAKi/C,SAAS/2C,IAAMlI,KAAKi/C,SAAS/2C,GAAGwjB,SACvC1rB,KAAKi/C,SAAS/2C,GAAGwjB,UAGrB1rB,KAAKi/C,SAASt+C,OAAS,EACvBX,KAAKywB,WAAW47C,cAAgB,KAChCrsE,KAAK6uD,cAAcx+B,UAAY,KAC/BrwB,KAAK6oE,WAAY,CACrB,EACE6E,mBAAmB7qE,UAAU0wB,YAAc,SAAU+0B,EAAKpR,GACxD,IAAIl3C,KAAKglC,gBAAkBsjB,IAAyC,IAAlCtoD,KAAK2oD,aAAawmB,aAAyBj4B,KAAel3C,KAAK6oE,YAAqB,IAARvgB,EAA9G,CAWA,IAAIpgD,EARJlI,KAAKglC,cAAgBsjB,EACrBtoD,KAAKywB,WAAW+P,SAAW8nB,EAAMtoD,KAAK6uD,cAAcjpB,cACpD5lC,KAAKywB,WAAWgV,SAAW,EAC3BzlC,KAAKywB,WAAW8U,MAAQvlC,KAAK2oD,aAAawmB,aAAej4B,EACzDl3C,KAAKywB,WAAWd,iBAAiBxB,aAAem6B,EAKhD,IAAI1tC,EAAM5a,KAAKqjB,OAAO1iB,OAItB,IAHKX,KAAKojB,gBACRpjB,KAAKktD,YAAY5E,GAEdpgD,EAAI0S,EAAM,EAAG1S,GAAK,EAAGA,GAAK,GACzBlI,KAAKojB,gBAAkBpjB,KAAKi/C,SAAS/2C,KACvClI,KAAKi/C,SAAS/2C,GAAG+lB,aAAaq6B,EAAMtoD,KAAKqjB,OAAOnb,GAAG6d,IAGvD,GAAI/lB,KAAKywB,WAAW8U,KAAM,CAMxB,KALsC,IAAlCvlC,KAAK2oD,aAAawmB,YACpBnvE,KAAKqsE,cAAc0F,UAAU,EAAG,EAAG/xE,KAAK0xE,gBAAgBnvB,EAAGviD,KAAK0xE,gBAAgBhxD,GAEhF1gB,KAAK0sE,OAEFxkE,EAAI0S,EAAM,EAAG1S,GAAK,EAAGA,GAAK,GACzBlI,KAAKojB,gBAAkBpjB,KAAKi/C,SAAS/2C,KACvClI,KAAKi/C,SAAS/2C,GAAGqrB,eAGiB,IAAlCvzB,KAAK2oD,aAAawmB,aACpBnvE,KAAKuyE,SAEb,CAjCA,CAkCA,EACE7E,mBAAmB7qE,UAAUsqD,UAAY,SAAU3lB,GACjD,IAAIyX,EAAWj/C,KAAKi/C,SACpB,IAAIA,EAASzX,IAAgC,KAAxBxnC,KAAKqjB,OAAOmkB,GAAKvjB,GAAtC,CAGA,IAAIhT,EAAUjR,KAAKqtD,WAAWrtD,KAAKqjB,OAAOmkB,GAAMxnC,KAAMA,KAAKywB,YAC3DwuB,EAASzX,GAAOv2B,EAChBA,EAAQ8gB,iBAHZ,CAOA,EACE27C,mBAAmB7qE,UAAUuqD,qBAAuB,WAClD,KAAOptD,KAAKwuD,gBAAgB7tD,QACZX,KAAKwuD,gBAAgBpkD,MAC3ByrD,gBAEd,EACE6X,mBAAmB7qE,UAAU8yB,KAAO,WAClC31B,KAAK6uD,cAAcx+B,UAAU9rB,MAAM2B,QAAU,MACjD,EACEwnE,mBAAmB7qE,UAAU+yB,KAAO,WAClC51B,KAAK6uD,cAAcx+B,UAAU9rB,MAAM2B,QAAU,OACjD,EA8CE4nE,cAAcjrE,UAAUszE,UAAY,WAClC,IAAIC,EAA2B,EAAfp2E,KAAK66B,QACjB3yB,EAAI,EACR,IAAKA,EAAIlI,KAAK66B,QAAS3yB,EAAIkuE,EAAWluE,GAAK,EACzClI,KAAK+tE,MAAM7lE,GAAK,IAAIylE,cAEtB3tE,KAAK66B,QAAUu7C,CACnB,EACEtI,cAAcjrE,UAAUmnC,MAAQ,WAC9BhqC,KAAKguE,QAAU,EACfhuE,KAAKiuE,IAAIjkC,QACThqC,KAAK+tE,MAAM/tE,KAAKguE,SAAS1c,QAAU,CACvC,EACEwc,cAAcjrE,UAAU0vE,QAAU,SAAU8D,GAC1Cr2E,KAAKguE,SAAW,EAChB,IAEI9lE,EAFAouE,EAAiBt2E,KAAK+tE,MAAM/tE,KAAKguE,SACjCp3D,EAAY0/D,EAAe1/D,UAE3BmG,EAAM/c,KAAKiuE,IAAIhxE,MACnB,IAAKiL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB6U,EAAI7U,GAAK0O,EAAU1O,GAErB,GAAImuE,EAAc,CAChBr2E,KAAKkuE,cAAcqE,UACnB,IAAIgE,EAAYv2E,KAAK+tE,MAAM/tE,KAAKguE,QAAU,GAC1ChuE,KAAKsuE,iBAAmBiI,EAAU/sD,UAClCxpB,KAAKwuE,mBAAqB+H,EAAU3I,YACpC5tE,KAAK0uE,iBAAmB6H,EAAUlW,UAClCrgE,KAAK4uE,eAAiB2H,EAAU1I,QAChC7tE,KAAK8uE,gBAAkByH,EAAU95B,SACjCz8C,KAAK+uE,kBAAoBwH,EAAU75B,UACzC,CACI18C,KAAKkuE,cAActgC,aAAah3B,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,IAAKA,EAAU,MAC7Gy/D,IAA2C,IAA3BC,EAAehlB,SAAkBtxD,KAAKouE,iBAAmBkI,EAAehlB,WAC1FtxD,KAAKkuE,cAAcoH,YAAcgB,EAAehlB,QAChDtxD,KAAKouE,eAAiBkI,EAAehlB,SAEvCtxD,KAAKquE,iBAAmBiI,EAAe9sD,UACvCxpB,KAAKuuE,mBAAqB+H,EAAe1I,YACzC5tE,KAAKyuE,iBAAmB6H,EAAejW,UACvCrgE,KAAK2uE,eAAiB2H,EAAezI,QACrC7tE,KAAK6uE,gBAAkByH,EAAe75B,SACtCz8C,KAAKgvE,kBAAoBsH,EAAe55B,UAC5C,EACEoxB,cAAcjrE,UAAU6pE,KAAO,SAAU8J,GACnCA,GACFx2E,KAAKkuE,cAAcxB,OAErB,IAAIzvE,EAAQ+C,KAAKiuE,IAAIhxE,MACjB+C,KAAK66B,SAAW76B,KAAKguE,SACvBhuE,KAAKm2E,YAEP,IACIjuE,EADAuuE,EAAez2E,KAAK+tE,MAAM/tE,KAAKguE,SAEnC,IAAK9lE,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBuuE,EAAa7/D,UAAU1O,GAAKjL,EAAMiL,GAEpClI,KAAKguE,SAAW,EAChB,IAAI0I,EAAW12E,KAAK+tE,MAAM/tE,KAAKguE,SAC/B0I,EAASplB,QAAUmlB,EAAanlB,QAChColB,EAASltD,UAAYitD,EAAajtD,UAClCktD,EAAS9I,YAAc6I,EAAa7I,YACpC8I,EAASrW,UAAYoW,EAAapW,UAClCqW,EAAS7I,QAAU4I,EAAa5I,QAChC6I,EAASj6B,SAAWg6B,EAAah6B,SACjCi6B,EAASh6B,WAAa+5B,EAAa/5B,UACvC,EACEoxB,cAAcjrE,UAAU8zE,WAAa,SAAUz3E,GAC7Cc,KAAK+tE,MAAM/tE,KAAKguE,SAAS1c,QAAUpyD,CACvC,EACE4uE,cAAcjrE,UAAU8yE,WAAa,SAAUz2E,GAC7Cc,KAAKkuE,cAAgBhvE,CACzB,EACE4uE,cAAcjrE,UAAU2mB,UAAY,SAAUtqB,GACxCc,KAAK+tE,MAAM/tE,KAAKguE,SAASxkD,YAActqB,IACzCc,KAAKquE,iBAAmBnvE,EACxBc,KAAK+tE,MAAM/tE,KAAKguE,SAASxkD,UAAYtqB,EAE3C,EACE4uE,cAAcjrE,UAAU+qE,YAAc,SAAU1uE,GAC1Cc,KAAK+tE,MAAM/tE,KAAKguE,SAASJ,cAAgB1uE,IAC3Cc,KAAKuuE,mBAAqBrvE,EAC1Bc,KAAK+tE,MAAM/tE,KAAKguE,SAASJ,YAAc1uE,EAE7C,EACE4uE,cAAcjrE,UAAUw9D,UAAY,SAAUnhE,GACxCc,KAAK+tE,MAAM/tE,KAAKguE,SAAS3N,YAAcnhE,IACzCc,KAAKyuE,iBAAmBvvE,EACxBc,KAAK+tE,MAAM/tE,KAAKguE,SAAS3N,UAAYnhE,EAE3C,EACE4uE,cAAcjrE,UAAUgrE,QAAU,SAAU3uE,GACtCc,KAAK+tE,MAAM/tE,KAAKguE,SAASH,UAAY3uE,IACvCc,KAAK2uE,eAAiBzvE,EACtBc,KAAK+tE,MAAM/tE,KAAKguE,SAASH,QAAU3uE,EAEzC,EACE4uE,cAAcjrE,UAAU45C,SAAW,SAAUv9C,GACvCc,KAAK+tE,MAAM/tE,KAAKguE,SAASvxB,WAAav9C,IACxCc,KAAK6uE,gBAAkB3vE,EACvBc,KAAK+tE,MAAM/tE,KAAKguE,SAASvxB,SAAWv9C,EAE1C,EACE4uE,cAAcjrE,UAAU65C,WAAa,SAAUx9C,GACzCc,KAAK+tE,MAAM/tE,KAAKguE,SAAStxB,aAAex9C,IAC1Cc,KAAKgvE,kBAAoB9vE,EACzBc,KAAK+tE,MAAM/tE,KAAKguE,SAAStxB,WAAax9C,EAE5C,EACE4uE,cAAcjrE,UAAU+T,UAAY,SAAU3Z,GAC5C+C,KAAKmuE,aAAa59B,eAAetzC,GAEjC,IAAIuhE,EAAmBx+D,KAAKiuE,IAE5BjuE,KAAKmuE,aAAan+B,SAASwuB,GAE3BA,EAAiBjuB,eAAevwC,KAAKmuE,aAAalxE,OAClD,IAAI25E,EAAUpY,EAAiBvhE,MAE/B+C,KAAKkuE,cAActgC,aAAagpC,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,IAAKA,EAAQ,IACzG,EACE9I,cAAcjrE,UAAUyuD,QAAU,SAAUnnD,GAC1C,IAAIikE,EAAiBpuE,KAAK+tE,MAAM/tE,KAAKguE,SAAS1c,QAC9C8c,GAAkBjkE,EAAK,EAAI,EAAIA,EAC3BnK,KAAK+tE,MAAM/tE,KAAKguE,SAAS1c,UAAY8c,IACnCpuE,KAAKouE,iBAAmBjkE,IAC1BnK,KAAKkuE,cAAcoH,YAAcnrE,EACjCnK,KAAKouE,eAAiBjkE,GAExBnK,KAAK+tE,MAAM/tE,KAAKguE,SAAS1c,QAAU8c,EAEzC,EACEN,cAAcjrE,UAAUkR,KAAO,SAAUwhE,GACnCv1E,KAAKsuE,mBAAqBtuE,KAAKquE,mBACjCruE,KAAKsuE,iBAAmBtuE,KAAKquE,iBAC7BruE,KAAKkuE,cAAc1kD,UAAYxpB,KAAKsuE,kBAEtCtuE,KAAKkuE,cAAcn6D,KAAKwhE,EAC5B,EACEzH,cAAcjrE,UAAU4mB,SAAW,SAAUzqB,EAAGwK,EAAG+4C,EAAG7hC,GAChD1gB,KAAKsuE,mBAAqBtuE,KAAKquE,mBACjCruE,KAAKsuE,iBAAmBtuE,KAAKquE,iBAC7BruE,KAAKkuE,cAAc1kD,UAAYxpB,KAAKsuE,kBAEtCtuE,KAAKkuE,cAAczkD,SAASzqB,EAAGwK,EAAG+4C,EAAG7hC,EACzC,EACEotD,cAAcjrE,UAAUuqE,OAAS,WAC3BptE,KAAKwuE,qBAAuBxuE,KAAKuuE,qBACnCvuE,KAAKwuE,mBAAqBxuE,KAAKuuE,mBAC/BvuE,KAAKkuE,cAAcN,YAAc5tE,KAAKwuE,oBAEpCxuE,KAAK0uE,mBAAqB1uE,KAAKyuE,mBACjCzuE,KAAK0uE,iBAAmB1uE,KAAKyuE,iBAC7BzuE,KAAKkuE,cAAc7N,UAAYrgE,KAAK0uE,kBAElC1uE,KAAK4uE,iBAAmB5uE,KAAK2uE,iBAC/B3uE,KAAK4uE,eAAiB5uE,KAAK2uE,eAC3B3uE,KAAKkuE,cAAcL,QAAU7tE,KAAK4uE,gBAEhC5uE,KAAK8uE,kBAAoB9uE,KAAK6uE,kBAChC7uE,KAAK8uE,gBAAkB9uE,KAAK6uE,gBAC5B7uE,KAAKkuE,cAAczxB,SAAWz8C,KAAK8uE,iBAEjC9uE,KAAK+uE,oBAAsB/uE,KAAKgvE,oBAClChvE,KAAK+uE,kBAAoB/uE,KAAKgvE,kBAC9BhvE,KAAKkuE,cAAcxxB,WAAa18C,KAAK+uE,mBAEvC/uE,KAAKkuE,cAAcd,QACvB,EAYE5yD,gBAAgB,CAACkzD,mBAAoB/F,aAAcyE,eAAgB6C,eACnEA,cAAcpsE,UAAUkzD,mBAAqB,WAC3C,IAQI7tD,EARAohB,EAAMtpB,KAAKqsE,cAUf,IATA/iD,EAAIgjD,YACJhjD,EAAIijD,OAAO,EAAG,GACdjjD,EAAIkjD,OAAOxsE,KAAK4S,KAAK2vC,EAAG,GACxBj5B,EAAIkjD,OAAOxsE,KAAK4S,KAAK2vC,EAAGviD,KAAK4S,KAAK8N,GAClC4I,EAAIkjD,OAAO,EAAGxsE,KAAK4S,KAAK8N,GACxB4I,EAAIkjD,OAAO,EAAG,GACdljD,EAAIqjD,OAGCzkE,EADKlI,KAAKqjB,OAAO1iB,OACP,EAAGuH,GAAK,EAAGA,GAAK,GACzBlI,KAAKojB,gBAAkBpjB,KAAKi/C,SAAS/2C,KACvClI,KAAKi/C,SAAS/2C,GAAGqrB,aAGzB,EACE07C,cAAcpsE,UAAU6oB,QAAU,WAChC,IAAIxjB,EAEJ,IAAKA,EADKlI,KAAKqjB,OAAO1iB,OACP,EAAGuH,GAAK,EAAGA,GAAK,EACzBlI,KAAKi/C,SAAS/2C,IAChBlI,KAAKi/C,SAAS/2C,GAAGwjB,UAGrB1rB,KAAKqjB,OAAS,KACdrjB,KAAKi/C,SAAW,IACpB,EACEgwB,cAAcpsE,UAAU2qD,WAAa,SAAU56C,GAC7C,OAAO,IAAIq8D,cAAcr8D,EAAM5S,KAAKywB,WAAYzwB,KACpD,EA+CEwa,gBAAgB,CAACkzD,oBAAqBwB,gBACtCA,eAAersE,UAAU2qD,WAAa,SAAU56C,GAC9C,OAAO,IAAIq8D,cAAcr8D,EAAM5S,KAAKywB,WAAYzwB,KACpD,EAGEowE,aAAavtE,UAAY,CACvBg0E,eAAgB,WAA0B,EAC1C9iB,oBAAqB,WACnB/zD,KAAKqsD,YAAc9xC,UAAUva,KAAK4S,KAAKkkE,IAAM,OACzC92E,KAAK4S,KAAKgR,SACZ5jB,KAAK+nE,WAAa/lD,SAAS,OAC3BhiB,KAAKssD,aAAetqC,SAAS,KAC7BhiB,KAAKwwD,cAAgBxwD,KAAKssD,aAC1BtsD,KAAK+nE,WAAW93D,YAAYjQ,KAAKssD,cACjCtsD,KAAKqsD,YAAYp8C,YAAYjQ,KAAK+nE,aAElC/nE,KAAKssD,aAAetsD,KAAKqsD,YAE3BttC,SAAS/e,KAAKqsD,YACpB,EACI2H,wBAAyB,WACvBh0D,KAAKwxD,yBAA2B,IAAIwa,UAAUhsE,MAC9CA,KAAKk0D,mBAAqBl0D,KAAKqsD,YAC/BrsD,KAAKwwD,cAAgBxwD,KAAKssD,aACtBtsD,KAAK4S,KAAK6hD,IACZz0D,KAAKssD,aAAa90B,aAAa,KAAMx3B,KAAK4S,KAAK6hD,IAE7Cz0D,KAAK4S,KAAKgU,IACZ5mB,KAAKssD,aAAa90B,aAAa,QAASx3B,KAAK4S,KAAKgU,IAE/B,IAAjB5mB,KAAK4S,KAAKw5C,IACZpsD,KAAKksD,cAEb,EACI4I,cAAe,WACb,IAAIiiB,EAA0B/2E,KAAKk0D,mBAAqBl0D,KAAKk0D,mBAAmB3vD,MAAQ,CAAA,EACxF,GAAIvE,KAAKyoD,eAAeiI,QAAS,CAC/B,IAAIsmB,EAAch3E,KAAKyoD,eAAexR,IAAItF,QAC1ColC,EAAwBngE,UAAYogE,EACpCD,EAAwBE,gBAAkBD,CAClD,CACUh3E,KAAKyoD,eAAemI,SACtBmmB,EAAwBzlB,QAAUtxD,KAAKyoD,eAAeC,MAAMrrC,EAAEnT,EAEtE,EACIqpB,YAAa,WAGPvzB,KAAK4S,KAAK8hD,IAAM10D,KAAK+nD,SAGzB/nD,KAAKgxD,kBACLhxD,KAAK6oD,mBACL7oD,KAAK80D,gBACL90D,KAAK+1D,qBACD/1D,KAAK4lC,gBACP5lC,KAAK4lC,eAAgB,GAE7B,EACIla,QAAS,WACP1rB,KAAKssD,aAAe,KACpBtsD,KAAKk0D,mBAAqB,KACtBl0D,KAAKi0D,eACPj0D,KAAKi0D,aAAe,MAElBj0D,KAAKwrD,cACPxrD,KAAKwrD,YAAY9/B,UACjB1rB,KAAKwrD,YAAc,KAE3B,EACIwJ,2BAA4B,WAC1Bh1D,KAAKwrD,YAAc,IAAI0D,YAAYlvD,KAAK4S,KAAM5S,KAAMA,KAAKywB,WAC/D,EACIymD,WAAY,WAAsB,EAClCvhB,SAAU,WAAoB,GAEhCya,aAAavtE,UAAU+pD,eAAiB2G,eAAe1wD,UAAU+pD,eACjEwjB,aAAavtE,UAAUkyD,mBAAqBqb,aAAavtE,UAAU6oB,QACnE0kD,aAAavtE,UAAUqrD,sBAAwBnD,aAAaloD,UAAUqrD,sBAKtE1zC,gBAAgB,CAACyvC,YAAagF,iBAAkBmhB,aAAc5c,iBAAkBtJ,aAAcuJ,sBAAuB4c,eACrHA,cAAcxtE,UAAUizD,cAAgB,WACtC,IAAIxG,EACAtvD,KAAK4S,KAAKgR,UACZ0rC,EAAOttC,SAAS,SACXwV,aAAa,QAASx3B,KAAK4S,KAAKipD,IACrCvM,EAAK93B,aAAa,SAAUx3B,KAAK4S,KAAK6vB,IACtC6sB,EAAK93B,aAAa,OAAQx3B,KAAK4S,KAAKk0C,IACpC9mD,KAAK+nE,WAAWvwC,aAAa,QAASx3B,KAAK4S,KAAKipD,IAChD77D,KAAK+nE,WAAWvwC,aAAa,SAAUx3B,KAAK4S,KAAK6vB,OAEjD6sB,EAAO/0C,UAAU,QACZhW,MAAMW,MAAQlF,KAAK4S,KAAKipD,GAAK,KAClCvM,EAAK/qD,MAAMY,OAASnF,KAAK4S,KAAK6vB,GAAK,KACnC6sB,EAAK/qD,MAAME,gBAAkBzE,KAAK4S,KAAKk0C,IAEzC9mD,KAAKssD,aAAar8C,YAAYq/C,EAClC,EA6BE90C,gBAAgB,CAACyvC,YAAagF,iBAAkBohB,cAAe5U,gBAAiB2U,aAAc5c,iBAAkBtJ,aAAcvC,mBAAoB2oB,eAClJA,cAAcztE,UAAUs0E,kBAAoB7G,cAAcztE,UAAUkzD,mBACpEua,cAAcztE,UAAUizD,cAAgB,WACtC,IAAIpW,EAEJ,GADA1/C,KAAKqsD,YAAY9nD,MAAMwI,SAAW,EAC9B/M,KAAK4S,KAAKgR,QACZ5jB,KAAKssD,aAAar8C,YAAYjQ,KAAKuwE,iBACnC7wB,EAAO1/C,KAAK+nE,eACP,CACLroB,EAAO19B,SAAS,OAChB,IAAIwgC,EAAOxiD,KAAKukB,KAAK3R,KAAO5S,KAAKukB,KAAK3R,KAAO5S,KAAKywB,WAAWq+B,SAC7DpP,EAAKloB,aAAa,QAASgrB,EAAKD,GAChC7C,EAAKloB,aAAa,SAAUgrB,EAAK9hC,GACjCg/B,EAAKzvC,YAAYjQ,KAAKuwE,iBACtBvwE,KAAKssD,aAAar8C,YAAYyvC,EACpC,CACI1/C,KAAK09D,aAAa19D,KAAK8rD,WAAY9rD,KAAK+rD,UAAW/rD,KAAK04D,aAAc14D,KAAKuwE,gBAAiB,EAAG,IAAI,GACnGvwE,KAAK29D,qBACL39D,KAAKo3E,UAAY13B,CACrB,EACE4wB,cAAcztE,UAAUw0E,oBAAsB,SAAUvgB,EAAcn6B,GACpE,IAAIz0B,EACA0S,EAAMk8C,EAAan2D,OACvB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBy0B,EAAQm6B,EAAa5uD,GAAGu4C,OAAOv2C,EAAE+mC,kBAAkBtU,EAAM,GAAIA,EAAM,GAAI,GAEzE,OAAOA,CACX,EACE2zC,cAAcztE,UAAUy0E,0BAA4B,SAAUl+D,EAAM2/B,GAClE,IAEI7wC,EAEAqvE,EACAC,EACAC,EACAC,EAPAjvC,EAAQrvB,EAAKqpB,GAAGv4B,EAChB4sD,EAAe19C,EAAK09C,aAEpBl8C,EAAM6tB,EAAM5N,QAKhB,KAAIjgB,GAAO,GAAX,CAGA,IAAK1S,EAAI,EAAGA,EAAI0S,EAAM,EAAG1S,GAAK,EAC5BqvE,EAASv3E,KAAKq3E,oBAAoBvgB,EAAcruB,EAAMv+B,EAAEhC,IACxDsvE,EAASx3E,KAAKq3E,oBAAoBvgB,EAAcruB,EAAMprB,EAAEnV,IACxDuvE,EAAaz3E,KAAKq3E,oBAAoBvgB,EAAcruB,EAAMvgC,EAAEA,EAAI,IAChEwvE,EAAa13E,KAAKq3E,oBAAoBvgB,EAAcruB,EAAMv+B,EAAEhC,EAAI,IAChElI,KAAK23E,YAAYJ,EAAQC,EAAQC,EAAYC,EAAY3+B,GAEvDtQ,EAAMjiB,IACR+wD,EAASv3E,KAAKq3E,oBAAoBvgB,EAAcruB,EAAMv+B,EAAEhC,IACxDsvE,EAASx3E,KAAKq3E,oBAAoBvgB,EAAcruB,EAAMprB,EAAEnV,IACxDuvE,EAAaz3E,KAAKq3E,oBAAoBvgB,EAAcruB,EAAMvgC,EAAE,IAC5DwvE,EAAa13E,KAAKq3E,oBAAoBvgB,EAAcruB,EAAMv+B,EAAE,IAC5DlK,KAAK23E,YAAYJ,EAAQC,EAAQC,EAAYC,EAAY3+B,GAb/D,CAeA,EACEu3B,cAAcztE,UAAU80E,YAAc,SAAUJ,EAAQC,EAAQC,EAAYC,EAAY3+B,GACtF/4C,KAAK43E,iBAAiBL,EAAQC,EAAQC,EAAYC,GAClD,IAAIh2B,EAAS1hD,KAAK63E,iBAClB9+B,EAAY/5C,EAAImf,MAAMujC,EAAOj8C,KAAMszC,EAAY/5C,GAC/C+5C,EAAY++B,KAAO75D,MAAMyjC,EAAO/7C,MAAOozC,EAAY++B,MACnD/+B,EAAYvvC,EAAI2U,MAAMujC,EAAOr8C,IAAK0zC,EAAYvvC,GAC9CuvC,EAAYg/B,KAAO95D,MAAMyjC,EAAOn8C,OAAQwzC,EAAYg/B,KACxD,EACEzH,cAAcztE,UAAUg1E,iBAAmB,CACzCpyE,KAAM,EACNE,MAAO,EACPN,IAAK,EACLE,OAAQ,GAEV+qE,cAAcztE,UAAUm1E,gBAAkB,CACxCh5E,EAAG,EACH84E,KAAM,EACNtuE,EAAG,EACHuuE,KAAM,EACN7yE,MAAO,EACPC,OAAQ,GAEVmrE,cAAcztE,UAAU+0E,iBAAmB,SAAUttC,EAAIC,EAAIyE,EAAIoJ,GAE/D,IADA,IACSnyB,EAAG5e,EAAGmf,EAAGxe,EAAGiwE,EAAM15C,EAAIsa,EAD3B6I,EAAS,CAAC,CAACpX,EAAG,GAAI8N,EAAG,IAAK,CAAC9N,EAAG,GAAI8N,EAAG,KACNlwC,EAAI,EAAGA,EAAI,IAAKA,EAEjDb,EAAI,EAAIijC,EAAGpiC,GAAK,GAAKqiC,EAAGriC,GAAK,EAAI8mC,EAAG9mC,GACpC+d,GAAI,EAAKqkB,EAAGpiC,GAAK,EAAIqiC,EAAGriC,GAAK,EAAI8mC,EAAG9mC,GAAK,EAAIkwC,EAAGlwC,GAChDse,EAAI,EAAI+jB,EAAGriC,GAAK,EAAIoiC,EAAGpiC,GACvBb,GAAK,EAELmf,GAAK,EAEK,IAHVP,GAAK,IAGgB,IAAN5e,IAEE,IAAN4e,GACTje,GAAKwe,EAAInf,GACD,GAAKW,EAAI,GACf05C,EAAOx5C,GAAGmC,KAAKrK,KAAKk4E,WAAWlwE,EAAGsiC,EAAIC,EAAIyE,EAAIoJ,EAAIlwC,KAGpD+vE,EAAO5wE,EAAIA,EAAI,EAAImf,EAAIP,IACX,KACVsY,IAAOl3B,EAAIwW,OAAOo6D,KAAU,EAAIhyD,IACvB,GAAKsY,EAAK,GAAGmjB,EAAOx5C,GAAGmC,KAAKrK,KAAKk4E,WAAW35C,EAAI+L,EAAIC,EAAIyE,EAAIoJ,EAAIlwC,KACzE2wC,IAAOxxC,EAAIwW,OAAOo6D,KAAU,EAAIhyD,IACvB,GAAK4yB,EAAK,GAAG6I,EAAOx5C,GAAGmC,KAAKrK,KAAKk4E,WAAWr/B,EAAIvO,EAAIC,EAAIyE,EAAIoJ,EAAIlwC,MAI/ElI,KAAK63E,iBAAiBpyE,KAAO0Y,MAAM9V,MAAM,KAAMq5C,EAAO,IACtD1hD,KAAK63E,iBAAiBxyE,IAAM8Y,MAAM9V,MAAM,KAAMq5C,EAAO,IACrD1hD,KAAK63E,iBAAiBlyE,MAAQsY,MAAM5V,MAAM,KAAMq5C,EAAO,IACvD1hD,KAAK63E,iBAAiBtyE,OAAS0Y,MAAM5V,MAAM,KAAMq5C,EAAO,GAC5D,EACE4uB,cAAcztE,UAAUq1E,WAAa,SAAUlwE,EAAGsiC,EAAIC,EAAIyE,EAAIoJ,EAAIlwC,GAChE,OAAOyV,MAAM,EAAI3V,EAAG,GAAKsiC,EAAGpiC,GAAK,EAAIyV,MAAM,EAAI3V,EAAG,GAAKA,EAAIuiC,EAAGriC,GAAK,GAAK,EAAIF,GAAK2V,MAAM3V,EAAG,GAAKgnC,EAAG9mC,GAAKyV,MAAM3V,EAAG,GAAKowC,EAAGlwC,EAC5H,EACEooE,cAAcztE,UAAUs1E,qBAAuB,SAAUpsB,EAAWhT,GAClE,IAAI7wC,EACA0S,EAAMmxC,EAAUprD,OACpB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACpB6jD,EAAU7jD,IAAM6jD,EAAU7jD,GAAGu6B,GAC/BziC,KAAKs3E,0BAA0BvrB,EAAU7jD,GAAI6wC,GACpCgT,EAAU7jD,IAAM6jD,EAAU7jD,GAAG4c,GACtC9kB,KAAKm4E,qBAAqBpsB,EAAU7jD,GAAG4c,GAAIi0B,GAClCgT,EAAU7jD,IAAM6jD,EAAU7jD,GAAG3D,OAASwnD,EAAU7jD,GAAGq6C,GAC5DviD,KAAKo4E,wBAAwBrsB,EAAU7jD,GAAGq6C,EAAGxJ,EAGrD,EACEu3B,cAAcztE,UAAUu1E,wBAA0B,SAAUC,EAAet/B,GACzE,IAAI7zC,EAAQ,EACZ,GAAImzE,EAAcj3C,UAAW,CAC3B,IAAK,IAAIl5B,EAAI,EAAGA,EAAImwE,EAAcj3C,UAAUzgC,OAAQuH,GAAK,EAAG,CAC1D,IAAIowE,EAAMD,EAAcj3C,UAAUl5B,GAAGD,EACjCqwE,EAAMpzE,IACRA,EAAQozE,EAElB,CACMpzE,GAASmzE,EAAc/yC,IAC7B,MACMpgC,EAAQmzE,EAAcnuE,EAAImuE,EAAc/yC,KAE1CyT,EAAY/5C,GAAKkG,EACjB6zC,EAAY++B,MAAQ5yE,EACpB6zC,EAAYvvC,GAAKtE,EACjB6zC,EAAYg/B,MAAQ7yE,CACxB,EACEorE,cAAcztE,UAAU01E,mBAAqB,SAAUz/B,GACrD,OAAO94C,KAAKwwE,YAAYxxE,GAAK85C,EAAI95C,GAAKgB,KAAKwwE,YAAYhnE,GAAKsvC,EAAItvC,GAAKxJ,KAAKwwE,YAAYtrE,MAAQlF,KAAKwwE,YAAYxxE,GAAK85C,EAAI95C,EAAI85C,EAAI5zC,OAASlF,KAAKwwE,YAAYrrE,OAASnF,KAAKwwE,YAAYhnE,GAAKsvC,EAAItvC,EAAIsvC,EAAI3zC,MACzM,EACEmrE,cAAcztE,UAAUkzD,mBAAqB,WAE3C,GADA/1D,KAAKm3E,qBACAn3E,KAAK+nD,SAAW/nD,KAAK4lC,eAAiB5lC,KAAKulC,MAAO,CACrD,IAAIyyC,EAAkBh4E,KAAKg4E,gBACvB95D,EAAM,OASV,GARA85D,EAAgBh5E,EAAIkf,EACpB85D,EAAgBF,MAAQ55D,EACxB85D,EAAgBxuE,EAAI0U,EACpB85D,EAAgBD,MAAQ75D,EACxBle,KAAKm4E,qBAAqBn4E,KAAK+rD,UAAWisB,GAC1CA,EAAgB9yE,MAAQ8yE,EAAgBF,KAAOE,EAAgBh5E,EAAI,EAAIg5E,EAAgBF,KAAOE,EAAgBh5E,EAC9Gg5E,EAAgB7yE,OAAS6yE,EAAgBD,KAAOC,EAAgBxuE,EAAI,EAAIwuE,EAAgBD,KAAOC,EAAgBxuE,EAE3GxJ,KAAKu4E,mBAAmBP,GAC1B,OAEF,IAAIQ,GAAU,EAWd,GAVIx4E,KAAKwwE,YAAYjuB,IAAMy1B,EAAgB9yE,QACzClF,KAAKwwE,YAAYjuB,EAAIy1B,EAAgB9yE,MACrClF,KAAKo3E,UAAU5/C,aAAa,QAASwgD,EAAgB9yE,OACrDszE,GAAU,GAERx4E,KAAKwwE,YAAY9vD,IAAMs3D,EAAgB7yE,SACzCnF,KAAKwwE,YAAY9vD,EAAIs3D,EAAgB7yE,OACrCnF,KAAKo3E,UAAU5/C,aAAa,SAAUwgD,EAAgB7yE,QACtDqzE,GAAU,GAERA,GAAWx4E,KAAKwwE,YAAYxxE,IAAMg5E,EAAgBh5E,GAAKgB,KAAKwwE,YAAYhnE,IAAMwuE,EAAgBxuE,EAAG,CACnGxJ,KAAKwwE,YAAYjuB,EAAIy1B,EAAgB9yE,MACrClF,KAAKwwE,YAAY9vD,EAAIs3D,EAAgB7yE,OACrCnF,KAAKwwE,YAAYxxE,EAAIg5E,EAAgBh5E,EACrCgB,KAAKwwE,YAAYhnE,EAAIwuE,EAAgBxuE,EACrCxJ,KAAKo3E,UAAU5/C,aAAa,UAAWx3B,KAAKwwE,YAAYxxE,EAAI,IAAMgB,KAAKwwE,YAAYhnE,EAAI,IAAMxJ,KAAKwwE,YAAYjuB,EAAI,IAAMviD,KAAKwwE,YAAY9vD,GACzI,IAAI+3D,EAAaz4E,KAAKo3E,UAAU7yE,MAC5Bm0E,EAAiB,aAAe14E,KAAKwwE,YAAYxxE,EAAI,MAAQgB,KAAKwwE,YAAYhnE,EAAI,MACtFivE,EAAW7hE,UAAY8hE,EACvBD,EAAWxB,gBAAkByB,CACrC,CACA,CACA,EAeEl+D,gBAAgB,CAACyvC,YAAagF,iBAAkBmhB,aAAc5c,iBAAkBtJ,aAAcuJ,qBAAsB4Q,cAAeoM,cACnIA,aAAa5tE,UAAUizD,cAAgB,WAErC,GADA91D,KAAK2wE,SAAW3wE,KAAKirD,aACjBjrD,KAAK2wE,SAAU,CACjB3wE,KAAK0jE,WAAa,MAClB1jE,KAAK24E,MAAQ34E,KAAKukB,KAAK3R,KAAK2vC,EAC5BviD,KAAK44E,MAAQ54E,KAAKukB,KAAK3R,KAAK8N,EAC5B1gB,KAAK+nE,WAAWvwC,aAAa,QAASx3B,KAAK24E,OAC3C34E,KAAK+nE,WAAWvwC,aAAa,SAAUx3B,KAAK44E,OAC5C,IAAI9uE,EAAIkY,SAAS,KACjBhiB,KAAKwwD,cAAcvgD,YAAYnG,GAC/B9J,KAAKg2D,UAAYlsD,CACvB,MACM9J,KAAK0jE,WAAa,OAClB1jE,KAAKg2D,UAAYh2D,KAAKssD,aAExBtsD,KAAK61D,gBACT,EACE4a,aAAa5tE,UAAUukE,aAAe,WACpC,IAAI7hD,EAAevlB,KAAK6iE,aAAazG,YACrCp8D,KAAKmkE,gBAAkBhnD,iBAAiBoI,EAAasoB,EAAItoB,EAAasoB,EAAEltC,OAAS,GACjF,IAAIk4E,EAAiB74E,KAAKg2D,UAAUzxD,MAChCu0E,EAAYvzD,EAAau2C,GAAK97D,KAAKgnE,WAAWzhD,EAAau2C,IAAM,gBACrE+c,EAAe9kE,KAAO+kE,EACtBD,EAAezsE,MAAQ0sE,EACnBvzD,EAAauhC,KACf+xB,EAAezL,OAASptE,KAAKgnE,WAAWzhD,EAAauhC,IACrD+xB,EAAeE,YAAcxzD,EAAas2C,GAAK,MAEjD,IAcI3zD,EACA0S,EAfA8iC,EAAW19C,KAAKywB,WAAWmB,YAAYq1B,cAAc1hC,EAAahc,GACtE,IAAKvJ,KAAKywB,WAAWmB,YAAYhM,MAG/B,GAFAizD,EAAe9rE,SAAWwY,EAAa03C,UAAY,KACnD4b,EAAehiE,WAAa0O,EAAa03C,UAAY,KACjDvf,EAASqG,OACX/jD,KAAKg2D,UAAUjkD,UAAY2rC,EAASqG,WAC/B,CACL80B,EAAejrE,WAAa8vC,EAASmG,QACrC,IAAIhG,EAAUt4B,EAAas4B,QACvBD,EAASr4B,EAAaq4B,OAC1Bi7B,EAAe5rE,UAAY2wC,EAC3Bi7B,EAAe7rE,WAAa6wC,CACpC,CAII,IAEI8rB,EACAqP,EACAC,EAJAjZ,EAAUz6C,EAAasoB,EAC3BjzB,EAAMolD,EAAQr/D,OAId,IACI0jB,EADA2gD,EAAehlE,KAAK8xD,QAEpB8U,EAAW,GACXv+B,EAAM,EACV,IAAKngC,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAAG,CAqC3B,GApCIlI,KAAKywB,WAAWmB,YAAYhM,OACzB5lB,KAAK0wE,UAAUroC,GAMlBshC,EAAQ3pE,KAAK0wE,UAAUroC,KALvBshC,EAAQ3nD,SAAS,SACXwV,aAAa,iBAAkBm/B,YAAY,IACjDgT,EAAMnyC,aAAa,kBAAmBo/B,aAAa,IACnD+S,EAAMnyC,aAAa,oBAAqB,MAIrCx3B,KAAK2wE,WACJ3wE,KAAKunE,UAAUl/B,GAEjB4wC,GADAD,EAAUh5E,KAAKunE,UAAUl/B,IACT5nC,SAAS,KAEzBu4E,EAAUz+D,UAAU,QACZhW,MAAMsS,WAAa,GAC3BoiE,EAAQj3D,SAAS,QACX/R,YAAY05D,GAClB5qD,SAASi6D,MAGHh5E,KAAK2wE,SAYfhH,EAAQ3pE,KAAK0wE,UAAUroC,GAAOroC,KAAK0wE,UAAUroC,GAAOrmB,SAAS,QAXzDhiB,KAAKunE,UAAUl/B,IACjB2wC,EAAUh5E,KAAKunE,UAAUl/B,GACzBshC,EAAQ3pE,KAAK0wE,UAAUroC,KAGvBtpB,SADAi6D,EAAUz+D,UAAU,SAGpBwE,SADA4qD,EAAQpvD,UAAU,SAElBy+D,EAAQ/oE,YAAY05D,IAMpB3pE,KAAKywB,WAAWmB,YAAYhM,MAAO,CACrC,IACIkY,EADAjY,EAAW7lB,KAAKywB,WAAWmB,YAAYm1B,YAAYxhC,EAAa23C,UAAUh1D,GAAIw1C,EAASE,OAAQ59C,KAAKywB,WAAWmB,YAAYq1B,cAAc1hC,EAAahc,GAAGs6C,SAc7J,GAXE/lB,EADEjY,EACUA,EAASjT,KAET,KAEdoyD,EAAah7B,QACTlM,GAAaA,EAAUzZ,QAAUyZ,EAAUzZ,OAAO1jB,SACpD0jB,EAASyZ,EAAUzZ,OAAO,GAAGS,GAC7BkgD,EAAat3B,MAAMnoB,EAAa03C,UAAY,IAAK13C,EAAa03C,UAAY,KAC1E2J,EAAW5mE,KAAK2mE,gBAAgB3B,EAAc3gD,GAC9CslD,EAAMnyC,aAAa,IAAKovC,IAErB5mE,KAAK2wE,SAoBR3wE,KAAKg2D,UAAU/lD,YAAY05D,OApBT,CAElB,GADA3pE,KAAKg2D,UAAU/lD,YAAY+oE,GACvBl7C,GAAaA,EAAUzZ,OAAQ,CAEjCzU,SAAStG,KAAK2G,YAAYgpE,GAC1B,IAAIlgC,EAAckgC,EAAMtuD,UACxBsuD,EAAMzhD,aAAa,QAASuhB,EAAY7zC,MAAQ,GAChD+zE,EAAMzhD,aAAa,SAAUuhB,EAAY5zC,OAAS,GAClD8zE,EAAMzhD,aAAa,UAAWuhB,EAAY/5C,EAAI,EAAI,KAAO+5C,EAAYvvC,EAAI,GAAK,KAAOuvC,EAAY7zC,MAAQ,GAAK,KAAO6zC,EAAY5zC,OAAS,IAC1I,IAAI+zE,EAAaD,EAAM10E,MACnB40E,EAAmB,cAAgBpgC,EAAY/5C,EAAI,GAAK,OAAS+5C,EAAYvvC,EAAI,GAAK,MAC1F0vE,EAAWtiE,UAAYuiE,EACvBD,EAAWjC,gBAAkBkC,EAC7BnZ,EAAQ93D,GAAG80D,QAAUjkB,EAAYvvC,EAAI,CACjD,MACYyvE,EAAMzhD,aAAa,QAAS,GAC5ByhD,EAAMzhD,aAAa,SAAU,GAE/BwhD,EAAQ/oE,YAAYgpE,EAC9B,CAGA,MAGQ,GAFAtP,EAAM7lB,YAAckc,EAAQ93D,GAAGuW,IAC/BkrD,EAAM39C,eAAe,uCAAwC,YAAa,YACrEhsB,KAAK2wE,SAQR3wE,KAAKg2D,UAAU/lD,YAAY05D,OART,CAClB3pE,KAAKg2D,UAAU/lD,YAAY+oE,GAE3B,IAAII,EAASzP,EAAMplE,MACf80E,EAAmB,kBAAoB9zD,EAAa03C,UAAY,IAAM,QAC1Emc,EAAOxiE,UAAYyiE,EACnBD,EAAOnC,gBAAkBoC,CACnC,CAKWr5E,KAAK2wE,SAGR3wE,KAAKunE,UAAUl/B,GAAOshC,EAFtB3pE,KAAKunE,UAAUl/B,GAAO2wC,EAIxBh5E,KAAKunE,UAAUl/B,GAAK9jC,MAAM2B,QAAU,QACpClG,KAAK0wE,UAAUroC,GAAOshC,EACtBthC,GAAO,CACb,CACI,KAAOA,EAAMroC,KAAKunE,UAAU5mE,QAC1BX,KAAKunE,UAAUl/B,GAAK9jC,MAAM2B,QAAU,OACpCmiC,GAAO,CAEb,EACEooC,aAAa5tE,UAAUkzD,mBAAqB,WAE1C,IAAIujB,EACJ,GAFAt5E,KAAKmnE,eAEDnnE,KAAK4S,KAAKs2D,YAAa,CACzB,IAAKlpE,KAAK4lC,gBAAkB5lC,KAAKokE,mBAC/B,OAEF,GAAIpkE,KAAK2wE,UAAY3wE,KAAKyoD,eAAeiI,QAAS,CAEhD1wD,KAAK+nE,WAAWvwC,aAAa,WAAYx3B,KAAKyoD,eAAeC,MAAMlhD,EAAE0C,EAAE,GAAK,KAAOlK,KAAKyoD,eAAeC,MAAMlhD,EAAE0C,EAAE,GAAK,IAAMlK,KAAK24E,MAAQ,IAAM34E,KAAK44E,OACpJU,EAAWt5E,KAAK+nE,WAAWxjE,MAC3B,IAAIg1E,EAAc,cAAgBv5E,KAAKyoD,eAAeC,MAAMlhD,EAAE0C,EAAE,GAAK,OAASlK,KAAKyoD,eAAeC,MAAMlhD,EAAE0C,EAAE,GAAK,MACjHovE,EAAS1iE,UAAY2iE,EACrBD,EAASrC,gBAAkBsC,CACnC,CACA,CAEI,GADAv5E,KAAK0mE,aAAanC,YAAYvkE,KAAK6iE,aAAazG,YAAap8D,KAAKokE,oBAC7DpkE,KAAKokE,oBAAuBpkE,KAAK0mE,aAAatC,mBAAnD,CAGA,IAAIl8D,EACA0S,EAKA0vD,EACAC,EACAiP,EANA13B,EAAQ,EACRqiB,EAAkBnkE,KAAK0mE,aAAavC,gBACpCnE,EAAUhgE,KAAK6iE,aAAazG,YAAYvuB,EAK5C,IAJAjzB,EAAMolD,EAAQr/D,OAITuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACpB83D,EAAQ93D,GAAGC,EACb25C,GAAS,GAETyoB,EAAWvqE,KAAKunE,UAAUr/D,GAC1BsxE,EAAWx5E,KAAK0wE,UAAUxoE,GAC1BoiE,EAAiBnG,EAAgBriB,GACjCA,GAAS,EACLwoB,EAAe/kC,KAAKuI,IACjB9tC,KAAK2wE,SAIRpG,EAAS/yC,aAAa,YAAa8yC,EAAex8B,IAHlDy8B,EAAShmE,MAAM0yE,gBAAkB3M,EAAex8B,EAChDy8B,EAAShmE,MAAMqS,UAAY0zD,EAAex8B,IAM9Cy8B,EAAShmE,MAAM+sD,QAAUgZ,EAAejtD,EACpCitD,EAAezO,IAAMyO,EAAe/kC,KAAKs2B,IAC3C2d,EAAShiD,aAAa,eAAgB8yC,EAAezO,IAEnDyO,EAAexjB,IAAMwjB,EAAe/kC,KAAKuhB,IAC3C0yB,EAAShiD,aAAa,SAAU8yC,EAAexjB,IAE7CwjB,EAAexO,IAAMwO,EAAe/kC,KAAKu2B,KAC3C0d,EAAShiD,aAAa,OAAQ8yC,EAAexO,IAC7C0d,EAASj1E,MAAM6H,MAAQk+D,EAAexO,KAI5C,GAAI97D,KAAKg2D,UAAUrrC,UAAY3qB,KAAK+nD,SAAW/nD,KAAK4lC,eAAiB5lC,KAAKulC,MAAO,CAC/E,IAAIwT,EAAc/4C,KAAKg2D,UAAUrrC,UAUjC,GATI3qB,KAAKwwE,YAAYjuB,IAAMxJ,EAAY7zC,QACrClF,KAAKwwE,YAAYjuB,EAAIxJ,EAAY7zC,MACjClF,KAAK+nE,WAAWvwC,aAAa,QAASuhB,EAAY7zC,QAEhDlF,KAAKwwE,YAAY9vD,IAAMq4B,EAAY5zC,SACrCnF,KAAKwwE,YAAY9vD,EAAIq4B,EAAY5zC,OACjCnF,KAAK+nE,WAAWvwC,aAAa,SAAUuhB,EAAY5zC,SAGjDnF,KAAKwwE,YAAYjuB,IAAMxJ,EAAY7zC,MAAQkG,GAAcpL,KAAKwwE,YAAY9vD,IAAMq4B,EAAY5zC,OAASiG,GAAcpL,KAAKwwE,YAAYxxE,IAAM+5C,EAAY/5C,EAD7I,GAC2JgB,KAAKwwE,YAAYhnE,IAAMuvC,EAAYvvC,EAD9L,EAC0M,CACrNxJ,KAAKwwE,YAAYjuB,EAAIxJ,EAAY7zC,MAAQkG,EACzCpL,KAAKwwE,YAAY9vD,EAAIq4B,EAAY5zC,OAASiG,EAC1CpL,KAAKwwE,YAAYxxE,EAAI+5C,EAAY/5C,EAJtB,EAKXgB,KAAKwwE,YAAYhnE,EAAIuvC,EAAYvvC,EALtB,EAMXxJ,KAAK+nE,WAAWvwC,aAAa,UAAWx3B,KAAKwwE,YAAYxxE,EAAI,IAAMgB,KAAKwwE,YAAYhnE,EAAI,IAAMxJ,KAAKwwE,YAAYjuB,EAAI,IAAMviD,KAAKwwE,YAAY9vD,GAC1I44D,EAAWt5E,KAAK+nE,WAAWxjE,MAC3B,IAAIk1E,EAAe,aAAez5E,KAAKwwE,YAAYxxE,EAAI,MAAQgB,KAAKwwE,YAAYhnE,EAAI,MACpF8vE,EAAS1iE,UAAY6iE,EACrBH,EAASrC,gBAAkBwC,CACnC,CACA,CA9DA,CA+DA,EAwCEj/D,gBAAgB,CAACyvC,YAAaC,aAAcsJ,kBAAmBod,gBAC/DA,eAAe/tE,UAAU62E,MAAQ,WAC/B,IAAIxxE,EAEAqc,EACAo1D,EACAlE,EAHA76D,EAAM5a,KAAKukB,KAAK0sD,eAAetwE,OAInC,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAGxB,GAAkB,QADlBqc,EAAOvkB,KAAKukB,KAAK0sD,eAAe/oE,IACvBxL,KAAe,CACtBi9E,EAAmBp1D,EAAKq1D,gBAAgBr1E,MACxCkxE,EAAiBlxD,EAAK8L,UAAU9rB,MAChC,IAAIs1E,EAAc75E,KAAK6wE,GAAG3mE,EAAI,KAC1B6e,EAAS,cACTknB,EAAS,4CACb0pC,EAAiBE,YAAcA,EAC/BF,EAAiBG,kBAAoBD,EACrCpE,EAAez2D,gBAAkB+J,EACjC0sD,EAAeC,mBAAqB3sD,EACpC0sD,EAAex2D,sBAAwB8J,EACvC4wD,EAAiB/iE,UAAYq5B,EAC7B0pC,EAAiB1C,gBAAkBhnC,CAC3C,CAEA,EACE2gC,eAAe/tE,UAAUwuE,eAAiB,WAAY,EACtDT,eAAe/tE,UAAU8yB,KAAO,WAAY,EAC5Ci7C,eAAe/tE,UAAU0wB,YAAc,WACrC,IACIrrB,EACA0S,EAFA2qB,EAAOvlC,KAAK4lC,cAGhB,GAAI5lC,KAAKouD,UAEP,IADAxzC,EAAM5a,KAAKouD,UAAUztD,OAChBuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBq9B,EAAOvlC,KAAKouD,UAAUlmD,GAAGugD,eAAeC,MAAMnjB,MAAQA,EAG1D,GAAIA,GAAQvlC,KAAK6wE,GAAGtrC,MAAQvlC,KAAKwH,GAAKxH,KAAKwH,EAAE+9B,MAAQvlC,KAAKy2C,KAAOz2C,KAAKy2C,GAAGlR,MAAQvlC,KAAK02C,GAAGnR,MAAQvlC,KAAK22C,GAAGpR,OAASvlC,KAAK42C,GAAGrR,MAAQvlC,KAAK62C,GAAGtR,MAAQvlC,KAAK82C,GAAGvR,MAAQvlC,KAAKmrC,GAAG5F,MAAQvlC,KAAKimB,GAAKjmB,KAAKimB,EAAEsf,KAAM,CAEvM,GADAvlC,KAAKi3C,IAAIjN,QACLhqC,KAAKouD,UAEP,IAAKlmD,EADL0S,EAAM5a,KAAKouD,UAAUztD,OAAS,EAChBuH,GAAK,EAAGA,GAAK,EAAG,CAC5B,IAAI6xE,EAAU/5E,KAAKouD,UAAUlmD,GAAGugD,eAAeC,MAC/C1oD,KAAKi3C,IAAIlJ,WAAWgsC,EAAQvyE,EAAE0C,EAAE,IAAK6vE,EAAQvyE,EAAE0C,EAAE,GAAI6vE,EAAQvyE,EAAE0C,EAAE,IACjElK,KAAKi3C,IAAI9J,SAAS4sC,EAAQ5uC,GAAGjhC,EAAE,IAAIkjC,SAAS2sC,EAAQ5uC,GAAGjhC,EAAE,IAAImjC,QAAQ0sC,EAAQ5uC,GAAGjhC,EAAE,IAClFlK,KAAKi3C,IAAI9J,SAAS4sC,EAAQnjC,GAAG1sC,GAAGkjC,SAAS2sC,EAAQljC,GAAG3sC,GAAGmjC,QAAQ0sC,EAAQjjC,GAAG5sC,GAC1ElK,KAAKi3C,IAAIvJ,MAAM,EAAIqsC,EAAQ9xE,EAAEiC,EAAE,GAAI,EAAI6vE,EAAQ9xE,EAAEiC,EAAE,GAAI,EAAI6vE,EAAQ9xE,EAAEiC,EAAE,IACvElK,KAAKi3C,IAAIlJ,UAAUgsC,EAAQ9zD,EAAE/b,EAAE,GAAI6vE,EAAQ9zD,EAAE/b,EAAE,GAAI6vE,EAAQ9zD,EAAE/b,EAAE,GACzE,CAOM,GALIlK,KAAKwH,EACPxH,KAAKi3C,IAAIlJ,WAAW/tC,KAAKwH,EAAE0C,EAAE,IAAKlK,KAAKwH,EAAE0C,EAAE,GAAIlK,KAAKwH,EAAE0C,EAAE,IAExDlK,KAAKi3C,IAAIlJ,WAAW/tC,KAAKy2C,GAAGvsC,GAAIlK,KAAK02C,GAAGxsC,EAAGlK,KAAK22C,GAAGzsC,GAEjDlK,KAAKimB,EAAG,CACV,IAAI+zD,EAEFA,EADEh6E,KAAKwH,EACM,CAACxH,KAAKwH,EAAE0C,EAAE,GAAKlK,KAAKimB,EAAE/b,EAAE,GAAIlK,KAAKwH,EAAE0C,EAAE,GAAKlK,KAAKimB,EAAE/b,EAAE,GAAIlK,KAAKwH,EAAE0C,EAAE,GAAKlK,KAAKimB,EAAE/b,EAAE,IAE9E,CAAClK,KAAKy2C,GAAGvsC,EAAIlK,KAAKimB,EAAE/b,EAAE,GAAIlK,KAAK02C,GAAGxsC,EAAIlK,KAAKimB,EAAE/b,EAAE,GAAIlK,KAAK22C,GAAGzsC,EAAIlK,KAAKimB,EAAE/b,EAAE,IAEvF,IAAI+vE,EAAM5mE,KAAKyK,KAAKzK,KAAKuK,IAAIo8D,EAAW,GAAI,GAAK3mE,KAAKuK,IAAIo8D,EAAW,GAAI,GAAK3mE,KAAKuK,IAAIo8D,EAAW,GAAI,IAElGE,EAAU,CAACF,EAAW,GAAKC,EAAKD,EAAW,GAAKC,EAAKD,EAAW,GAAKC,GACrEE,EAAiB9mE,KAAKyK,KAAKo8D,EAAQ,GAAKA,EAAQ,GAAKA,EAAQ,GAAKA,EAAQ,IAC1EE,EAAa/mE,KAAK8wB,MAAM+1C,EAAQ,GAAIC,GACpCE,EAAahnE,KAAK8wB,MAAM+1C,EAAQ,IAAKA,EAAQ,IACjDl6E,KAAKi3C,IAAI7J,QAAQitC,GAAYltC,SAASitC,EAC9C,CACMp6E,KAAKi3C,IAAI9J,SAASntC,KAAK42C,GAAG1sC,GAAGkjC,SAASptC,KAAK62C,GAAG3sC,GAAGmjC,QAAQrtC,KAAK82C,GAAG5sC,GACjElK,KAAKi3C,IAAI9J,SAASntC,KAAKmrC,GAAGjhC,EAAE,IAAIkjC,SAASptC,KAAKmrC,GAAGjhC,EAAE,IAAImjC,QAAQrtC,KAAKmrC,GAAGjhC,EAAE,IACzElK,KAAKi3C,IAAIlJ,UAAU/tC,KAAKywB,WAAWq+B,SAASvM,EAAI,EAAGviD,KAAKywB,WAAWq+B,SAASpuC,EAAI,EAAG,GACnF1gB,KAAKi3C,IAAIlJ,UAAU,EAAG,EAAG/tC,KAAK6wE,GAAG3mE,GACjC,IAAIowE,GAAoBt6E,KAAK8wE,SAASzgC,OAAOrwC,KAAKi3C,KAClD,IAAKqjC,GAAoBt6E,KAAK6wE,GAAGtrC,OAASvlC,KAAKukB,KAAK0sD,eAAgB,CAElE,IAAI1sD,EACAo1D,EACAlE,EACJ,IAJA76D,EAAM5a,KAAKukB,KAAK0sD,eAAetwE,OAI1BuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAExB,GAAkB,QADlBqc,EAAOvkB,KAAKukB,KAAK0sD,eAAe/oE,IACvBxL,KAAe,CACtB,GAAI49E,EAAkB,CACpB,IAAIC,EAAWv6E,KAAKi3C,IAAItF,SACxB8jC,EAAiBlxD,EAAK8L,UAAU9rB,OACjBqS,UAAY2jE,EAC3B9E,EAAewB,gBAAkBsD,CAC/C,CACgBv6E,KAAK6wE,GAAGtrC,QACVo0C,EAAmBp1D,EAAKq1D,gBAAgBr1E,OACvBs1E,YAAc75E,KAAK6wE,GAAG3mE,EAAI,KAC3CyvE,EAAiBG,kBAAoB95E,KAAK6wE,GAAG3mE,EAAI,KAE/D,CAEQlK,KAAKi3C,IAAIzO,MAAMxoC,KAAK8wE,SAC5B,CACA,CACI9wE,KAAK4lC,eAAgB,CACzB,EACEgrC,eAAe/tE,UAAUorB,aAAe,SAAUq6B,GAChDtoD,KAAK0sD,kBAAkBpE,GAAK,EAChC,EACEsoB,eAAe/tE,UAAU6oB,QAAU,WAAY,EAC/CklD,eAAe/tE,UAAU+pD,eAAiB,WACxC,OAAO,IACX,EAMEpyC,gBAAgB,CAACyvC,YAAagF,iBAAkBmhB,aAAcC,cAAe7c,iBAAkBtJ,aAAcvC,mBAAoBopB,eACjIA,cAAcluE,UAAUizD,cAAgB,WACtC,IAAI/5C,EAAY/b,KAAKywB,WAAWxG,cAAcjqB,KAAKkqB,WAC/CM,EAAM,IAAIgwD,MACVx6E,KAAK4S,KAAKgR,SACZ5jB,KAAKy6E,UAAYz4D,SAAS,SAC1BhiB,KAAKy6E,UAAUjjD,aAAa,QAASx3B,KAAKkqB,UAAUq4B,EAAI,MACxDviD,KAAKy6E,UAAUjjD,aAAa,SAAUx3B,KAAKkqB,UAAUxJ,EAAI,MACzD1gB,KAAKy6E,UAAUzuD,eAAe,+BAAgC,OAAQjQ,GACtE/b,KAAKssD,aAAar8C,YAAYjQ,KAAKy6E,WACnCz6E,KAAKqsD,YAAY70B,aAAa,QAASx3B,KAAKkqB,UAAUq4B,GACtDviD,KAAKqsD,YAAY70B,aAAa,SAAUx3B,KAAKkqB,UAAUxJ,IAEvD1gB,KAAKssD,aAAar8C,YAAYua,GAEhCA,EAAIqB,YAAc,YAClBrB,EAAI1Y,IAAMiK,EACN/b,KAAK4S,KAAK6hD,IACZz0D,KAAKqsD,YAAY70B,aAAa,KAAMx3B,KAAK4S,KAAK6hD,GAEpD,EA8BEj6C,gBAAgB,CAACuwC,cAAeimB,oBAChCA,mBAAmBnuE,UAAUsqD,UAAY2a,YAAYjlE,UAAUsqD,UAC/D6jB,mBAAmBnuE,UAAUuqD,qBAAuB,WAClD,KAAOptD,KAAKwuD,gBAAgB7tD,QACZX,KAAKwuD,gBAAgBpkD,MAC3ByrD,gBAEd,EACEmb,mBAAmBnuE,UAAU4nE,mBAAqB,SAAUx5D,EAASu2B,GACnE,IAAIkzC,EAAgBzpE,EAAQ27C,iBAC5B,GAAK8tB,EAAL,CAGA,IAAIptB,EAAQttD,KAAKqjB,OAAOmkB,GACxB,GAAK8lB,EAAMqtB,KAAQ36E,KAAK6nE,WAyBtB7nE,KAAK46E,iBAAiBF,EAAelzC,QAxBrC,GAAIxnC,KAAKixE,eACPjxE,KAAK46E,iBAAiBF,EAAelzC,OAChC,CAKL,IAJA,IACIqzC,EACAC,EAFA5yE,EAAI,EAIDA,EAAIs/B,GACLxnC,KAAKi/C,SAAS/2C,KAA2B,IAArBlI,KAAKi/C,SAAS/2C,IAAelI,KAAKi/C,SAAS/2C,GAAG0kD,iBACpEkuB,EAAY96E,KAAKi/C,SAAS/2C,GAE1B2yE,GADgB76E,KAAKqjB,OAAOnb,GAAGyyE,IAAM36E,KAAK+6E,wBAAwB7yE,GAAK4yE,EAAUluB,mBAC/CiuB,GAEpC3yE,GAAK,EAEH2yE,EACGvtB,EAAMqtB,KAAQ36E,KAAK6nE,YACtB7nE,KAAKssD,aAAat8C,aAAa0qE,EAAeG,GAEtCvtB,EAAMqtB,KAAQ36E,KAAK6nE,YAC7B7nE,KAAKssD,aAAar8C,YAAYyqE,EAExC,CAzBA,CA6BA,EACE1J,mBAAmBnuE,UAAU8qD,YAAc,SAAU/6C,GACnD,OAAK5S,KAAK6nE,WAGH,IAAIyI,cAAc19D,EAAM5S,KAAKywB,WAAYzwB,MAFvC,IAAIy7D,gBAAgB7oD,EAAM5S,KAAKywB,WAAYzwB,KAGxD,EACEgxE,mBAAmBnuE,UAAU+qD,WAAa,SAAUh7C,GAClD,OAAK5S,KAAK6nE,WAGH,IAAI4I,aAAa79D,EAAM5S,KAAKywB,WAAYzwB,MAFtC,IAAIsnE,qBAAqB10D,EAAM5S,KAAKywB,WAAYzwB,KAG7D,EACEgxE,mBAAmBnuE,UAAUgrD,aAAe,SAAUj7C,GAEpD,OADA5S,KAAKkxE,OAAS,IAAIN,eAAeh+D,EAAM5S,KAAKywB,WAAYzwB,MACjDA,KAAKkxE,MAChB,EACEF,mBAAmBnuE,UAAU0qD,YAAc,SAAU36C,GACnD,OAAK5S,KAAK6nE,WAGH,IAAIkJ,cAAcn+D,EAAM5S,KAAKywB,WAAYzwB,MAFvC,IAAI0zD,cAAc9gD,EAAM5S,KAAKywB,WAAYzwB,KAGtD,EACEgxE,mBAAmBnuE,UAAU4qD,YAAc,SAAU76C,GACnD,OAAK5S,KAAK6nE,WAGH,IAAIwI,cAAcz9D,EAAM5S,KAAKywB,WAAYzwB,MAFvC,IAAIwnE,cAAc50D,EAAM5S,KAAKywB,WAAYzwB,KAGtD,EACEgxE,mBAAmBnuE,UAAU6qD,WAAaoa,YAAYjlE,UAAU6qD,WAChEsjB,mBAAmBnuE,UAAUk4E,wBAA0B,SAAUvzC,GAG/D,IAFA,IAAIt/B,EAAI,EACJ0S,EAAM5a,KAAKixE,eAAetwE,OACvBuH,EAAI0S,GAAK,CACd,GAAI5a,KAAKixE,eAAe/oE,GAAG8yE,UAAYxzC,GAAOxnC,KAAKixE,eAAe/oE,GAAG+yE,QAAUzzC,EAC7E,OAAOxnC,KAAKixE,eAAe/oE,GAAG0xE,gBAEhC1xE,GAAK,CACX,CACI,OAAO,IACX,EACE8oE,mBAAmBnuE,UAAUq4E,sBAAwB,SAAU1zC,EAAK9qC,GAClE,IACI6H,EACAkxE,EAFAmE,EAAkBr/D,UAAU,OAGhCwE,SAAS66D,GACT,IAAIvpD,EAAY9V,UAAU,OAE1B,GADAwE,SAASsR,GACI,OAAT3zB,EAAe,EACjB6H,EAAQq1E,EAAgBr1E,OAClBW,MAAQlF,KAAKywB,WAAWq+B,SAASvM,EAAI,KAC3Ch+C,EAAMY,OAASnF,KAAKywB,WAAWq+B,SAASpuC,EAAI,KAC5C,IAAI5Z,EAAS,UACbvC,EAAM0a,sBAAwBnY,EAC9BvC,EAAMmxE,mBAAqB5uE,EAC3BvC,EAAMya,gBAAkBlY,EAExB,IAAImpC,EAAS,6CADbwlC,EAAiBplD,EAAU9rB,OAEZqS,UAAYq5B,EAC3BwlC,EAAewB,gBAAkBhnC,CACvC,CACI2pC,EAAgB3pE,YAAYogB,GAE5B,IAAI8qD,EAAsB,CACxB9qD,UAAWA,EACXupD,gBAAiBA,EACjBoB,SAAUxzC,EACVyzC,OAAQzzC,EACR9qC,KAAMA,GAGR,OADAsD,KAAKixE,eAAe5mE,KAAK8wE,GAClBA,CACX,EACEnK,mBAAmBnuE,UAAUu4E,kBAAoB,WAC/C,IAAIlzE,EAEAmzE,EADAzgE,EAAM5a,KAAKqjB,OAAO1iB,OAElB26E,EAAmB,GACvB,IAAKpzE,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACpBlI,KAAKqjB,OAAOnb,GAAGyyE,KAA6B,IAAtB36E,KAAKqjB,OAAOnb,GAAG+b,IACd,OAArBq3D,IACFA,EAAmB,KACnBD,EAA0Br7E,KAAKk7E,sBAAsBhzE,EAAG,OAE1DmzE,EAAwBJ,OAAS5nE,KAAK6K,IAAIm9D,EAAwBJ,OAAQ/yE,KAEjD,OAArBozE,IACFA,EAAmB,KACnBD,EAA0Br7E,KAAKk7E,sBAAsBhzE,EAAG,OAE1DmzE,EAAwBJ,OAAS5nE,KAAK6K,IAAIm9D,EAAwBJ,OAAQ/yE,IAI9E,IAAKA,GADL0S,EAAM5a,KAAKixE,eAAetwE,QACX,EAAGuH,GAAK,EAAGA,GAAK,EAC7BlI,KAAKu7E,YAAYtrE,YAAYjQ,KAAKixE,eAAe/oE,GAAG0xE,gBAE1D,EACE5I,mBAAmBnuE,UAAU+3E,iBAAmB,SAAUhkD,EAAM4Q,GAG9D,IAFA,IAAIt/B,EAAI,EACJ0S,EAAM5a,KAAKixE,eAAetwE,OACvBuH,EAAI0S,GAAK,CACd,GAAI4sB,GAAOxnC,KAAKixE,eAAe/oE,GAAG+yE,OAAQ,CAGxC,IAFA,IACIpQ,EADArnD,EAAIxjB,KAAKixE,eAAe/oE,GAAG8yE,SAExBx3D,EAAIgkB,GACLxnC,KAAKi/C,SAASz7B,IAAMxjB,KAAKi/C,SAASz7B,GAAGopC,iBACvCie,EAAc7qE,KAAKi/C,SAASz7B,GAAGopC,kBAEjCppC,GAAK,EAEHqnD,EACF7qE,KAAKixE,eAAe/oE,GAAGmoB,UAAUrgB,aAAa4mB,EAAMi0C,GAEpD7qE,KAAKixE,eAAe/oE,GAAGmoB,UAAUpgB,YAAY2mB,GAE/C,KACR,CACM1uB,GAAK,CACX,CACA,EACE8oE,mBAAmBnuE,UAAUitB,gBAAkB,SAAU0C,GACvD,IAAI+oD,EAAchhE,UAAU,OACxB6V,EAAUpwB,KAAK6uD,cAAcz+B,QAC7B7rB,EAAQg3E,EAAYh3E,MACxBA,EAAMW,MAAQstB,EAAS+vB,EAAI,KAC3Bh+C,EAAMY,OAASqtB,EAAS9R,EAAI,KAC5B1gB,KAAKu7E,YAAcA,EACnBx8D,SAASw8D,GACTh3E,EAAM6a,eAAiB,OACvB7a,EAAM+a,kBAAoB,OAC1B/a,EAAM8a,qBAAuB,OACzBrf,KAAK2oD,aAAa52C,WACpBwpE,EAAY/jD,aAAa,QAASx3B,KAAK2oD,aAAa52C,WAEtDqe,EAAQngB,YAAYsrE,GACpBh3E,EAAMwB,SAAW,SACjB,IAAI0lE,EAAMzpD,SAAS,OACnBypD,EAAIj0C,aAAa,QAAS,KAC1Bi0C,EAAIj0C,aAAa,SAAU,KAC3BzY,SAAS0sD,GACTzrE,KAAKu7E,YAAYtrE,YAAYw7D,GAC7B,IAAI/6C,EAAO1O,SAAS,QACpBypD,EAAIx7D,YAAYygB,GAChB1wB,KAAK4S,KAAO4f,EAEZxyB,KAAK2uD,gBAAgBn8B,EAAUi5C,GAC/BzrE,KAAKywB,WAAWC,KAAOA,EACvB1wB,KAAKqjB,OAASmP,EAASnP,OACvBrjB,KAAKssD,aAAetsD,KAAKu7E,YACzBv7E,KAAKo7E,oBACLp7E,KAAKqzB,qBACT,EACE29C,mBAAmBnuE,UAAU6oB,QAAU,WAMrC,IAAIxjB,EALAlI,KAAK6uD,cAAcz+B,UACrBpwB,KAAK6uD,cAAcz+B,QAAQqH,UAAY,IAEzCz3B,KAAK6uD,cAAcx+B,UAAY,KAC/BrwB,KAAKywB,WAAWC,KAAO,KAEvB,IAAI9V,EAAM5a,KAAKqjB,OAASrjB,KAAKqjB,OAAO1iB,OAAS,EAC7C,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACpBlI,KAAKi/C,SAAS/2C,IAAMlI,KAAKi/C,SAAS/2C,GAAGwjB,SACvC1rB,KAAKi/C,SAAS/2C,GAAGwjB,UAGrB1rB,KAAKi/C,SAASt+C,OAAS,EACvBX,KAAK6oE,WAAY,EACjB7oE,KAAK6uD,cAAgB,IACzB,EACEmiB,mBAAmBnuE,UAAUwwB,oBAAsB,WACjD,IAIIka,EACA1C,EACAmD,EACA/pB,EAPA4xD,EAAe71E,KAAK6uD,cAAcz+B,QAAQ8yB,YAC1C4yB,EAAgB91E,KAAK6uD,cAAcz+B,QAAQ6lD,aAC3CF,EAAaF,EAAeC,EACb91E,KAAKywB,WAAWq+B,SAASvM,EAAIviD,KAAKywB,WAAWq+B,SAASpuC,EAKtDq1D,GACjBxoC,EAAKsoC,EAAe71E,KAAKywB,WAAWq+B,SAASvM,EAC7C1X,EAAKgrC,EAAe71E,KAAKywB,WAAWq+B,SAASvM,EAC7CvU,EAAK,EACL/pB,GAAM6xD,EAAgB91E,KAAKywB,WAAWq+B,SAASpuC,GAAKm1D,EAAe71E,KAAKywB,WAAWq+B,SAASvM,IAAM,IAElGhV,EAAKuoC,EAAgB91E,KAAKywB,WAAWq+B,SAASpuC,EAC9CmqB,EAAKirC,EAAgB91E,KAAKywB,WAAWq+B,SAASpuC,EAC9CstB,GAAM6nC,EAAe71E,KAAKywB,WAAWq+B,SAASvM,GAAKuzB,EAAgB91E,KAAKywB,WAAWq+B,SAASpuC,IAAM,EAClGuD,EAAK,GAEP,IAAI1f,EAAQvE,KAAKu7E,YAAYh3E,MAC7BA,EAAM0yE,gBAAkB,YAAc1pC,EAAK,YAAc1C,EAAK,gBAAkBmD,EAAK,IAAM/pB,EAAK,QAChG1f,EAAMqS,UAAYrS,EAAM0yE,eAC5B,EACEjG,mBAAmBnuE,UAAU0wB,YAAcu0C,YAAYjlE,UAAU0wB,YACjEy9C,mBAAmBnuE,UAAU8yB,KAAO,WAClC31B,KAAKu7E,YAAYh3E,MAAM2B,QAAU,MACrC,EACE8qE,mBAAmBnuE,UAAU+yB,KAAO,WAClC51B,KAAKu7E,YAAYh3E,MAAM2B,QAAU,OACrC,EACE8qE,mBAAmBnuE,UAAUmwB,UAAY,WAEvC,GADAhzB,KAAK+tD,gBACD/tD,KAAKkxE,OACPlxE,KAAKkxE,OAAOwI,YACP,CACL,IAEIxxE,EAFAszE,EAASx7E,KAAKywB,WAAWq+B,SAASvM,EAClCk5B,EAAUz7E,KAAKywB,WAAWq+B,SAASpuC,EAEnC9F,EAAM5a,KAAKixE,eAAetwE,OAC9B,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAAG,CAC3B,IAAI3D,EAAQvE,KAAKixE,eAAe/oE,GAAG0xE,gBAAgBr1E,MACnDA,EAAMu1E,kBAAoBzmE,KAAKyK,KAAKzK,KAAKuK,IAAI49D,EAAQ,GAAKnoE,KAAKuK,IAAI69D,EAAS,IAAM,KAClFl3E,EAAMs1E,YAAct1E,EAAMu1E,iBAClC,CACA,CACA,EACE9I,mBAAmBnuE,UAAU6vB,wBAA0B,SAAUhN,GAC/D,IAAIxd,EACA0S,EAAM8K,EAAO/kB,OACb+6E,EAAoBnhE,UAAU,OAClC,IAAKrS,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB,GAAIwd,EAAOxd,GAAGgmB,GAAI,CAChB,IAAI3J,EAAOvkB,KAAKwtD,WAAW9nC,EAAOxd,GAAIwzE,EAAmB17E,KAAKywB,WAAWlM,KAAM,MAC/EA,EAAKwN,kBACL/xB,KAAKywB,WAAWd,iBAAiB9B,oBAAoBtJ,EAC7D,CAEA,EAaE/J,gBAAgB,CAACw2D,mBAAoBrJ,aAAcyI,cAAee,cAClEA,aAAatuE,UAAU84E,6BAA+BxK,aAAatuE,UAAUmxD,wBAC7Emd,aAAatuE,UAAUmxD,wBAA0B,WAC/Ch0D,KAAK27E,+BAED37E,KAAK4S,KAAKgR,SACZ5jB,KAAK+nE,WAAWvwC,aAAa,QAASx3B,KAAK4S,KAAK2vC,GAChDviD,KAAK+nE,WAAWvwC,aAAa,SAAUx3B,KAAK4S,KAAK8N,GACjD1gB,KAAKk0D,mBAAqBl0D,KAAKqsD,aAE/BrsD,KAAKk0D,mBAAqBl0D,KAAKssD,YAErC,EACE6kB,aAAatuE,UAAU+3E,iBAAmB,SAAUhkD,EAAM4Q,GAGxD,IAFA,IACIqjC,EADArnD,EAAI,EAEDA,EAAIgkB,GACLxnC,KAAKi/C,SAASz7B,IAAMxjB,KAAKi/C,SAASz7B,GAAGopC,iBACvCie,EAAc7qE,KAAKi/C,SAASz7B,GAAGopC,kBAEjCppC,GAAK,EAEHqnD,EACF7qE,KAAKssD,aAAat8C,aAAa4mB,EAAMi0C,GAErC7qE,KAAKssD,aAAar8C,YAAY2mB,EAEpC,EACEu6C,aAAatuE,UAAU2qD,WAAa,SAAU56C,GAC5C,OAAK5S,KAAK6nE,WAGH,IAAIsJ,aAAav+D,EAAM5S,KAAKywB,WAAYzwB,MAFtC,IAAI4nE,eAAeh1D,EAAM5S,KAAKywB,WAAYzwB,KAGvD,EA+BEwa,gBAAgB,CAACw2D,oBAAqBI,gBACtCA,eAAevuE,UAAU2qD,WAAa,SAAU56C,GAC9C,OAAK5S,KAAK6nE,WAGH,IAAIsJ,aAAav+D,EAAM5S,KAAKywB,WAAYzwB,MAFtC,IAAI4nE,eAAeh1D,EAAM5S,KAAKywB,WAAYzwB,KAGvD,EAEE,IAAIsrD,wBACK,SAAU/mC,GACf,SAASq3D,EAAmBh+E,GAG1B,IAFA,IAAIsK,EAAI,EACJ0S,EAAM2J,EAAKlB,OAAO1iB,OACfuH,EAAI0S,GAAK,CACd,GAAI2J,EAAKlB,OAAOnb,GAAG8lB,KAAOpwB,GAAQ2mB,EAAKlB,OAAOnb,GAAGy5B,MAAQ/jC,EACvD,OAAO2mB,EAAK06B,SAAS/2C,GAAGqjD,eAE1BrjD,GAAK,CACf,CACQ,OAAO,IAEf,CAYM,OAXArH,OAAOe,eAAeg6E,EAAoB,QAAS,CACjD18E,MAAOqlB,EAAK3R,KAAKob,KAEnB4tD,EAAmBtuB,MAAQsuB,EAC3BA,EAAmBC,YAAc,EACjCD,EAAmBz2E,OAASof,EAAK3R,KAAK8N,GAAK6D,EAAKkM,WAAWq+B,SAASpuC,EACpEk7D,EAAmB12E,MAAQqf,EAAK3R,KAAK2vC,GAAKh+B,EAAKkM,WAAWq+B,SAASvM,EACnEq5B,EAAmBC,YAAc,EACjCD,EAAmBE,cAAgB,EAAIv3D,EAAKkM,WAAW5B,UACvD+sD,EAAmBG,iBAAmB,EACtCH,EAAmBI,UAAYz3D,EAAKlB,OAAO1iB,OACpCi7E,CACb,EAGE,SAASK,UAAU5+D,GAAgC,OAAO4+D,UAAY,mBAAqB3/E,QAAU,iBAAmBA,OAAO2N,SAAW,SAAUoT,GAAK,cAAcA,CAAE,EAAK,SAAUA,GAAK,OAAOA,GAAK,mBAAqB/gB,QAAU+gB,EAAE5d,cAAgBnD,QAAU+gB,IAAM/gB,OAAOuG,UAAY,gBAAkBwa,GAAM4+D,UAAU5+D,EAAG,CA0BlU,SAAS6+D,WAAWnhD,EAAMU,GAIxB,IAAI0gD,EAASn8E,KACXkF,EAAQ,IAMRk3E,EAAU,SAEVC,EAAa5gD,EAAK7d,IAAI1Y,EANb,GAOTo3E,EAAe7gD,EAAK7d,IAAI,EALf,IAMT7X,EAA0B,EAAfu2E,EACXlsB,EAAOlrD,IAyFT,SAASq3E,EAAK1/E,GACZ,IAAImL,EACFw0E,EAAS3/E,EAAI8D,OACb87E,EAAKz8E,KACLkI,EAAI,EACJsb,EAAIi5D,EAAGv0E,EAAIu0E,EAAGj5D,EAAI,EAClBvb,EAAIw0E,EAAGC,EAAI,GAQb,IALKF,IACH3/E,EAAM,CAAC2/E,MAIFt0E,EAAIhD,GACT+C,EAAEC,GAAKA,IAET,IAAKA,EAAI,EAAGA,EAAIhD,EAAOgD,IACrBD,EAAEC,GAAKD,EAAEub,EAAI4sC,EAAO5sC,EAAI3mB,EAAIqL,EAAIs0E,IAAWx0E,EAAIC,EAAEC,KACjDD,EAAEub,GAAKxb,EAITy0E,EAAG3yE,EAAI,SAAUg4C,GAOf,IALA,IAAI95C,EACF2Y,EAAI,EACJzY,EAAIu0E,EAAGv0E,EACPsb,EAAIi5D,EAAGj5D,EACPvb,EAAIw0E,EAAGC,EACF56B,KACL95C,EAAIC,EAAEC,EAAIkoD,EAAOloD,EAAI,GACrByY,EAAIA,EAAIzb,EAAQ+C,EAAEmoD,GAAQnoD,EAAEC,GAAKD,EAAEub,EAAI4sC,EAAO5sC,EAAIxb,KAAOC,EAAEub,GAAKxb,IAIlE,OAFAy0E,EAAGv0E,EAAIA,EACPu0E,EAAGj5D,EAAIA,EACA7C,CAIf,CACA,CAMI,SAASg8D,EAAKpzE,EAAGvB,GAIf,OAHAA,EAAEE,EAAIqB,EAAErB,EACRF,EAAEwb,EAAIja,EAAEia,EACRxb,EAAE00E,EAAInzE,EAAEmzE,EAAEjmE,QACHzO,CACb,CAMI,SAAS40E,EAAQ3d,EAAK5lB,GACpB,IAEE9kC,EAFErL,EAAS,GACX2zE,EAAMZ,UAAUhd,GAElB,GAAI5lB,GAAgB,UAAPwjC,EACX,IAAKtoE,KAAQ0qD,EACX,IACE/1D,EAAOmB,KAAKuyE,EAAQ3d,EAAI1qD,GAAO8kC,EAAQ,GACnD,CAAY,MAAOh6C,GAAG,CAGhB,OAAO6J,EAAOvI,OAASuI,EAAgB,UAAP2zE,EAAkB5d,EAAMA,EAAM,IACpE,CAOI,SAAS6d,EAAOC,EAAMlgF,GAIpB,IAHA,IACEmgF,EADEC,EAAaF,EAAO,GAEtBv5D,EAAI,EACCA,EAAIy5D,EAAWt8E,QACpB9D,EAAIuzD,EAAO5sC,GAAK4sC,GAAQ4sB,GAAyB,GAAhBngF,EAAIuzD,EAAO5sC,IAAWy5D,EAAW14B,WAAW/gC,KAE/E,OAAO05D,EAASrgF,EACtB,CA0BI,SAASqgF,EAASj3D,GAChB,OAAOte,OAAO6hE,aAAanhE,MAAM,EAAG4d,EAC1C,CA7HIwV,EAAK,OAAS2gD,GAtEd,SAAoBW,EAAMI,EAASv1D,GACjC,IAAI/qB,EAAM,GAMNugF,EAAYN,EAAOF,GALvBO,GAAsB,IAAZA,EAAmB,CAC3BE,SAAS,GACPF,GAAW,CAAA,GAGwBE,QAAU,CAACN,EAAMG,EAASniD,IAAkB,OAATgiD,EAuK5E,WACE,IAIE,IAAI75C,EAAM,IAAIo6C,WAAWp4E,GAEzB,OADCi3E,EAAOoB,QAAUpB,EAAOqB,UAAUC,gBAAgBv6C,GAC5Cg6C,EAASh6C,EACxB,CAAQ,MAAO7jC,GACP,IAAIq+E,EAAUvB,EAAOzpE,UACnBirE,EAAUD,GAAWA,EAAQC,QAC/B,MAAO,EAAE,IAAI94B,KAAQs3B,EAAQwB,EAASxB,EAAOyB,OAAQV,EAASniD,GACtE,CACA,CApLgG8iD,GAAad,EAAM,GAAIlgF,GAG7GihF,EAAO,IAAIvB,EAAK1/E,GAIhBkhF,EAAO,WAMT,IALA,IAAI51E,EAAI21E,EAAKh0E,EA/BN,GAiCL1C,EAAIi1E,EAEJr9E,EAAI,EACCmJ,EAAIm0E,GAETn0E,GAAKA,EAAInJ,GAAKkG,EACdkC,GAAKlC,EACLlG,EAAI8+E,EAAKh0E,EAAE,GAEb,KAAO3B,GAAKpC,GAEVoC,GAAK,EACLf,GAAK,EACLpI,KAAO,EAET,OAAQmJ,EAAInJ,GAAKoI,CACzB,EAaM,OAZA22E,EAAKC,MAAQ,WACX,OAAmB,EAAZF,EAAKh0E,EAAE,EACtB,EACMi0E,EAAKE,MAAQ,WACX,OAAOH,EAAKh0E,EAAE,GAAK,UAC3B,EACMi0E,EAAa,OAAIA,EAGjBjB,EAAOI,EAASY,EAAKpB,GAAI3hD,IAGjBoiD,EAAQe,MAAQt2D,GAAY,SAAUm2D,EAAMhB,EAAMoB,EAAcC,GActE,OAbIA,IAEEA,EAAM1B,GACRC,EAAKyB,EAAON,GAGdC,EAAKK,MAAQ,WACX,OAAOzB,EAAKmB,EAAM,GAC9B,GAKYK,GACF1iD,EAAK2gD,GAAW2B,EACThB,GAKGgB,CACpB,GAASA,EAAMX,EAAW,WAAYD,EAAUA,EAAQhB,OAASn8E,MAAQy7B,EAAM0hD,EAAQiB,MACvF,EAuIItB,EAAOrhD,EAAKld,SAAUwc,EAQ1B,CAEE,SAASsjD,aAAahgE,GACpB69D,WAAW,GAAI79D,EACnB,CAEE,IAAIigE,UAAY,CACdC,MAAO,SAGT,SAASC,UAAUnhE,GAAgC,OAAOmhE,UAAY,mBAAqBliF,QAAU,iBAAmBA,OAAO2N,SAAW,SAAUoT,GAAK,cAAcA,CAAE,EAAK,SAAUA,GAAK,OAAOA,GAAK,mBAAqB/gB,QAAU+gB,EAAE5d,cAAgBnD,QAAU+gB,IAAM/gB,OAAOuG,UAAY,gBAAkBwa,GAAMmhE,UAAUnhE,EAAG,CAClU,IAAIohE,kBAAoB,WAGtB,IAAI1zD,GAAK,CAAA,EACL1X,KAAOgL,OACP/L,OAAS,KACT1C,SAAW,KACXkY,eAAiB,KACjB42D,MAAQ,KACRC,OAAS,KACTC,cAAgB,CAAA,EAEpB,SAASprD,aACPorD,cAAgB,CAAA,CACtB,CACI,SAASC,sBAAsB9hE,GAC7B,OAAOA,EAAItd,cAAgBqD,OAASia,EAAItd,cAAgBwd,YAC9D,CACI,SAAS6hE,YAAYC,EAAM70E,GACzB,MAAgB,WAAT60E,GAAqB70E,aAAa4I,QAAmB,YAATisE,GAA+B,WAATA,CAC/E,CACI,SAASC,QAAQ/4D,GACf,IAAIg5D,EAAOT,UAAUv4D,GACrB,GAAa,WAATg5D,GAAqBh5D,aAAanT,QAAmB,YAATmsE,EAC9C,OAAQh5D,EAEV,GAAI44D,sBAAsB54D,GAAI,CAC5B,IAAI/d,EACAg3E,EAAOj5D,EAAEtlB,OACTw+E,EAAS,GACb,IAAKj3E,EAAI,EAAGA,EAAIg3E,EAAMh3E,GAAK,EACzBi3E,EAAOj3E,IAAM+d,EAAE/d,GAEjB,OAAOi3E,CACf,CACM,OAAIl5D,EAAE2a,SACG3a,EAAE/b,GAEH+b,CACd,CA5BIo4D,aAAahgE,QA6Bb,IAAI+gE,UAAYtnD,cAAc+J,gBAAgB,KAAO,EAAG,KAAO,KAAO,UAAUtgC,IAC5E89E,WAAavnD,cAAc+J,gBAAgB,KAAO,KAAO,KAAO,EAAG,WAAWtgC,IAC9E+9E,aAAexnD,cAAc+J,gBAAgB,IAAM,EAAG,KAAO,EAAG,aAAatgC,IACjF,SAAS+jD,IAAIr/B,EAAG5e,GACd,IAAI43E,EAAOT,UAAUv4D,GACjBs5D,EAAOf,UAAUn3E,GACrB,GAAIy3E,YAAYG,EAAMh5D,IAAM64D,YAAYS,EAAMl4E,IAAe,WAAT43E,GAA8B,WAATM,EACvE,OAAOt5D,EAAI5e,EAEb,GAAIw3E,sBAAsB54D,IAAM64D,YAAYS,EAAMl4E,GAGhD,OAFA4e,EAAIA,EAAExP,MAAM,IACV,IAAMpP,EACD4e,EAET,GAAI64D,YAAYG,EAAMh5D,IAAM44D,sBAAsBx3E,GAGhD,OAFAA,EAAIA,EAAEoP,MAAM,IACV,GAAKwP,EAAI5e,EAAE,GACNA,EAET,GAAIw3E,sBAAsB54D,IAAM44D,sBAAsBx3E,GAAI,CAKxD,IAJA,IAAIa,EAAI,EACJg3E,EAAOj5D,EAAEtlB,OACT6+E,EAAOn4E,EAAE1G,OACTw+E,EAAS,GACNj3E,EAAIg3E,GAAQh3E,EAAIs3E,IACA,iBAATv5D,EAAE/d,IAAmB+d,EAAE/d,aAAc4K,UAA4B,iBAATzL,EAAEa,IAAmBb,EAAEa,aAAc4K,QACvGqsE,EAAOj3E,GAAK+d,EAAE/d,GAAKb,EAAEa,GAErBi3E,EAAOj3E,QAAc7B,IAATgB,EAAEa,GAAmB+d,EAAE/d,GAAK+d,EAAE/d,IAAMb,EAAEa,GAEpDA,GAAK,EAEP,OAAOi3E,CACf,CACM,OAAO,CACb,CACI,IAAIte,IAAMvb,IACV,SAASm6B,IAAIx5D,EAAG5e,GACd,IAAI43E,EAAOT,UAAUv4D,GACjBs5D,EAAOf,UAAUn3E,GACrB,GAAIy3E,YAAYG,EAAMh5D,IAAM64D,YAAYS,EAAMl4E,GAO5C,MANa,WAAT43E,IACFh5D,EAAI2K,SAAS3K,EAAG,KAEL,WAATs5D,IACFl4E,EAAIupB,SAASvpB,EAAG,KAEX4e,EAAI5e,EAEb,GAAIw3E,sBAAsB54D,IAAM64D,YAAYS,EAAMl4E,GAGhD,OAFA4e,EAAIA,EAAExP,MAAM,IACV,IAAMpP,EACD4e,EAET,GAAI64D,YAAYG,EAAMh5D,IAAM44D,sBAAsBx3E,GAGhD,OAFAA,EAAIA,EAAEoP,MAAM,IACV,GAAKwP,EAAI5e,EAAE,GACNA,EAET,GAAIw3E,sBAAsB54D,IAAM44D,sBAAsBx3E,GAAI,CAKxD,IAJA,IAAIa,EAAI,EACJg3E,EAAOj5D,EAAEtlB,OACT6+E,EAAOn4E,EAAE1G,OACTw+E,EAAS,GACNj3E,EAAIg3E,GAAQh3E,EAAIs3E,IACA,iBAATv5D,EAAE/d,IAAmB+d,EAAE/d,aAAc4K,UAA4B,iBAATzL,EAAEa,IAAmBb,EAAEa,aAAc4K,QACvGqsE,EAAOj3E,GAAK+d,EAAE/d,GAAKb,EAAEa,GAErBi3E,EAAOj3E,QAAc7B,IAATgB,EAAEa,GAAmB+d,EAAE/d,GAAK+d,EAAE/d,IAAMb,EAAEa,GAEpDA,GAAK,EAEP,OAAOi3E,CACf,CACM,OAAO,CACb,CACI,SAASO,IAAIz5D,EAAG5e,GACd,IAEI0V,EAIA7U,EACA0S,EAPAqkE,EAAOT,UAAUv4D,GACjBs5D,EAAOf,UAAUn3E,GAErB,GAAIy3E,YAAYG,EAAMh5D,IAAM64D,YAAYS,EAAMl4E,GAC5C,OAAO4e,EAAI5e,EAIb,GAAIw3E,sBAAsB54D,IAAM64D,YAAYS,EAAMl4E,GAAI,CAGpD,IAFAuT,EAAMqL,EAAEtlB,OACRoc,EAAMF,iBAAiB,UAAWjC,GAC7B1S,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB6U,EAAI7U,GAAK+d,EAAE/d,GAAKb,EAElB,OAAO0V,CACf,CACM,GAAI+hE,YAAYG,EAAMh5D,IAAM44D,sBAAsBx3E,GAAI,CAGpD,IAFAuT,EAAMvT,EAAE1G,OACRoc,EAAMF,iBAAiB,UAAWjC,GAC7B1S,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB6U,EAAI7U,GAAK+d,EAAI5e,EAAEa,GAEjB,OAAO6U,CACf,CACM,OAAO,CACb,CACI,SAAS2a,IAAIzR,EAAG5e,GACd,IAEI0V,EAIA7U,EACA0S,EAPAqkE,EAAOT,UAAUv4D,GACjBs5D,EAAOf,UAAUn3E,GAErB,GAAIy3E,YAAYG,EAAMh5D,IAAM64D,YAAYS,EAAMl4E,GAC5C,OAAO4e,EAAI5e,EAIb,GAAIw3E,sBAAsB54D,IAAM64D,YAAYS,EAAMl4E,GAAI,CAGpD,IAFAuT,EAAMqL,EAAEtlB,OACRoc,EAAMF,iBAAiB,UAAWjC,GAC7B1S,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB6U,EAAI7U,GAAK+d,EAAE/d,GAAKb,EAElB,OAAO0V,CACf,CACM,GAAI+hE,YAAYG,EAAMh5D,IAAM44D,sBAAsBx3E,GAAI,CAGpD,IAFAuT,EAAMvT,EAAE1G,OACRoc,EAAMF,iBAAiB,UAAWjC,GAC7B1S,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB6U,EAAI7U,GAAK+d,EAAI5e,EAAEa,GAEjB,OAAO6U,CACf,CACM,OAAO,CACb,CACI,SAAS4iE,IAAI15D,EAAG5e,GAOd,MANiB,iBAAN4e,IACTA,EAAI2K,SAAS3K,EAAG,KAED,iBAAN5e,IACTA,EAAIupB,SAASvpB,EAAG,KAEX4e,EAAI5e,CACjB,CACI,IAAIu4E,QAAUt6B,IACVu6B,QAAUJ,IACVK,QAAUJ,IACVK,QAAUroD,IACVsoD,QAAUL,IACd,SAASM,MAAM33B,EAAKlqC,EAAKF,GACvB,GAAIE,EAAMF,EAAK,CACb,IAAIgiE,EAAKhiE,EACTA,EAAME,EACNA,EAAM8hE,CACd,CACM,OAAO7sE,KAAK+K,IAAI/K,KAAK6K,IAAIoqC,EAAKlqC,GAAMF,EAC1C,CACI,SAASiiE,iBAAiB1hE,GACxB,OAAOA,EAAMG,SACnB,CACI,IAAIwhE,mBAAqBD,iBACzB,SAASE,iBAAiB5hE,GACxB,OAAOA,EAAMG,SACnB,CACI,IAAI0hE,mBAAqBH,iBACrBI,kBAAoB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GACxC,SAAS5/E,OAAO6/E,EAAMC,GACpB,GAAoB,iBAATD,GAAqBA,aAAgB1tE,OAE9C,OADA2tE,EAAOA,GAAQ,EACRptE,KAAKmL,IAAIgiE,EAAOC,GAKzB,IAAIv4E,EAHCu4E,IACHA,EAAOF,mBAGT,IAAI3lE,EAAMvH,KAAK+K,IAAIoiE,EAAK7/E,OAAQ8/E,EAAK9/E,QACjCw6B,EAAc,EAClB,IAAKjzB,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBizB,GAAe9nB,KAAKuK,IAAI6iE,EAAKv4E,GAAKs4E,EAAKt4E,GAAI,GAE7C,OAAOmL,KAAKyK,KAAKqd,EACvB,CACI,SAASulD,UAAUC,GACjB,OAAOjpD,IAAIipD,EAAKhgF,OAAOggF,GAC7B,CACI,SAASC,SAASniE,GAChB,IAKIiC,EACAzY,EANA0Y,EAAIlC,EAAI,GACR3U,EAAI2U,EAAI,GACRpX,EAAIoX,EAAI,GACRP,EAAM7K,KAAK6K,IAAIyC,EAAG7W,EAAGzC,GACrB+W,EAAM/K,KAAK+K,IAAIuC,EAAG7W,EAAGzC,GAGrBwmC,GAAK3vB,EAAME,GAAO,EACtB,GAAIF,IAAQE,EACVsC,EAAI,EACJzY,EAAI,MACC,CACL,IAAIb,EAAI8W,EAAME,EAEd,OADAnW,EAAI4lC,EAAI,GAAMzmC,GAAK,EAAI8W,EAAME,GAAOhX,GAAK8W,EAAME,GACvCF,GACN,KAAKyC,EACHD,GAAK5W,EAAIzC,GAAKD,GAAK0C,EAAIzC,EAAI,EAAI,GAC/B,MACF,KAAKyC,EACH4W,GAAKrZ,EAAIsZ,GAAKvZ,EAAI,EAClB,MACF,KAAKC,EACHqZ,GAAKC,EAAI7W,GAAK1C,EAAI,EAKtBsZ,GAAK,CACb,CACM,MAAO,CAACA,EAAGzY,EAAG4lC,EAAGpvB,EAAI,GAC3B,CACI,SAASoiE,QAAQr5E,EAAGoZ,EAAG5Y,GAGrB,OAFIA,EAAI,IAAGA,GAAK,GACZA,EAAI,IAAGA,GAAK,GACZA,EAAI,EAAI,EAAUR,EAAc,GAAToZ,EAAIpZ,GAASQ,EACpCA,EAAI,GAAc4Y,EAClB5Y,EAAI,EAAI,EAAUR,GAAKoZ,EAAIpZ,IAAM,EAAI,EAAIQ,GAAK,EAC3CR,CACb,CACI,SAASs5E,SAASriE,GAChB,IAGIkC,EACA7W,EACAzC,EALAqZ,EAAIjC,EAAI,GACRxW,EAAIwW,EAAI,GACRovB,EAAIpvB,EAAI,GAIZ,GAAU,IAANxW,EACF0Y,EAAIktB,EACJxmC,EAAIwmC,EACJ/jC,EAAI+jC,MACC,CACL,IAAIjtB,EAAIitB,EAAI,GAAMA,GAAK,EAAI5lC,GAAK4lC,EAAI5lC,EAAI4lC,EAAI5lC,EACxCT,EAAI,EAAIqmC,EAAIjtB,EAChBD,EAAIkgE,QAAQr5E,EAAGoZ,EAAGF,EAAI,EAAI,GAC1B5W,EAAI+2E,QAAQr5E,EAAGoZ,EAAGF,GAClBrZ,EAAIw5E,QAAQr5E,EAAGoZ,EAAGF,EAAI,EAAI,EAClC,CACM,MAAO,CAACC,EAAG7W,EAAGzC,EAAGoX,EAAI,GAC3B,CACI,SAASsiE,OAAO/4E,EAAGg5E,EAAMC,EAAMC,EAAQC,GAOrC,QANe96E,IAAX66E,QAAmC76E,IAAX86E,IAC1BD,EAASF,EACTG,EAASF,EACTD,EAAO,EACPC,EAAO,GAELA,EAAOD,EAAM,CACf,IAAII,EAAQH,EACZA,EAAOD,EACPA,EAAOI,CACf,CACM,GAAIp5E,GAAKg5E,EACP,OAAOE,EAET,GAAIl5E,GAAKi5E,EACP,OAAOE,EAET,IAIIj5E,EAJAs0B,EAAOykD,IAASD,EAAO,GAAKh5E,EAAIg5E,IAASC,EAAOD,GACpD,IAAKE,EAAOvgF,OACV,OAAOugF,GAAUC,EAASD,GAAU1kD,EAGtC,IAAI5hB,EAAMsmE,EAAOvgF,OACboc,EAAMF,iBAAiB,UAAWjC,GACtC,IAAK1S,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB6U,EAAI7U,GAAKg5E,EAAOh5E,IAAMi5E,EAAOj5E,GAAKg5E,EAAOh5E,IAAMs0B,EAEjD,OAAOzf,CACb,CACI,SAASwB,OAAOH,EAAKF,GAUnB,QATY7X,IAAR6X,SACU7X,IAAR+X,GACFA,EAAM,EACNF,EAAM,IAENA,EAAME,EACNA,OAAM/X,IAGN6X,EAAIvd,OAAQ,CACd,IAAIuH,EACA0S,EAAMsD,EAAIvd,OACTyd,IACHA,EAAMvB,iBAAiB,UAAWjC,IAEpC,IAAImC,EAAMF,iBAAiB,UAAWjC,GAClCymE,EAAMhjE,OAAOE,SACjB,IAAKrW,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB6U,EAAI7U,GAAKkW,EAAIlW,GAAKm5E,GAAOnjE,EAAIhW,GAAKkW,EAAIlW,IAExC,OAAO6U,CACf,CAKM,YAJY1W,IAAR+X,IACFA,EAAM,GAGDA,EADIC,OAAOE,UACGL,EAAME,EACjC,CACI,SAASkjE,WAAWzoD,EAAQ0oD,EAAYC,EAAa76D,GACnD,IAAIze,EACA0S,EAAMie,EAAOl4B,OACbgiB,EAAO2lB,UAAUtN,aACrBrY,EAAKykB,cAAczgB,EAAQ/L,GAC3B,IACI6mE,EACAC,EAFAC,EAAiB,CAAC,EAAG,GAGzB,IAAKz5E,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBu5E,EAAgBF,GAAcA,EAAWr5E,GAAKq5E,EAAWr5E,GAAKy5E,EAC9DD,EAAiBF,GAAeA,EAAYt5E,GAAKs5E,EAAYt5E,GAAKy5E,EAClEh/D,EAAK8kB,YAAY5O,EAAO3wB,GAAG,GAAI2wB,EAAO3wB,GAAG,GAAIw5E,EAAe,GAAK7oD,EAAO3wB,GAAG,GAAIw5E,EAAe,GAAK7oD,EAAO3wB,GAAG,GAAIu5E,EAAc,GAAK5oD,EAAO3wB,GAAG,GAAIu5E,EAAc,GAAK5oD,EAAO3wB,GAAG,GAAIA,GAAG,GAExL,OAAOya,CACb,CACI,SAASi/D,mBAAmBhrD,KAAMhkB,KAAMivE,UAEtC,SAASC,KAAKC,GACZ,OAAOA,CACf,CACM,IAAKnrD,KAAKnG,WAAWk4B,aAAaigB,eAChC,OAAOkZ,KAET,IAAIrjE,IAAM7L,KAAK5T,EACXgjF,cAAgB,qBAAqBvvE,KAAKgM,KAC1CwjE,cAAyC,IAA1BxjE,IAAI8I,QAAQ,UAC3B26D,SAAWtrD,KAAKhkB,KAAKqR,GACrBrN,UACAurE,cACAn2B,QACAoH,OACAgvB,aAAeP,SACnBO,aAAaC,MAAQzrD,KAAKhkB,KAAKob,GAC/Bo0D,aAAaE,YAAcF,aAAa9qC,eACxCz2C,OAAOe,eAAewgF,aAAc,QAAS,CAC3C7gF,IAAK,WACH,OAAO6gF,aAAal4E,CAC9B,IAEM0sB,KAAKrS,KAAKu3D,cAAgB,EAAIllD,KAAKrS,KAAKkM,WAAW5B,UACnD+H,KAAKrS,KAAKw3D,iBAAmB,EAC7B,IAAIwG,QAAU3rD,KAAKhkB,KAAKkT,GAAK8Q,KAAKrS,KAAKkM,WAAW5B,UAC9C2zD,SAAW5rD,KAAKhkB,KAAKzI,GAAKysB,KAAKrS,KAAKkM,WAAW5B,UAC/C3pB,MAAQ0xB,KAAKhkB,KAAKipD,GAAKjlC,KAAKhkB,KAAKipD,GAAK,EACtC12D,OAASyxB,KAAKhkB,KAAK6vB,GAAK7L,KAAKhkB,KAAK6vB,GAAK,EACvC7kC,KAAOg5B,KAAKhkB,KAAKob,GACjBy0D,OACAC,QACAC,QACAC,SACAC,OACAC,QACAC,UACAC,SACAC,OACAC,kBACAj9E,SACAk9E,SACAC,YACA11C,MACA21C,UACAC,SACAlzB,KACAkyB,YACAiB,eACAC,aAEAC,oBAAsBC,KAAK,oCAAsCjlE,IAAM,0BAA0B,GACjGklE,QAAU9B,SAAS/7C,GAAKlzB,KAAK1R,EAAEP,OAAS,EACxCijF,QAAU5jF,KAAK4S,OAAyB,IAAjB5S,KAAK4S,KAAK8hD,GACjCmvB,OAAS,SAAgBC,EAAMC,GACjC,IAAIC,EACAxgE,EACAygE,EAAYjkF,KAAK6gC,GAAGlgC,OAASX,KAAK6gC,GAAGlgC,OAAS,EAC9CujF,EAAYrnE,iBAAiB,UAAWonE,GAExCtpB,EAAatnD,KAAK2K,MADf,EACqBuP,MAG5B,IAFAy2D,EAAU,EACVxgE,EAAI,EACGwgE,EAAUrpB,GAAY,CAE3B,IAAKn3C,EAAI,EAAGA,EAAIygE,EAAWzgE,GAAK,EAC9B0gE,EAAU1gE,KAAOugE,EAAY,EAANA,EAAU1lE,OAAOE,SAG1CylE,GAAW,CACrB,CAEQ,IAAIG,EAbG,EAaO52D,KACViP,EAAO2nD,EAAU9wE,KAAK2K,MAAMmmE,GAC5BpnE,EAAMF,iBAAiB,UAAWonE,GACtC,GAAIA,EAAY,EAAG,CACjB,IAAKzgE,EAAI,EAAGA,EAAIygE,EAAWzgE,GAAK,EAC9BzG,EAAIyG,GAAKxjB,KAAK6gC,GAAGrd,GAAK0gE,EAAU1gE,KAAOugE,EAAY,EAANA,EAAU1lE,OAAOE,UAAYie,EAI5E,OAAOzf,CACjB,CACQ,OAAO/c,KAAK6gC,GAAKqjD,EAAU,KAAOH,EAAY,EAANA,EAAU1lE,OAAOE,UAAYie,CAC7E,EAAQp5B,KAAKpD,MAYP,SAASokF,eAAe1nF,EAAM+wB,GAC5B,OAAOg1D,OAAO/lF,EAAM+wB,GAAU,EACtC,CACM,SAAS42D,gBAAgB3nF,EAAM+wB,GAC7B,OAAOk1D,QAAQjmF,EAAM+wB,GAAU,EACvC,CAhBU20D,aAAaK,SACfA,OAASL,aAAaK,OAAOr/E,KAAKg/E,cAClCM,QAAUD,QAERL,aAAaO,UACfA,QAAUP,aAAaO,QAAQv/E,KAAKg/E,cACpCQ,SAAWD,SAETP,aAAaS,SACfA,OAAST,aAAaS,OAAOz/E,KAAKg/E,eAQhCpiF,KAAKs3C,iBACPgrC,YAActiF,KAAKs3C,eAAel0C,KAAKpD,OAErCA,KAAKskF,oBACPf,eAAiBvjF,KAAKskF,kBAAkBlhF,KAAKpD,OAE/C,IAAIukB,KAAOqS,KAAKrS,KAAKkM,WAAWd,iBAAiBvsB,KAAKwzB,KAAKrS,KAAKkM,WAAWd,kBAiJvEpC,KACAg3D,SACArlF,MACAyN,KACA63E,UACAC,UACAC,cAtJJ,SAASC,OAAOC,EAAOC,GACrB,IAAIC,EAAO,CAACD,EAAM,GAAKD,EAAM,GAAIC,EAAM,GAAKD,EAAM,GAAIC,EAAM,GAAKD,EAAM,IACnEG,EAAQ1xE,KAAK8wB,MAAM2gD,EAAK,GAAIzxE,KAAKyK,KAAKgnE,EAAK,GAAKA,EAAK,GAAKA,EAAK,GAAKA,EAAK,KAAOlmE,UAEpF,MAAO,EADIvL,KAAK8wB,MAAM2gD,EAAK,GAAIA,EAAK,IAAMlmE,UAC7BmmE,EAAO,EAC5B,CACM,SAASC,QAAQh9E,EAAGg5E,EAAMC,EAAMgE,EAAMC,GACpC,OAAOC,UAAU9F,WAAYr3E,EAAGg5E,EAAMC,EAAMgE,EAAMC,EAC1D,CACM,SAASE,OAAOp9E,EAAGg5E,EAAMC,EAAMgE,EAAMC,GACnC,OAAOC,UAAU/F,UAAWp3E,EAAGg5E,EAAMC,EAAMgE,EAAMC,EACzD,CACM,SAASG,KAAKr9E,EAAGg5E,EAAMC,EAAMgE,EAAMC,GACjC,OAAOC,UAAU7F,aAAct3E,EAAGg5E,EAAMC,EAAMgE,EAAMC,EAC5D,CACM,SAASC,UAAUriE,EAAI9a,EAAGg5E,EAAMC,EAAMgE,EAAMC,QAC7B7+E,IAAT4+E,GACFA,EAAOjE,EACPkE,EAAOjE,GAEPj5E,GAAKA,EAAIg5E,IAASC,EAAOD,GAEvBh5E,EAAI,EACNA,EAAI,EACKA,EAAI,IACbA,EAAI,GAEN,IAAIs9B,EAAOxiB,EAAG9a,GACd,GAAI62E,sBAAsBoG,GAAO,CAC/B,IAAIK,EACAC,EAASN,EAAKtkF,OACdoc,EAAMF,iBAAiB,UAAW0oE,GACtC,IAAKD,EAAO,EAAGA,EAAOC,EAAQD,GAAQ,EACpCvoE,EAAIuoE,IAASJ,EAAKI,GAAQL,EAAKK,IAAShgD,EAAO2/C,EAAKK,GAEtD,OAAOvoE,CACjB,CACQ,OAAQmoE,EAAOD,GAAQ3/C,EAAO2/C,CACtC,CACM,SAASO,WAAWj4D,GAClB,IAAI+3D,EAEAvvD,EACAyL,EAFA+jD,EAAS3yE,KAAK1R,EAAEP,OAGpB,GAAKiS,KAAK1R,EAAEP,QAA+B,iBAAdiS,KAAK1R,EAAE,GAMlC,GAFA60B,GAAQ,GACRxI,GAAQqJ,KAAKrS,KAAKkM,WAAW5B,WAClBjc,KAAK1R,EAAE,GAAG8G,EACnB+tB,EAAQ,EACRyL,EAAU5uB,KAAK1R,EAAE,GAAG8G,MACf,CACL,IAAKs9E,EAAO,EAAGA,EAAOC,EAAS,EAAGD,GAAQ,EAAG,CAC3C,GAAI/3D,IAAS3a,KAAK1R,EAAEokF,GAAMt9E,EAAG,CAC3B+tB,EAAQuvD,EAAO,EACf9jD,EAAU5uB,KAAK1R,EAAEokF,GAAMt9E,EACvB,KAChB,CAAqB,GAAIulB,EAAO3a,KAAK1R,EAAEokF,GAAMt9E,GAAKulB,EAAO3a,KAAK1R,EAAEokF,EAAO,GAAGt9E,EAAG,CACzDulB,EAAO3a,KAAK1R,EAAEokF,GAAMt9E,EAAI4K,KAAK1R,EAAEokF,EAAO,GAAGt9E,EAAIulB,GAC/CwI,EAAQuvD,EAAO,EACf9jD,EAAU5uB,KAAK1R,EAAEokF,EAAO,GAAGt9E,IAE3B+tB,EAAQuvD,EAAO,EACf9jD,EAAU5uB,KAAK1R,EAAEokF,GAAMt9E,GAEzB,KAChB,CACA,EAC0B,IAAV+tB,IACFA,EAAQuvD,EAAO,EACf9jD,EAAU5uB,KAAK1R,EAAEokF,GAAMt9E,EAErC,MA7BU+tB,EAAQ,EACRyL,EAAU,EA8BZ,IAAIikD,EAAQ,CAAA,EAGZ,OAFAA,EAAM1vD,MAAQA,EACd0vD,EAAMl4D,KAAOiU,EAAU5K,KAAKrS,KAAKkM,WAAW5B,UACrC42D,CACf,CACM,SAAS5oF,IAAI8kC,GACX,IAAI8jD,EACAH,EACAC,EACJ,IAAK3yE,KAAK1R,EAAEP,QAA+B,iBAAdiS,KAAK1R,EAAE,GAClC,MAAM,IAAIrB,MAAM,yCAA2C8hC,GAE7DA,GAAO,EACP8jD,EAAQ,CACNl4D,KAAM3a,KAAK1R,EAAEygC,GAAK35B,EAAI4uB,KAAKrS,KAAKkM,WAAW5B,UAC3C3vB,MAAO,IAET,IAAI6d,EAAMlc,OAAOgC,UAAU9B,eAAerB,KAAKkT,KAAK1R,EAAEygC,GAAM,KAAO/uB,KAAK1R,EAAEygC,GAAK15B,EAAI2K,KAAK1R,EAAEygC,EAAM,GAAGtiC,EAEnG,IADAkmF,EAASxoE,EAAIpc,OACR2kF,EAAO,EAAGA,EAAOC,EAAQD,GAAQ,EACpCG,EAAMH,GAAQvoE,EAAIuoE,GAClBG,EAAMvmF,MAAMomF,GAAQvoE,EAAIuoE,GAE1B,OAAOG,CACf,CACM,SAASC,aAAajzD,EAAIkzD,GAIxB,OAHKA,IACHA,EAAM/uD,KAAKrS,KAAKkM,WAAW5B,WAEtB4D,EAAKkzD,CACpB,CACM,SAASC,aAAa59E,EAAG29E,GAOvB,OANK39E,GAAW,IAANA,IACRA,EAAIulB,MAEDo4D,IACHA,EAAM/uD,KAAKrS,KAAKkM,WAAW5B,WAEtB7mB,EAAI29E,CACnB,CACM,SAASzJ,WAAWa,GAClB1+D,OAAOwnE,WAAWC,SAAW/I,EACrC,CACM,SAASj0B,mBACP,OAAOlyB,KAAKkyB,kBACpB,CACM,SAASi9B,UAAUhxD,EAAMluB,GACvB,MAAqB,iBAAV3H,WACGmH,IAARQ,EACK3H,MAAM6mF,UAAUhxD,GAElB71B,MAAM6mF,UAAUhxD,EAAMluB,GAExB,EACf,CACM,SAASoqB,OAAO8D,EAAMluB,GACpB,MAAqB,iBAAV3H,WACGmH,IAARQ,EACK3H,MAAM+xB,OAAO8D,GAEf71B,MAAM+xB,OAAO8D,EAAMluB,GAErB,EACf,CACM,SAASm/E,cAAcC,GACrB14D,KAA2B,IAApB04D,EAAwB,EAAI5yE,KAAK2K,MAAMuP,KAAO04D,GAAmBA,EACxE/mF,MAAQojF,YAAY/0D,KAC5B,CAQM,IAAIwI,MAAQa,KAAKhkB,KAAK+uB,IAClBukD,aAAetvD,KAAKw3B,YAAax3B,KAAKw3B,UAAUztD,QAChD2iD,OACAwiC,SAAWzyE,KAAK2K,MAAsB,IAAhB3K,KAAKkL,UAC3BkS,WAAamG,KAAKnG,WACtB,SAAS01D,kBAAkBpE,GAGzB,OADA7iF,MAAQ6iF,EACJ/hF,KAAKomF,oBAAsBxvD,KAAKnG,WAAWgV,SAA6B,iBAAlBzlC,KAAK4gC,SACtD1hC,OAEa,iBAAlBc,KAAK4gC,WACP4jD,UAAYxkF,KAAKwkF,UACjBC,UAAYzkF,KAAKykF,UACjBC,cAAgB1kF,KAAK0kF,eAElBrB,YACH12E,KAAOiqB,KAAK20B,eAAe5+C,KAC3B02E,UAAYzsD,KAAK20B,eACjB+3B,SAAW1sD,KAAKrS,KAAK6J,cACrB00D,QAAUO,UAAUP,QAAQ1/E,KAAKigF,WACjCN,UAAYM,UAAUN,UAAU3/E,KAAKigF,WACrCL,SAAWK,UAAUL,SAAS5/E,KAAKigF,WACnCJ,OAASI,UAAUJ,OAAO7/E,KAAKigF,WAC/BjzB,KAAOizB,UAAUjzB,KAAOizB,UAAUjzB,KAAKhtD,KAAKigF,WAAa,KACzDH,kBAAoBF,UAEjBpsE,YACHA,UAAYggB,KAAK20B,eAAe,wBAChC42B,cAAgBvrE,UACZA,YACFwsE,YAAcxsE,UAAUwsE,cAMX,IAAblB,UAAmBl2B,UACrBA,QAAUq3B,UAAU,4BAEjBjwB,SACHA,OAASiwB,UAAU,KAErB6C,aAAetvD,KAAKw3B,YAAax3B,KAAKw3B,UAAUztD,WAC9B2iD,SAChBA,OAAS1sB,KAAKw3B,UAAU,GAAG7C,gBAE7Bh+B,KAAOvtB,KAAKukB,KAAKygB,cAAgBhlC,KAAKukB,KAAKkM,WAAW5B,UAClDozD,cACF/F,WAAW4J,SAAWv4D,MAEpBy0D,gBACFuC,SAAWhB,eAAeh2D,OAE5Bk2D,sBACAzjF,KAAKomF,kBAAoBxvD,KAAKnG,WAAWgV,QAIzC+9C,aAAeA,aAAa5iD,WAAa09C,UAAUC,MAAQiF,aAAat5E,EAAIs5E,aAEpF,CAGM,OADA2C,kBAAkBE,yBAA2B,CAAClE,cAAeiB,YAAa71D,KAAMg3D,SAAUhC,QAASC,SAAUt9E,MAAOC,OAAQvH,KAAM8kF,QAASE,SAAUC,OAAQI,OAAQC,kBAAmBJ,QAASC,UAAW3yB,KAAMnqD,SAAUk9E,SAAUz1C,MAAO41C,SAAUK,QAASC,OAAQC,OAAQO,eAAgBC,gBAAiB9/D,KAAMogE,OAAQK,QAASI,OAAQC,KAAMG,WAAY3oF,IAAK8P,KAAM63E,UAAWC,UAAWC,cAAegB,aAAcE,aAAc98B,iBAAkBi9B,UAAW90D,OAAQ+0D,cAAejwD,MAAOtF,YACle01D,iBACb,CAII,OAHAp7D,GAAG62D,mBAAqBA,mBACxB72D,GAAGs7D,yBAA2B,CAAC/zE,OAAQ1C,SAAUkY,eAAgB42D,MAAOC,OAAQK,QAASne,IAAK+e,QAASC,QAASC,QAASC,QAASC,QAASC,MAAOG,mBAAoBC,iBAAkBC,mBAAoBI,UAAWE,SAAUE,SAAUC,OAAQxiE,OAAQ+iE,WAAY1C,eACvQ7zD,GAAGyI,WAAaA,WACTzI,EACX,CA7qB0B,GA+qBpBu7D,YAAc,WAChB,IAAIv7D,EAAK,CACTA,gBAEA,SAAyBxC,GACvB,IAAIg+D,EAAa,EACbC,EAAY,GAuBhBj+D,EAAU4G,SAASf,cAAgBk9B,wBAAwB/iC,EAAU4G,UACrE5G,EAAU4G,SAASsB,WAAWd,iBAAiB9B,oBAAoBtF,EAAU4G,UAC7E5G,EAAU4G,SAASsB,WAAWg2D,eAxB9B,WACEF,GAAc,CACtB,EAuBMh+D,EAAU4G,SAASsB,WAAWi2D,cAtB9B,WAEqB,IADnBH,GAAc,IAUhB,WACE,IAAIr+E,EACA0S,EAAM4rE,EAAU7lF,OACpB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBs+E,EAAUt+E,GAAG+yB,UAEfurD,EAAU7lF,OAAS,CAC3B,CAfUgmF,EAEV,EAkBMp+D,EAAU4G,SAASsB,WAAWm2D,2BAjB9B,SAAoCC,IACI,IAAlCL,EAAUj/D,QAAQs/D,IACpBL,EAAUn8E,KAAKw8E,EAEzB,CAcA,GACI,OAhCA97D,EAAGyI,WAAairD,kBAAkBjrD,WAgC3BzI,CACX,CApCoB,GAsCd+7D,qBAAuB,WACzB,SAASC,EAAc32B,EAAMx9C,GAC3B5S,KAAKgnF,MAAQ52B,EACbpwD,KAAKinF,MAAQr0E,CACnB,CAoCI,OAnCA/R,OAAOe,eAAemlF,EAAclkF,UAAW,WAAY,CACzDtB,IAAK,WAIH,OAHIvB,KAAKgnF,MAAMzyE,KAAKrT,GAClBlB,KAAKgnF,MAAMzyE,KAAK6xB,WAEXpmC,KAAKgnF,MAAMzyE,IAC1B,IAEI1T,OAAOe,eAAemlF,EAAclkF,UAAW,cAAe,CAC5DtB,IAAK,WAIH,OAHIvB,KAAKgnF,MAAM78E,GAAGjJ,GAChBlB,KAAKgnF,MAAM78E,GAAGi8B,WAES,IAAlBpmC,KAAKgnF,MAAM78E,GAAGD,CAC7B,IAEsB,SAAqBshD,GACrC,IACItjD,EADAg/E,EAAmB/pE,iBAAiBquC,EAAY4D,SAASzuD,QAEzDia,EAAM4wC,EAAY4D,SAASzuD,OAC/B,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBg/E,EAAiBh/E,GAAK,IAAI6+E,EAAcv7B,EAAY4D,SAASlnD,GAAIsjD,EAAY1nC,gBAAgB5b,IAY/F,OAVmB,SAAsBtK,GAEvC,IADAsK,EAAI,EACGA,EAAI0S,GAAK,CACd,GAAI4wC,EAAY1nC,gBAAgB5b,GAAG8lB,KAAOpwB,EACxC,OAAOspF,EAAiBh/E,GAE1BA,GAAK,CACf,CACQ,OAAO,IACf,CAEA,CAEA,CAzC6B,GA2CvBi/E,4BAA8B,WAChC,IAAIC,EAA6B,CAC/BvmD,GAAI,EACJ32B,EAAG,EACHo7B,KAAM,GAEJ+hD,EAA+B,CACjCxmD,GAAI,CAAC,EAAG,EAAG,GACX32B,EAAG,CAAC,EAAG,EAAG,GACVo7B,KAAM,GAER,SAASgiD,EAAiBC,EAAiB1F,EAAUnlF,GACnDmE,OAAOe,eAAe2lF,EAAiB,WAAY,CACjDhmF,IAAK,WACH,OAAOsgF,EAASyC,kBAAkBzC,EAASt9D,KAAK4J,aAC1D,IAEMo5D,EAAgB5D,QAAU9B,EAASzgD,UAAYygD,EAASzgD,UAAUzgC,OAAS,EAC3E4mF,EAAgB1qF,IAAM,SAAU2qC,GAC9B,IAAK+/C,EAAgB5D,QACnB,OAAO,EAET,IAAIzkF,EAAQ,GAEVA,EADE,MAAO2iF,EAASzgD,UAAUoG,EAAM,GAC1Bq6C,EAASzgD,UAAUoG,EAAM,GAAGv/B,EAC3B,MAAO45E,EAASzgD,UAAUoG,EAAM,GACjCq6C,EAASzgD,UAAUoG,EAAM,GAAGnoC,EAE5BwiF,EAASzgD,UAAUoG,EAAM,GAAGv/B,EAEtC,IAAIu/E,EAAqB,mBAAT9qF,EAA4B,IAAIoW,OAAO5T,GAAS2B,OAAOkH,OAAO,CAAA,EAAI7I,GAGlF,OAFAsoF,EAAUj6D,KAAOs0D,EAASzgD,UAAUoG,EAAM,GAAGx/B,EAAI65E,EAASjrD,KAAKrS,KAAKkM,WAAW5B,UAC/E24D,EAAUtoF,MAAiB,mBAATxC,EAA4BwC,EAAM,GAAKA,EAClDsoF,CACf,EACMD,EAAgBjF,YAAcT,EAASvqC,eACvCiwC,EAAgBE,YAAc5F,EAAS6F,eACvCH,EAAgBhE,eAAiB1B,EAASyC,kBAC1CiD,EAAgBI,cAAgB9F,EAAS8F,aAC/C,CA+CI,SAASC,IACP,OAAOR,CACb,CACI,OAAO,SAAUvF,GACf,OAAKA,EAGqB,mBAAtBA,EAASjhD,SArDf,SAAyCihD,GAClCA,GAAc,OAAQA,IACzBA,EAAWuF,GAEb,IAAI9hD,EAAO,EAAIu8C,EAASv8C,KACpB7mB,EAAMojE,EAAShhD,GAAKyE,EACpBiiD,EAAkB,IAAIz0E,OAAO2L,GAGjC,OAFA8oE,EAAgBroF,MAAQuf,EACxB6oE,EAAiBC,EAAiB1F,EAAU,kBACrC,WAWL,OAVIA,EAAS3gF,GACX2gF,EAASz7C,WAEX3nB,EAAMojE,EAAS33E,EAAIo7B,EACfiiD,EAAgBroF,QAAUuf,KAC5B8oE,EAAkB,IAAIz0E,OAAO2L,IACbvf,MAAQuf,EACxB8oE,EAAgB,GAAK9oE,EACrB6oE,EAAiBC,EAAiB1F,EAAU,mBAEvC0F,CACf,CACA,CAgCeM,CAAgChG,GA/B3C,SAA2CA,GACpCA,GAAc,OAAQA,IACzBA,EAAWwF,GAEb,IAAI/hD,EAAO,EAAIu8C,EAASv8C,KACpB1qB,EAAMinE,EAASjvE,MAAQivE,EAASjvE,KAAKi7B,GAAKg0C,EAAShhD,GAAGlgC,OACtD4mF,EAAkB1qE,iBAAiB,UAAWjC,GAC9CktE,EAAWjrE,iBAAiB,UAAWjC,GAG3C,OAFA2sE,EAAgBroF,MAAQ4oF,EACxBR,EAAiBC,EAAiB1F,EAAU,oBACrC,WACDA,EAAS3gF,GACX2gF,EAASz7C,WAEX,IAAK,IAAIl+B,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAC5B4/E,EAAS5/E,GAAK25E,EAAS33E,EAAEhC,GAAKo9B,EAC9BiiD,EAAgBr/E,GAAK4/E,EAAS5/E,GAEhC,OAAOq/E,CACf,CACA,CAaaQ,CAAkClG,GALhC+F,CAMf,CACA,CAlGoC,GAoG9BI,6BACK,SAAUpxE,GACf,SAASqxE,EAAcrqF,GACrB,OAAQA,GACN,IAAK,QACL,IAAK,QACL,IAAK,aACL,KAAK,EACH,OAAOqqF,EAAcv6C,MACvB,IAAK,WACL,IAAK,WACL,IAAK,gBACL,IAAK,gBACL,KAAK,GACH,OAAOu6C,EAAc9E,SACvB,IAAK,gBACH,OAAO8E,EAAcC,UACvB,IAAK,gBACH,OAAOD,EAAcE,UACvB,IAAK,WACL,IAAK,WACL,IAAK,gBACL,KAAK,EACH,OAAOF,EAAchiF,SACvB,IAAK,kBACH,OAAOgiF,EAAcG,UACvB,IAAK,kBACH,OAAOH,EAAcI,UACvB,IAAK,kBACH,OAAOJ,EAAcK,UACvB,IAAK,cACL,IAAK,cACL,IAAK,eACL,IAAK,mBACL,KAAK,EACH,OAAOL,EAAc7E,YACvB,IAAK,UACL,IAAK,UACL,KAAK,GACH,OAAO6E,EAAc32B,QACvB,QACE,OAAO,KAEnB,CAgBM,IAAIi3B,EACAC,EACAC,EACAC,EA0CJ,OA5DA7nF,OAAOe,eAAeqmF,EAAe,WAAY,CAC/C1mF,IAAK4lF,4BAA4BvwE,EAAU+J,GAAK/J,EAAUkgC,MAE5Dj2C,OAAOe,eAAeqmF,EAAe,YAAa,CAChD1mF,IAAK4lF,4BAA4BvwE,EAAUkgC,IAAMlgC,EAAU+J,KAE7D9f,OAAOe,eAAeqmF,EAAe,YAAa,CAChD1mF,IAAK4lF,4BAA4BvwE,EAAUggC,MAE7C/1C,OAAOe,eAAeqmF,EAAe,YAAa,CAChD1mF,IAAK4lF,4BAA4BvwE,EAAUigC,MAE7Ch2C,OAAOe,eAAeqmF,EAAe,QAAS,CAC5C1mF,IAAK4lF,4BAA4BvwE,EAAU3O,KAMzC2O,EAAUpP,EACZkhF,EAAoBvB,4BAA4BvwE,EAAUpP,IAE1D+gF,EAAMpB,4BAA4BvwE,EAAU6/B,IAC5C+xC,EAAMrB,4BAA4BvwE,EAAU8/B,IACxC9/B,EAAU+/B,KACZ8xC,EAAMtB,4BAA4BvwE,EAAU+/B,MAGhD91C,OAAOe,eAAeqmF,EAAe,WAAY,CAC/C1mF,IAAK,WACH,OAAIqV,EAAUpP,EACLkhF,IAEF,CAACH,IAAOC,IAAOC,EAAMA,IAAQ,EAC9C,IAEM5nF,OAAOe,eAAeqmF,EAAe,YAAa,CAChD1mF,IAAK4lF,4BAA4BvwE,EAAU6/B,MAE7C51C,OAAOe,eAAeqmF,EAAe,YAAa,CAChD1mF,IAAK4lF,4BAA4BvwE,EAAU8/B,MAE7C71C,OAAOe,eAAeqmF,EAAe,YAAa,CAChD1mF,IAAK4lF,4BAA4BvwE,EAAU+/B,MAE7C91C,OAAOe,eAAeqmF,EAAe,cAAe,CAClD1mF,IAAK4lF,4BAA4BvwE,EAAUqP,KAE7CplB,OAAOe,eAAeqmF,EAAe,UAAW,CAC9C1mF,IAAK4lF,4BAA4BvwE,EAAUyG,KAE7Cxc,OAAOe,eAAeqmF,EAAe,OAAQ,CAC3C1mF,IAAK4lF,4BAA4BvwE,EAAUsP,MAE7CrlB,OAAOe,eAAeqmF,EAAe,WAAY,CAC/C1mF,IAAK4lF,4BAA4BvwE,EAAUuP,MAE7CtlB,OAAOe,eAAeqmF,EAAe,cAAe,CAClD1mF,IAAK4lF,4BAA4BvwE,EAAUu0B,MAEtC88C,CACb,EAGM/8B,yBAA2B,WAC7B,SAASy9B,EAAUp7D,GACjB,IAAIq7D,EAAa,IAAIn8C,OAQrB,YAPapmC,IAATknB,EACevtB,KAAK8jE,MAAMrb,eAAeC,MAAMpR,eAAe/pB,GACrDib,MAAMogD,GAEE5oF,KAAK8jE,MAAMrb,eAAeC,MAChC1R,cAAc4xC,GAEtBA,CACb,CACI,SAASC,EAAW9rE,EAAKwQ,GACvB,IAAIq7D,EAAa5oF,KAAK2oF,UAAUp7D,GAIhC,OAHAq7D,EAAW3rF,MAAM,IAAM,EACvB2rF,EAAW3rF,MAAM,IAAM,EACvB2rF,EAAW3rF,MAAM,IAAM,EAChB+C,KAAK8oF,WAAWF,EAAY7rE,EACzC,CACI,SAAS+lE,EAAQ/lE,EAAKwQ,GACpB,IAAIq7D,EAAa5oF,KAAK2oF,UAAUp7D,GAChC,OAAOvtB,KAAK8oF,WAAWF,EAAY7rE,EACzC,CACI,SAASgsE,EAAahsE,EAAKwQ,GACzB,IAAIq7D,EAAa5oF,KAAK2oF,UAAUp7D,GAIhC,OAHAq7D,EAAW3rF,MAAM,IAAM,EACvB2rF,EAAW3rF,MAAM,IAAM,EACvB2rF,EAAW3rF,MAAM,IAAM,EAChB+C,KAAKgpF,YAAYJ,EAAY7rE,EAC1C,CACI,SAASgmE,EAAUhmE,EAAKwQ,GACtB,IAAIq7D,EAAa5oF,KAAK2oF,UAAUp7D,GAChC,OAAOvtB,KAAKgpF,YAAYJ,EAAY7rE,EAC1C,CACI,SAAS+rE,EAAW74C,EAAQlzB,GAC1B,GAAI/c,KAAK8jE,MAAM1V,WAAapuD,KAAK8jE,MAAM1V,UAAUztD,OAAQ,CACvD,IAAIuH,EACA0S,EAAM5a,KAAK8jE,MAAM1V,UAAUztD,OAC/B,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAK8jE,MAAM1V,UAAUlmD,GAAGugD,eAAeC,MAAM1R,cAAc/G,EAErE,CACM,OAAOA,EAAOgB,kBAAkBl0B,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAAM,EAChE,CACI,SAASisE,EAAY/4C,EAAQlzB,GAC3B,GAAI/c,KAAK8jE,MAAM1V,WAAapuD,KAAK8jE,MAAM1V,UAAUztD,OAAQ,CACvD,IAAIuH,EACA0S,EAAM5a,KAAK8jE,MAAM1V,UAAUztD,OAC/B,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAK8jE,MAAM1V,UAAUlmD,GAAGugD,eAAeC,MAAM1R,cAAc/G,EAErE,CACM,OAAOA,EAAOe,aAAaj0B,EACjC,CACI,SAASimE,EAASjmE,GAChB,IAAI6rE,EAAa,IAAIn8C,OAGrB,GAFAm8C,EAAW5+C,QACXhqC,KAAK8jE,MAAMrb,eAAeC,MAAM1R,cAAc4xC,GAC1C5oF,KAAK8jE,MAAM1V,WAAapuD,KAAK8jE,MAAM1V,UAAUztD,OAAQ,CACvD,IAAIuH,EACA0S,EAAM5a,KAAK8jE,MAAM1V,UAAUztD,OAC/B,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxBlI,KAAK8jE,MAAM1V,UAAUlmD,GAAGugD,eAAeC,MAAM1R,cAAc4xC,GAE7D,OAAOA,EAAW53C,aAAaj0B,EACvC,CACM,OAAO6rE,EAAW53C,aAAaj0B,EACrC,CACI,SAASksE,IACP,MAAO,CAAC,EAAG,EAAG,EAAG,EACvB,CACI,OAAO,SAAUryD,GACf,IAAIsyD,EAOJ,SAAStN,EAAmBh+E,GAC1B,OAAQA,GACN,IAAK,0BACL,IAAK,WACL,KAAK,EACH,OAAOg+E,EAAmB/vB,eAC5B,KAAK,EACL,KAAK,EACL,IAAK,YACL,IAAK,YACL,IAAK,uBACH,OAAOq9B,EACT,KAAK,EACL,IAAK,qBACL,IAAK,UACL,IAAK,UACH,OAAOtN,EAAmBxoB,OAC5B,IAAK,uBACH,OAAOwoB,EAAmB3vB,cAC5B,QACE,OAAO,KAEnB,CACM2vB,EAAmB+M,UAAYA,EAC/B/M,EAAmBoN,YAAcA,EACjCpN,EAAmBkN,WAAaA,EAChClN,EAAmBkH,QAAUA,EAC7BlH,EAAmBiN,WAAaA,EAChCjN,EAAmBmH,UAAYA,EAC/BnH,EAAmBmN,aAAeA,EAClCnN,EAAmBqH,OAASH,EAC5BlH,EAAmBoH,SAAWA,EAC9BpH,EAAmBqN,YAAcA,EACjCrN,EAAmB9yB,iBAAmBlyB,EAAKkyB,iBAAiB1lD,KAAKwzB,GACjEglD,EAAmB9X,MAAQltC,EAE3B,IAAIuyD,EAAwBruE,cAD5BouE,EAAqBlB,6BAA6BpxD,EAAK6xB,eAAeC,OACR,eAuC9D,OAtCA7nD,OAAOuoF,iBAAiBxN,EAAoB,CAC1CsK,UAAW,CACT3kF,IAAK,WACH,OAAOq1B,EAAKw3B,UAAUztD,MAClC,GAEQ2iD,OAAQ,CACN/hD,IAAK,WACH,OAAOq1B,EAAKw3B,UAAU,GAAG7C,cACrC,GAEQ43B,SAAUroE,cAAcouE,EAAoB,YAC5Cx7C,MAAO5yB,cAAcouE,EAAoB,SACzCjjF,SAAU6U,cAAcouE,EAAoB,YAC5C53B,QAASx2C,cAAcouE,EAAoB,WAC3C9F,YAAa+F,EACbE,aAAcF,EACdvyE,UAAW,CACTrV,IAAK,WACH,OAAO2nF,CACnB,GAEQtF,OAAQ,CACNriF,IAAK,WACH,OAAOq1B,EAAKkxB,SACxB,KAGM8zB,EAAmB0N,UAAY1yD,EAAKhkB,KAAKmT,GACzC61D,EAAmB7lD,MAAQa,EAAKhkB,KAAK+uB,IACrCi6C,EAAmBx7E,OAASw2B,EAAKhkB,KAAKuR,MACtCy3D,EAAmBz2E,OAA0B,IAAjByxB,EAAKhkB,KAAKqR,GAAW2S,EAAKhkB,KAAK8N,EAAI,IAC/Dk7D,EAAmB12E,MAAyB,IAAjB0xB,EAAKhkB,KAAKqR,GAAW2S,EAAKhkB,KAAK2vC,EAAI,IAC9Dq5B,EAAmB2G,QAAU3rD,EAAKhkB,KAAKkT,GAAK8Q,EAAKrS,KAAKkM,WAAW5B,UACjE+sD,EAAmB4G,SAAW5rD,EAAKhkB,KAAKzI,GAAKysB,EAAKrS,KAAKkM,WAAW5B,UAClE+sD,EAAmByG,MAAQzrD,EAAKhkB,KAAKob,GACrC4tD,EAAmBnwB,sBA/EnB,SAAgCD,GAC9BowB,EAAmBxrB,KAAO,IAAI02B,qBAAqBt7B,EAAa50B,EACxE,EA8EMglD,EAAmBhwB,yBA7EnB,SAAmChC,GACjCgyB,EAAmBxoB,OAASxJ,CACpC,EA4EagyB,CACb,CACA,CA5JiC,GA8J3B2N,qBACK,SAAUC,EAAmBC,GAClC,OAAO,SAAUhrE,GAEf,OADAA,OAAcpY,IAARoY,EAAoB,EAAIA,IACnB,EACF+qE,EAEFC,EAAoBhrE,EAAM,EACzC,CACA,EAGMirE,kBACK,SAAUC,EAAchC,GAC7B,IAAI6B,EAAoB,CACtBnH,MAAOsH,GAST,OAPA,SAAwBlrE,GAEtB,OADAA,OAAcpY,IAARoY,EAAoB,EAAIA,IACnB,EACF+qE,EAEF7B,EAAclpE,EAAM,EACnC,CAEA,EAGM0sC,2BAA6B,WAkC/B,SAASy+B,EAAqBh3E,EAAMqsC,EAAU0oC,EAAe/wD,GAC3D,SAASizD,EAAejsF,GAItB,IAHA,IAAIgsD,EAAUh3C,EAAKi3C,GACf3hD,EAAI,EACJ0S,EAAMgvC,EAAQjpD,OACXuH,EAAI0S,GAAK,CACd,GAAIhd,IAASgsD,EAAQ1hD,GAAG8lB,IAAMpwB,IAASgsD,EAAQ1hD,GAAG4hF,IAAMlsF,IAASgsD,EAAQ1hD,GAAG63C,GAC1E,OAAsB,IAAlB6J,EAAQ1hD,GAAG+b,GACN6lC,EAAe5hD,GAEjB4hD,EAAe5hD,KAExBA,GAAK,CACf,CACQ,MAAM,IAAIrI,KAClB,CACM,IAEIqI,EAFA6hF,EAAiBR,qBAAqBM,EAAgBlC,GACtD79B,EAAiB,GAEjBlvC,EAAMhI,EAAKi3C,GAAGlpD,OAClB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACF,IAAlB0K,EAAKi3C,GAAG3hD,GAAG+b,GACb6lC,EAAez/C,KAAKu/E,EAAqBh3E,EAAKi3C,GAAG3hD,GAAI+2C,EAAS6K,eAAe5hD,GAAI+2C,EAAS6K,eAAe5hD,GAAGy/E,cAAe/wD,IAE3HkzB,EAAez/C,KAAK2/E,EAAqB/qC,EAAS6K,eAAe5hD,GAAI0K,EAAKi3C,GAAG3hD,GAAG+b,GAAI2S,EAAMmzD,IAyB9F,MAtBgB,uBAAZn3E,EAAKk3E,IACPjpF,OAAOe,eAAeioF,EAAgB,QAAS,CAC7CtoF,IAAK,WACH,OAAOuoD,EAAe,IAClC,IAGMjpD,OAAOuoF,iBAAiBS,EAAgB,CACtCI,cAAe,CACb1oF,IAAK,WACH,OAAOqR,EAAKs3E,EACxB,GAEQ7H,MAAO,CACLnjF,MAAO0T,EAAKob,IAEd25D,cAAe,CACbzoF,MAAO6qF,KAGXF,EAAeM,QAAsB,IAAZv3E,EAAKw3E,GAC9BP,EAAejG,OAASiG,EAAeM,QAChCN,CACb,CACI,SAASG,EAAqB/4E,EAASvU,EAAMk6B,EAAM+wD,GACjD,IAAI0C,EAAqBlD,4BAA4Bl2E,EAAQzJ,GAU7D,OAHIyJ,EAAQzJ,EAAE8iF,kBACZr5E,EAAQzJ,EAAE8iF,iBAAiBZ,kBAAkB,GAAI/B,IAPnD,WACE,OAAa,KAATjrF,EACKk6B,EAAKrS,KAAK6J,cAAcnd,EAAQzJ,EAAE0C,GAEpCmgF,GACf,CAKA,CACI,MAjGS,CACP1+B,uBAEF,SAAgC/0B,EAAM+wD,GACpC,GAAI/wD,EAAK41B,eAAgB,CACvB,IAEItkD,EAFA4hD,EAAiB,GACjBygC,EAAc3zD,EAAKhkB,KAAKi3C,GAExBjvC,EAAMgc,EAAK41B,eAAe1C,eAAenpD,OAC7C,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB4hD,EAAez/C,KAAKu/E,EAAqBW,EAAYriF,GAAI0uB,EAAK41B,eAAe1C,eAAe5hD,GAAIy/E,EAAe/wD,IAEjH,IAAIgzB,EAAUhzB,EAAKhkB,KAAKi3C,IAAM,GAC1BggC,EAAiB,SAAwBjsF,GAG3C,IAFAsK,EAAI,EACJ0S,EAAMgvC,EAAQjpD,OACPuH,EAAI0S,GAAK,CACd,GAAIhd,IAASgsD,EAAQ1hD,GAAG8lB,IAAMpwB,IAASgsD,EAAQ1hD,GAAG4hF,IAAMlsF,IAASgsD,EAAQ1hD,GAAG63C,GAC1E,OAAO+J,EAAe5hD,GAExBA,GAAK,CACjB,CACU,OAAO,IACjB,EAMQ,OALArH,OAAOe,eAAeioF,EAAgB,gBAAiB,CACrDtoF,IAAK,WACH,OAAOqoD,EAAQjpD,MAC3B,IAEekpF,CACf,CACM,OAAO,IACb,EAkEA,CAnGmC,GAqG7BW,mBACK,SAA8B/hD,EAAOgiD,EAAM9C,GAChD,IAAIpzE,EAAOk2E,EAAKhoD,GAChB,SAAS+mD,EAAkB/qE,GACzB,MAAY,UAARA,GAA2B,UAARA,GAA2B,SAARA,GAA0B,SAARA,GAA0B,sBAARA,GAAuC,IAARA,EACpG+qE,EAAkB7mE,KAEpB,IACf,CACM,IAAIonE,EAAiBR,qBAAqBC,EAAmB7B,GAmC7D,OAlCApzE,EAAK+1E,iBAAiBZ,kBAAkB,OAAQK,IAChDlpF,OAAOuoF,iBAAiBI,EAAmB,CACzC7mE,KAAM,CACJphB,IAAK,WAIH,OAHIgT,EAAKrT,GACPqT,EAAK6xB,WAEA7xB,CACnB,GAEQk0B,MAAO,CACLlnC,IAAK,WAIH,OAHIgT,EAAKrT,GACPqT,EAAK6xB,WAEA7xB,CACnB,GAEQ8tE,MAAO,CACLnjF,MAAOupC,EAAMza,IAEf+xB,GAAI,CACF7gD,MAAOupC,EAAMsX,IAEf2qC,cAAe,CACbxrF,MAAOupC,EAAMsX,IAEf+pC,GAAI,CACF5qF,MAAOupC,EAAMqhD,IAEfnC,cAAe,CACbzoF,MAAOyoF,KAGJ6B,CACb,EAGMp+B,yBAA2B,WAC7B,SAASu/B,EAAgBtmE,EAAQomE,EAAM9C,GACrC,IACIz/E,EADA6U,EAAM,GAENnC,EAAMyJ,EAASA,EAAO1jB,OAAS,EACnC,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACH,OAAjBmc,EAAOnc,GAAG+b,GACZlH,EAAI1S,KAAKugF,EAAsBvmE,EAAOnc,GAAIuiF,EAAKviF,GAAIy/E,IACzB,OAAjBtjE,EAAOnc,GAAG+b,GACnBlH,EAAI1S,KAAKwgF,EAAqBxmE,EAAOnc,GAAIuiF,EAAKviF,GAAIy/E,IACxB,OAAjBtjE,EAAOnc,GAAG+b,GACnBlH,EAAI1S,KAAKygF,EAAuBzmE,EAAOnc,GAAIuiF,EAAKviF,GAAIy/E,IAC1B,OAAjBtjE,EAAOnc,GAAG+b,GACnBlH,EAAI1S,KAAK0gF,EAAqB1mE,EAAOnc,GAAIuiF,EAAKviF,GAAIy/E,IACxB,OAAjBtjE,EAAOnc,GAAG+b,KAEO,OAAjBI,EAAOnc,GAAG+b,GACnBlH,EAAI1S,KAAK2gF,EAAwB3mE,EAAOnc,GAAIuiF,EAAKviF,GAAIy/E,IAC3B,OAAjBtjE,EAAOnc,GAAG+b,GACnBlH,EAAI1S,KAAK4gF,EAAqB5mE,EAAOnc,GAAIuiF,EAAKviF,GAAIy/E,IACxB,OAAjBtjE,EAAOnc,GAAG+b,GACnBlH,EAAI1S,KAAKmgF,mBAAmBnmE,EAAOnc,GAAIuiF,EAAKviF,GAAIy/E,IACtB,OAAjBtjE,EAAOnc,GAAG+b,GACnBlH,EAAI1S,KAAK6gF,EAAqB7mE,EAAOnc,GAAIuiF,EAAKviF,GAAIy/E,IACxB,OAAjBtjE,EAAOnc,GAAG+b,GACnBlH,EAAI1S,KAAK8gF,EAAwB9mE,EAAOnc,GAAIuiF,EAAKviF,GAAIy/E,IAC3B,OAAjBtjE,EAAOnc,GAAG+b,GACnBlH,EAAI1S,KAAK+gF,EAAyB/mE,EAAOnc,GAAIuiF,EAAKviF,GAAIy/E,IAC5B,OAAjBtjE,EAAOnc,GAAG+b,GACnBlH,EAAI1S,KAAKghF,EAA6BhnE,EAAOnc,GAAIuiF,EAAKviF,GAAIy/E,IAE1D5qE,EAAI1S,KAAKihF,EAAwBjnE,EAAOnc,GAAIuiF,EAAKviF,MAGrD,OAAO6U,CACb,CA0BI,SAAS6tE,EAAsBniD,EAAOgiD,EAAM9C,GAC1C,IAAI6B,EAAoB,SAA4BtqF,GAClD,OAAQA,GACN,IAAK,qBACL,IAAK,WACL,KAAK,EACH,OAAOsqF,EAAkBx9B,QAI3B,QACE,OAAOw9B,EAAkB5yE,UAErC,EACM4yE,EAAkB7B,cAAgB4B,qBAAqBC,EAAmB7B,GAC1E,IAAI37B,EAxCN,SAAkCvjB,EAAOgiD,EAAM9C,GAC7C,IAAI4D,EACA/B,EAAoB,SAA4BtqF,GAGlD,IAFA,IAAIgJ,EAAI,EACJ0S,EAAM2wE,EAAW5qF,OACduH,EAAI0S,GAAK,CACd,GAAI2wE,EAAWrjF,GAAGm6E,QAAUnjF,GAASqsF,EAAWrjF,GAAG4hF,KAAO5qF,GAASqsF,EAAWrjF,GAAGwiF,gBAAkBxrF,GAASqsF,EAAWrjF,GAAG63C,KAAO7gD,GAASqsF,EAAWrjF,GAAGy5B,MAAQziC,EAC9J,OAAOqsF,EAAWrjF,GAEpBA,GAAK,CACf,CACQ,MAAqB,iBAAVhJ,EACFqsF,EAAWrsF,EAAQ,GAErB,IACf,EACMsqF,EAAkB7B,cAAgB4B,qBAAqBC,EAAmB7B,GAC1E4D,EAAaZ,EAAgBliD,EAAM3jB,GAAI2lE,EAAK3lE,GAAI0kE,EAAkB7B,eAClE6B,EAAkBS,cAAgBsB,EAAW5qF,OAC7C,IAAIuoF,EAAqBsC,EAA0B/iD,EAAM3jB,GAAG2jB,EAAM3jB,GAAGnkB,OAAS,GAAI8pF,EAAK3lE,GAAG2lE,EAAK3lE,GAAGnkB,OAAS,GAAI6oF,EAAkB7B,eAIjI,OAHA6B,EAAkB5yE,UAAYsyE,EAC9BM,EAAkBkB,cAAgBjiD,EAAMgjD,IACxCjC,EAAkBnH,MAAQ55C,EAAMza,GACzBw7D,CACb,CAgBoBkC,CAAyBjjD,EAAOgiD,EAAMjB,EAAkB7B,eAClEuB,EAAqBsC,EAA0B/iD,EAAM3jB,GAAG2jB,EAAM3jB,GAAGnkB,OAAS,GAAI8pF,EAAK3lE,GAAG2lE,EAAK3lE,GAAGnkB,OAAS,GAAI6oF,EAAkB7B,eAajI,OAZA6B,EAAkBx9B,QAAUA,EAC5Bw9B,EAAkB5yE,UAAYsyE,EAC9BroF,OAAOe,eAAe4nF,EAAmB,QAAS,CAChDjoF,IAAK,WACH,OAAOknC,EAAMza,EACvB,IAGMw7D,EAAkBS,cAAgBxhD,EAAMyhD,GACxCV,EAAkBkB,cAAgBjiD,EAAMsX,GACxCypC,EAAkBx7D,GAAKya,EAAMza,GAC7Bw7D,EAAkBM,GAAKrhD,EAAMqhD,GACtBN,CACb,CACI,SAASqB,EAAqBpiD,EAAOgiD,EAAM9C,GACzC,SAAS6B,EAAkB/qE,GACzB,MAAY,UAARA,GAA2B,UAARA,EACd+qE,EAAkBp9E,MAEf,YAARqS,GAA6B,YAARA,EAChB+qE,EAAkBl4B,QAEpB,IACf,CAiBM,OAhBAzwD,OAAOuoF,iBAAiBI,EAAmB,CACzCp9E,MAAO,CACL7K,IAAK4lF,4BAA4BsD,EAAKjkE,IAExC8qC,QAAS,CACP/vD,IAAK4lF,4BAA4BsD,EAAKptE,IAExCglE,MAAO,CACLnjF,MAAOupC,EAAMza,IAEf87D,GAAI,CACF5qF,MAAOupC,EAAMqhD,MAGjBW,EAAKjkE,EAAE8jE,iBAAiBZ,kBAAkB,QAAS/B,IACnD8C,EAAKptE,EAAEitE,iBAAiBZ,kBAAkB,UAAW/B,IAC9C6B,CACb,CACI,SAAS6B,EAA6B5iD,EAAOgiD,EAAM9C,GACjD,SAAS6B,EAAkB/qE,GACzB,MAAY,gBAARA,GAAiC,gBAARA,EACpB+qE,EAAkBmC,WAEf,cAARltE,GAA+B,cAARA,EAClB+qE,EAAkBoC,SAEf,YAARntE,GAA6B,YAARA,EAChB+qE,EAAkBl4B,QAEpB,IACf,CA0BM,OAzBAzwD,OAAOuoF,iBAAiBI,EAAmB,CACzCmC,WAAY,CACVpqF,IAAK4lF,4BAA4BsD,EAAKxiF,IAExC2jF,SAAU,CACRrqF,IAAK4lF,4BAA4BsD,EAAKprF,IAExCiyD,QAAS,CACP/vD,IAAK4lF,4BAA4BsD,EAAKptE,IAExC3gB,KAAM,CACJ6E,IAAK,WACH,MAAO,GACnB,GAEQ8gF,MAAO,CACLnjF,MAAOupC,EAAMza,IAEf87D,GAAI,CACF5qF,MAAOupC,EAAMqhD,MAGjBW,EAAKxiF,EAAEqiF,iBAAiBZ,kBAAkB,cAAe/B,IACzD8C,EAAKprF,EAAEirF,iBAAiBZ,kBAAkB,YAAa/B,IACvD8C,EAAKptE,EAAEitE,iBAAiBZ,kBAAkB,UAAW/B,IAC9C6B,CACb,CACI,SAAS8B,IAIP,OAHA,WACE,OAAO,IACf,CAEA,CACI,SAASR,EAAuBriD,EAAOgiD,EAAM9C,GAC3C,IAOIz/E,EAPA6hF,EAAiBR,qBAAqBC,EAAmB7B,GACzDkE,EAAqBtC,qBAAqBuC,EAAQ/B,GACtD,SAASgC,EAAoB7jF,GAC3BrH,OAAOe,eAAekqF,EAAQrjD,EAAMrhC,EAAEc,GAAG8lB,GAAI,CAC3CzsB,IAAK4lF,4BAA4BsD,EAAKrjF,EAAEmwD,UAAUrvD,GAAGV,IAE/D,CAEM,IAAIoT,EAAM6tB,EAAMrhC,EAAIqhC,EAAMrhC,EAAEzG,OAAS,EACjCmrF,EAAS,CAAA,EACb,IAAK5jF,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB6jF,EAAoB7jF,GACpBuiF,EAAKrjF,EAAEmwD,UAAUrvD,GAAGV,EAAE8iF,iBAAiBuB,GAEzC,SAASrC,EAAkB/qE,GACzB,MAAY,UAARA,GAA2B,UAARA,EACd+qE,EAAkBp9E,MAEf,YAARqS,GAA6B,YAARA,EAChB+qE,EAAkBl4B,QAEf,iBAAR7yC,GAAkC,iBAARA,EACrB+qE,EAAkBzQ,YAEpB,IACf,CA0BM,OAzBAl4E,OAAOuoF,iBAAiBI,EAAmB,CACzCp9E,MAAO,CACL7K,IAAK4lF,4BAA4BsD,EAAKjkE,IAExC8qC,QAAS,CACP/vD,IAAK4lF,4BAA4BsD,EAAKptE,IAExC07D,YAAa,CACXx3E,IAAK4lF,4BAA4BsD,EAAKloC,IAExCypC,KAAM,CACJzqF,IAAK,WACH,OAAOuqF,CACnB,GAEQzJ,MAAO,CACLnjF,MAAOupC,EAAMza,IAEf87D,GAAI,CACF5qF,MAAOupC,EAAMqhD,MAGjBW,EAAKjkE,EAAE8jE,iBAAiBZ,kBAAkB,QAASK,IACnDU,EAAKptE,EAAEitE,iBAAiBZ,kBAAkB,UAAWK,IACrDU,EAAKloC,EAAE+nC,iBAAiBZ,kBAAkB,eAAgBK,IACnDP,CACb,CACI,SAASuB,EAAqBtiD,EAAOgiD,EAAM9C,GACzC,SAAS6B,EAAkB/qE,GACzB,OAAIA,IAAQgqB,EAAMppC,EAAE0gD,IAAc,QAARthC,GAAyB,QAARA,EAClC+qE,EAAkB3iF,IAEvB4X,IAAQgqB,EAAMxgC,EAAE83C,GACXypC,EAAkB5iF,MAEvB6X,IAAQgqB,EAAMprB,EAAE0iC,GACXypC,EAAkBzoE,OAEpB,IACf,CACM,IAAIgpE,EAAiBR,qBAAqBC,EAAmB7B,GAsB7D,OArBA6B,EAAkBkB,cAAgBjiD,EAAMsX,GACxC0qC,EAAKxiF,EAAEqiF,iBAAiBZ,kBAAkB,QAASK,IACnDU,EAAKprF,EAAEirF,iBAAiBZ,kBAAkB,MAAOK,IACjDU,EAAKptE,EAAEitE,iBAAiBZ,kBAAkB,SAAUK,IACpDP,EAAkBkB,cAAgBjiD,EAAMsX,GACxCypC,EAAkB7B,cAAgBA,EAClC9mF,OAAOuoF,iBAAiBI,EAAmB,CACzC5iF,MAAO,CACLrF,IAAK4lF,4BAA4BsD,EAAKxiF,IAExCpB,IAAK,CACHtF,IAAK4lF,4BAA4BsD,EAAKprF,IAExC0hB,OAAQ,CACNxf,IAAK4lF,4BAA4BsD,EAAKptE,IAExCglE,MAAO,CACLnjF,MAAOupC,EAAMza,MAGjBw7D,EAAkBM,GAAKrhD,EAAMqhD,GACtBN,CACb,CACI,SAASgC,EAA0B/iD,EAAOgiD,EAAM9C,GAC9C,SAAS6B,EAAkBtqF,GACzB,OAAIupC,EAAMxiB,EAAE85B,KAAO7gD,GAAmB,iBAAVA,EACnBsqF,EAAkBpG,YAEvB36C,EAAMprB,EAAE0iC,KAAO7gD,GAAmB,YAAVA,EACnBsqF,EAAkBl4B,QAEvB7oB,EAAMjhC,EAAEu4C,KAAO7gD,GAAmB,aAAVA,EACnBsqF,EAAkBvjF,SAEvBwiC,EAAM9nB,EAAEo/B,KAAO7gD,GAAmB,aAAVA,GAAkC,yBAAVA,EAC3CsqF,EAAkBrG,SAEvB16C,EAAMxgC,EAAE83C,KAAO7gD,GAAmB,UAAVA,EACnBsqF,EAAkB97C,MAEvBjF,EAAMviB,IAAMuiB,EAAMviB,GAAG65B,KAAO7gD,GAAmB,SAAVA,EAChCsqF,EAAkBh8C,KAEvB/E,EAAMtiB,IAAMsiB,EAAMtiB,GAAG45B,KAAO7gD,GAAmB,cAAVA,EAChCsqF,EAAkByC,SAEpB,IACf,CACM,IAAIlC,EAAiBR,qBAAqBC,EAAmB7B,GAwC7D,OAvCA8C,EAAK7zE,UAAU6pC,OAAOpjC,EAAEitE,iBAAiBZ,kBAAkB,UAAWK,IACtEU,EAAK7zE,UAAU6pC,OAAOj5C,EAAE8iF,iBAAiBZ,kBAAkB,WAAYK,IACvEU,EAAK7zE,UAAU6pC,OAAOx6B,EAAEqkE,iBAAiBZ,kBAAkB,eAAgBK,IAC3EU,EAAK7zE,UAAU6pC,OAAOx4C,EAAEqiF,iBAAiBZ,kBAAkB,QAASK,IACpEU,EAAK7zE,UAAU6pC,OAAO9/B,EAAE2pE,iBAAiBZ,kBAAkB,WAAYK,IACnEU,EAAK7zE,UAAU6pC,OAAOv6B,KACxBukE,EAAK7zE,UAAU6pC,OAAOv6B,GAAGokE,iBAAiBZ,kBAAkB,OAAQK,IACpEU,EAAK7zE,UAAU6pC,OAAOt6B,GAAGmkE,iBAAiBZ,kBAAkB,aAAcK,KAE5EU,EAAK7zE,UAAUzM,GAAGmgF,iBAAiBZ,kBAAkB,UAAWK,IAChElpF,OAAOuoF,iBAAiBI,EAAmB,CACzCl4B,QAAS,CACP/vD,IAAK4lF,4BAA4BsD,EAAK7zE,UAAU6pC,OAAOpjC,IAEzDpX,SAAU,CACR1E,IAAK4lF,4BAA4BsD,EAAK7zE,UAAU6pC,OAAOj5C,IAEzD47E,YAAa,CACX7hF,IAAK4lF,4BAA4BsD,EAAK7zE,UAAU6pC,OAAOx6B,IAEzDynB,MAAO,CACLnsC,IAAK4lF,4BAA4BsD,EAAK7zE,UAAU6pC,OAAOx4C,IAEzDk7E,SAAU,CACR5hF,IAAK4lF,4BAA4BsD,EAAK7zE,UAAU6pC,OAAO9/B,IAEzD6sB,KAAM,CACJjsC,IAAK4lF,4BAA4BsD,EAAK7zE,UAAU6pC,OAAOv6B,KAEzD+lE,SAAU,CACR1qF,IAAK4lF,4BAA4BsD,EAAK7zE,UAAU6pC,OAAOt6B,KAEzDk8D,MAAO,CACLnjF,MAAOupC,EAAMza,MAGjBw7D,EAAkBvlE,GAAK,KACvBulE,EAAkBM,GAAKrhD,EAAMqhD,GAC7BN,EAAkB7B,cAAgBA,EAC3B6B,CACb,CACI,SAASwB,EAAwBviD,EAAOgiD,EAAM9C,GAC5C,SAAS6B,EAAkBtqF,GACzB,OAAIupC,EAAMjhC,EAAEu4C,KAAO7gD,EACVsqF,EAAkBvjF,SAEvBwiC,EAAMxgC,EAAE83C,KAAO7gD,EACVsqF,EAAkBhnC,KAEpB,IACf,CACM,IAAIunC,EAAiBR,qBAAqBC,EAAmB7B,GAC7D6B,EAAkBkB,cAAgBjiD,EAAMsX,GACxC,IAAIxrC,EAAsB,OAAfk2E,EAAKhoD,GAAGxe,GAAcwmE,EAAKhoD,GAAGluB,KAAOk2E,EAAKhoD,GAerD,OAdAluB,EAAKtM,EAAEqiF,iBAAiBZ,kBAAkB,OAAQK,IAClDx1E,EAAK/M,EAAE8iF,iBAAiBZ,kBAAkB,WAAYK,IACtDlpF,OAAOuoF,iBAAiBI,EAAmB,CACzChnC,KAAM,CACJjhD,IAAK4lF,4BAA4B5yE,EAAKtM,IAExChC,SAAU,CACR1E,IAAK4lF,4BAA4B5yE,EAAK/M,IAExC66E,MAAO,CACLnjF,MAAOupC,EAAMza,MAGjBw7D,EAAkBM,GAAKrhD,EAAMqhD,GACtBN,CACb,CACI,SAASyB,EAAqBxiD,EAAOgiD,EAAM9C,GACzC,SAAS6B,EAAkBtqF,GACzB,OAAIupC,EAAMjhC,EAAEu4C,KAAO7gD,EACVsqF,EAAkBvjF,SAEvBwiC,EAAM9nB,EAAEo/B,KAAO7gD,EACVsqF,EAAkBrG,SAEvB16C,EAAM1kB,GAAGg8B,KAAO7gD,EACXsqF,EAAkB3wD,OAEvB4P,EAAM0C,GAAG4U,KAAO7gD,GAAmB,kCAAVA,EACpBsqF,EAAkB0C,YAEvBzjD,EAAM2C,GAAG2U,KAAO7gD,EACXsqF,EAAkB2C,gBAEvB1jD,EAAMqC,IAAOrC,EAAMqC,GAAGiV,KAAO7gD,GAAmB,kCAAVA,EAGtCupC,EAAMsC,IAAMtC,EAAMsC,GAAGgV,KAAO7gD,EACvBsqF,EAAkB4C,eAEpB,KALE5C,EAAkB6C,WAMnC,CACM,IAAItC,EAAiBR,qBAAqBC,EAAmB7B,GACzDpzE,EAAsB,OAAfk2E,EAAKhoD,GAAGxe,GAAcwmE,EAAKhoD,GAAGluB,KAAOk2E,EAAKhoD,GAsCrD,OArCA+mD,EAAkBkB,cAAgBjiD,EAAMsX,GACxCxrC,EAAK42B,GAAGm/C,iBAAiBZ,kBAAkB,eAAgBK,IAC3Dx1E,EAAK62B,GAAGk/C,iBAAiBZ,kBAAkB,kBAAmBK,IAC9Dx1E,EAAKwP,GAAGumE,iBAAiBZ,kBAAkB,SAAUK,IACrDx1E,EAAK/M,EAAE8iF,iBAAiBZ,kBAAkB,WAAYK,IACtDx1E,EAAKoM,EAAE2pE,iBAAiBZ,kBAAkB,WAAYK,IAClDthD,EAAMqC,KACRv2B,EAAKu2B,GAAGw/C,iBAAiBZ,kBAAkB,eAAgBK,IAC3Dx1E,EAAKw2B,GAAGu/C,iBAAiBZ,kBAAkB,kBAAmBK,KAEhElpF,OAAOuoF,iBAAiBI,EAAmB,CACzCvjF,SAAU,CACR1E,IAAK4lF,4BAA4B5yE,EAAK/M,IAExC27E,SAAU,CACR5hF,IAAK4lF,4BAA4B5yE,EAAKoM,IAExCkY,OAAQ,CACNt3B,IAAK4lF,4BAA4B5yE,EAAKwP,KAExCmoE,YAAa,CACX3qF,IAAK4lF,4BAA4B5yE,EAAK42B,KAExCghD,eAAgB,CACd5qF,IAAK4lF,4BAA4B5yE,EAAK62B,KAExCihD,YAAa,CACX9qF,IAAK4lF,4BAA4B5yE,EAAKu2B,KAExCshD,eAAgB,CACd7qF,IAAK4lF,4BAA4B5yE,EAAKw2B,KAExCs3C,MAAO,CACLnjF,MAAOupC,EAAMza,MAGjBw7D,EAAkBM,GAAKrhD,EAAMqhD,GACtBN,CACb,CACI,SAAS0B,EAAqBziD,EAAOgiD,EAAM9C,GACzC,SAAS6B,EAAkBtqF,GACzB,OAAIupC,EAAMjhC,EAAEu4C,KAAO7gD,EACVsqF,EAAkBvjF,SAEvBwiC,EAAM9nB,EAAEo/B,KAAO7gD,EACVsqF,EAAkBl+C,UAEvB7C,EAAMxgC,EAAE83C,KAAO7gD,GAAmB,SAAVA,GAA8B,0BAAVA,EACvCsqF,EAAkBhnC,KAEpB,IACf,CACM,IAAIunC,EAAiBR,qBAAqBC,EAAmB7B,GACzDpzE,EAAsB,OAAfk2E,EAAKhoD,GAAGxe,GAAcwmE,EAAKhoD,GAAGluB,KAAOk2E,EAAKhoD,GAoBrD,OAnBA+mD,EAAkBkB,cAAgBjiD,EAAMsX,GACxCxrC,EAAK/M,EAAE8iF,iBAAiBZ,kBAAkB,WAAYK,IACtDx1E,EAAKtM,EAAEqiF,iBAAiBZ,kBAAkB,OAAQK,IAClDx1E,EAAKoM,EAAE2pE,iBAAiBZ,kBAAkB,WAAYK,IACtDlpF,OAAOuoF,iBAAiBI,EAAmB,CACzCvjF,SAAU,CACR1E,IAAK4lF,4BAA4B5yE,EAAK/M,IAExC8jC,UAAW,CACT/pC,IAAK4lF,4BAA4B5yE,EAAKoM,IAExC6hC,KAAM,CACJjhD,IAAK4lF,4BAA4B5yE,EAAKtM,IAExCo6E,MAAO,CACLnjF,MAAOupC,EAAMza,MAGjBw7D,EAAkBM,GAAKrhD,EAAMqhD,GACtBN,CACb,CACI,SAAS2B,EAAwB1iD,EAAOgiD,EAAM9C,GAC5C,SAAS6B,EAAkBtqF,GACzB,OAAIupC,EAAM9nB,EAAEo/B,KAAO7gD,GAAmB,oBAAVA,EACnBsqF,EAAkB3jF,OAEpB,IACf,CACM,IAAIkkF,EAAiBR,qBAAqBC,EAAmB7B,GACzDpzE,EAAOk2E,EAYX,OAXAjB,EAAkBkB,cAAgBjiD,EAAMsX,GACxCxrC,EAAKmsC,GAAG4pC,iBAAiBZ,kBAAkB,SAAUK,IACrDlpF,OAAOuoF,iBAAiBI,EAAmB,CACzC3jF,OAAQ,CACNtE,IAAK4lF,4BAA4B5yE,EAAKmsC,KAExC2hC,MAAO,CACLnjF,MAAOupC,EAAMza,MAGjBw7D,EAAkBM,GAAKrhD,EAAMqhD,GACtBN,CACb,CACI,SAAS4B,EAAyB3iD,EAAOgiD,EAAM9C,GAC7C,SAAS6B,EAAkBtqF,GACzB,OAAIupC,EAAMjiB,EAAEu5B,KAAO7gD,GAAmB,WAAVA,EACnBsqF,EAAkB5pC,OAEvBnX,EAAMprB,EAAE0iC,KAAO7gD,GAAmB,WAAVA,EACnBsqF,EAAkBzoE,OAEpB,IACf,CACM,IAAIgpE,EAAiBR,qBAAqBC,EAAmB7B,GACzDpzE,EAAOk2E,EAgBX,OAfAjB,EAAkBkB,cAAgBjiD,EAAMsX,GACxCxrC,EAAKiS,EAAE8jE,iBAAiBZ,kBAAkB,SAAUK,IACpDx1E,EAAK8I,EAAEitE,iBAAiBZ,kBAAkB,SAAUK,IACpDlpF,OAAOuoF,iBAAiBI,EAAmB,CACzC5pC,OAAQ,CACNr+C,IAAK4lF,4BAA4B5yE,EAAKiS,IAExCzF,OAAQ,CACNxf,IAAK4lF,4BAA4B5yE,EAAK8I,IAExCglE,MAAO,CACLnjF,MAAOupC,EAAMza,MAGjBw7D,EAAkBM,GAAKrhD,EAAMqhD,GACtBN,CACb,CACI,OAAO,SAAUnlE,EAAQomE,EAAM9C,GAC7B,IAAI4D,EACJ,SAASe,EAAmBptF,GAC1B,GAAqB,iBAAVA,EAET,OAAc,KADdA,OAAkBmH,IAAVnH,EAAsB,EAAIA,GAEzByoF,EAEF4D,EAAWrsF,EAAQ,GAI5B,IAFA,IAAIgJ,EAAI,EACJ0S,EAAM2wE,EAAW5qF,OACduH,EAAI0S,GAAK,CACd,GAAI2wE,EAAWrjF,GAAGm6E,QAAUnjF,EAC1B,OAAOqsF,EAAWrjF,GAEpBA,GAAK,CACf,CACQ,OAAO,IACf,CAQM,OAJAokF,EAAmB3E,cAAgB4B,qBAAqB+C,EAHxD,WACE,OAAO3E,CACf,GAEM4D,EAAaZ,EAAgBtmE,EAAQomE,EAAM6B,EAAmB3E,eAC9D2E,EAAmBrC,cAAgBsB,EAAW5qF,OAC9C2rF,EAAmBjK,MAAQ,WACpBiK,CACb,CACA,CAvhBiC,GAyhB3BjhC,wBACK,SAAUz0B,GACf,IAAI21D,EACJ,SAAS3Q,EAAmBh+E,GAC1B,MACO,uBADCA,EAEGg+E,EAAmB4Q,WAEnB,IAEnB,CAoBM,OAnBA3rF,OAAOe,eAAeg6E,EAAoB,aAAc,CACtDr6E,IAAK,WACHq1B,EAAKisC,aAAaz8B,WAClB,IAAIqmD,EAAc71D,EAAKisC,aAAazG,YAAYp0D,EAahD,OAZKukF,GAAeE,IAAgBF,EAAYrtF,SAC9CqtF,EAAc,IAAI5kF,OAAO8kF,IAEbvtF,MAAQutF,GAAe,IAAI9kF,OAAO8kF,GAC9C5rF,OAAOe,eAAe2qF,EAAa,QAAS,CAC1ChrF,IAAK,WACH,MAAO,CACLmrF,UAAW91D,EAAKisC,aAAazG,YAAYN,GAE3D,KAGiBywB,CACjB,IAEa3Q,CACb,EAGE,SAAS+Q,QAAQtvE,GAAgC,OAAOsvE,QAAU,mBAAqBrwF,QAAU,iBAAmBA,OAAO2N,SAAW,SAAUoT,GAAK,cAAcA,CAAE,EAAK,SAAUA,GAAK,OAAOA,GAAK,mBAAqB/gB,QAAU+gB,EAAE5d,cAAgBnD,QAAU+gB,IAAM/gB,OAAOuG,UAAY,gBAAkBwa,GAAMsvE,QAAQtvE,EAAG,CAC5T,IAAIwvC,kBA+BE+/B,qBAAuB,SAA8Bh2D,GACvD,SAAS4yD,EAAkBtqF,GACzB,MAAc,YAAVA,EACKsqF,EAAkBqD,mBAEpB,IACf,CAGM,OAFArD,EAAkBnH,MAAQ,UAC1BmH,EAAkBqD,iBAtCU,SAAiCj2D,GAC7D,IAAIk2D,EAAsB,GACtBC,EAAkBn2D,EAAKk2B,iBAM3B,SAASuQ,EAAen+D,GACtB,GAAI6tF,EAAgB7tF,GAGlB,OAFA4tF,EAAsB5tF,EAEW,WAA7BytF,QADJI,EAAkBA,EAAgB7tF,IAEzBm+D,EAEF0vB,EAET,IAAIC,EAAoB9tF,EAAMqoB,QAAQulE,GACtC,IAA0B,IAAtBE,EAA0B,CAC5B,IAAIj3D,EAAQnF,SAAS1xB,EAAM+xB,OAAO+7D,EAAoBF,EAAoBnsF,QAAS,IAEnF,MAAiC,WAA7BgsF,QADJI,EAAkBA,EAAgBh3D,IAEzBsnC,EAEF0vB,CACjB,CACQ,MAAO,EACf,CACM,OAzBA,WAGE,OAFAD,EAAsB,GACtBC,EAAkBn2D,EAAKk2B,iBAChBuQ,CACf,CAsBA,CAS2C4vB,CAAwBr2D,GACtD4yD,CACb,EACW,SAAU5yD,GACf,SAAS01D,EAAmBptF,GAC1B,MAAc,SAAVA,EACKotF,EAAmBY,cAErB,IACf,CAGM,OAFAZ,EAAmBjK,MAAQ,OAC3BiK,EAAmBY,cAAgBN,qBAAqBh2D,GACjD01D,CACb,GArBQM,qBAwBFrB,WAAa,CACfj+B,MAAOpC,yBACPtB,QAASuB,2BACT5mC,KAAM+mC,wBACN7iB,MAAO2iB,yBACPz+C,KAAM0+C,wBACN8hC,QAAStgC,kBAEX,SAASugC,aAAa1wF,GACpB,OAAO6uF,WAAW7uF,IAAS,IAC/B,CAEE,IAAI2wF,kBAgEK,CACLC,kBAhEF,SAA2B12D,EAAMhkB,EAAM2B,GACjC3B,EAAK5T,IACPuV,EAAKrT,GAAI,EACTqT,EAAKvV,GAAI,EACTuV,EAAKqtE,mBAAqBnD,kBAAkBmD,mBAC5CrtE,EAAKmxB,gBAAgBr7B,KAAKkK,EAAKqtE,mBAAmBhrD,EAAMhkB,EAAM2B,GAAMnR,KAAKmR,IAEjF,EA0DMmzE,eA/CF,SAAwBlnD,GACtB,IACIgM,EAAKxsC,KAAKs3C,eAAe9W,GACzB6W,EAAKr3C,KAAKs3C,eAAe9W,GAFjB,KAGR+sD,EAAQ,EACZ,GAAI/gD,EAAG7rC,OAAQ,CACb,IAAIuH,EACJ,IAAKA,EAAI,EAAGA,EAAIskC,EAAG7rC,OAAQuH,GAAK,EAC9BqlF,GAASl6E,KAAKuK,IAAIy5B,EAAGnvC,GAAKskC,EAAGtkC,GAAI,GAEnCqlF,EAA2B,IAAnBl6E,KAAKyK,KAAKyvE,EAC1B,MACQA,EAAQ,EAEV,OAAOA,CACb,EAiCMjJ,kBAhCF,SAA2B9jD,GACzB,QAAiBn6B,IAAbrG,KAAKmmC,IACP,OAAOnmC,KAAKmmC,IAEd,IAIIo+C,EAGEr8E,EAPFgwC,GAAQ,KAER1L,EAAKxsC,KAAKs3C,eAAe9W,GACzB6W,EAAKr3C,KAAKs3C,eAAe9W,EAAW0X,GAExC,GAAI1L,EAAG7rC,OAGL,IAFA4jF,EAAW1nE,iBAAiB,UAAW2vB,EAAG7rC,QAErCuH,EAAI,EAAGA,EAAIskC,EAAG7rC,OAAQuH,GAAK,EAI9Bq8E,EAASr8E,IAAMmvC,EAAGnvC,GAAKskC,EAAGtkC,IAAMgwC,OAGlCqsC,GAAYltC,EAAK7K,GAAM0L,EAEzB,OAAOqsC,CACb,EAWMjtC,eA3DF,SAAwB9W,GAQtB,OAPAA,GAAYxgC,KAAK42B,KAAKnG,WAAW5B,WACjC2R,GAAYxgC,KAAK2gC,cACA3gC,KAAKwtF,eAAexrD,YACnChiC,KAAKwtF,eAAersD,UAAYnhC,KAAKwtF,eAAexrD,UAAYxB,EAAWxgC,KAAKwtF,eAAersD,UAAY,EAC3GnhC,KAAKwtF,eAAetuF,MAAQc,KAAKugC,iBAAiBC,EAAUxgC,KAAKwtF,gBACjExtF,KAAKwtF,eAAexrD,UAAYxB,GAE3BxgC,KAAKwtF,eAAetuF,KACjC,EAmDMuuF,qBAXF,WACE,OAAOztF,KAAK6gC,EAClB,EAUMypD,iBATF,SAA0B3C,GACxB3nF,KAAK2nF,cAAgBA,CAC3B,GAWE,SAAS+F,uBACP,SAAS/K,EAAQjmF,EAAM+wB,EAAUkgE,GAC/B,IAAK3tF,KAAKkB,IAAMlB,KAAKohC,UACnB,OAAOphC,KAAK6gC,GAEdnkC,EAAOA,EAAOA,EAAKohD,cAAgB,GACnC,IAMI8vC,EACAC,EAeA3lF,EACA0S,EACAkzE,EAxBA3/D,EAAenuB,KAAKukB,KAAKygB,cACzB5D,EAAYphC,KAAKohC,UACjB2sD,EAAe3sD,EAAUA,EAAUzgC,OAAS,GAAGqH,EACnD,GAAImmB,GAAgB4/D,EAClB,OAAO/tF,KAAK6gC,GAqBd,GAjBK8sD,EAYHE,EAAgBE,GAFdH,EAHGngE,EAGapa,KAAKmL,IAAIuvE,EAAe/tF,KAAK42B,KAAKrS,KAAKkM,WAAW5B,UAAYpB,GAF9Dpa,KAAK6K,IAAI,EAAG6vE,EAAe/tF,KAAK42B,KAAKhkB,KAAKkT,QAPvD2H,GAAYA,EAAW2T,EAAUzgC,OAAS,KAC7C8sB,EAAW2T,EAAUzgC,OAAS,GAGhCitF,EAAgBG,GADhBF,EAAgBzsD,EAAUA,EAAUzgC,OAAS,EAAI8sB,GAAUzlB,IAahD,aAATtL,GAEF,GADiB2W,KAAK2K,OAAOmQ,EAAe0/D,GAAiBD,GAC5C,GAAM,EACrB,OAAO5tF,KAAKs3C,gBAAgBs2C,GAAiBz/D,EAAe0/D,GAAiBD,EAAgBC,GAAiB7tF,KAAKukB,KAAKkM,WAAW5B,UAAW,OAE3I,IAAa,WAATnyB,EAAmB,CAC5B,IAAIsxF,EAAQhuF,KAAKs3C,eAAeu2C,EAAgB7tF,KAAKukB,KAAKkM,WAAW5B,UAAW,GAC5Eo/D,EAAOjuF,KAAKs3C,eAAey2C,EAAe/tF,KAAKukB,KAAKkM,WAAW5B,UAAW,GAC1Eq/D,EAAUluF,KAAKs3C,iBAAiBnpB,EAAe0/D,GAAiBD,EAAgBC,GAAiB7tF,KAAKukB,KAAKkM,WAAW5B,UAAW,GACjIs/D,EAAU96E,KAAK2K,OAAOmQ,EAAe0/D,GAAiBD,GAC1D,GAAI5tF,KAAK6gC,GAAGlgC,OAAQ,CAGlB,IADAia,GADAkzE,EAAM,IAAIhrF,MAAMkrF,EAAMrtF,SACZA,OACLuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB4lF,EAAI5lF,IAAM+lF,EAAK/lF,GAAK8lF,EAAM9lF,IAAMimF,EAAUD,EAAQhmF,GAEpD,OAAO4lF,CACjB,CACQ,OAAQG,EAAOD,GAASG,EAAUD,CAC1C,CAAa,GAAa,aAATxxF,EAAqB,CAC9B,IAAI0xF,EAAYpuF,KAAKs3C,eAAey2C,EAAe/tF,KAAKukB,KAAKkM,WAAW5B,UAAW,GAC/Ew/D,EAAgBruF,KAAKs3C,gBAAgBy2C,EAAe,MAAS/tF,KAAKukB,KAAKkM,WAAW5B,UAAW,GACjG,GAAI7uB,KAAK6gC,GAAGlgC,OAAQ,CAGlB,IADAia,GADAkzE,EAAM,IAAIhrF,MAAMsrF,EAAUztF,SAChBA,OACLuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB4lF,EAAI5lF,GAAKkmF,EAAUlmF,IAAMkmF,EAAUlmF,GAAKmmF,EAAcnmF,MAAQimB,EAAe4/D,GAAgB/tF,KAAKukB,KAAKkM,WAAW5B,WAAa,KAEjI,OAAOi/D,CACjB,CACQ,OAAOM,GAA4CjgE,EAAe4/D,GAAgB,MAA9DK,EAAYC,EACxC,EACM,OAAOruF,KAAKs3C,iBAAiBnpB,EAAe0/D,GAAiBD,EAAgBC,GAAiB7tF,KAAKukB,KAAKkM,WAAW5B,UAAW,EACpI,CACI,SAAS4zD,EAAO/lF,EAAM+wB,EAAUkgE,GAC9B,IAAK3tF,KAAKkB,EACR,OAAOlB,KAAK6gC,GAEdnkC,EAAOA,EAAOA,EAAKohD,cAAgB,GACnC,IAMI8vC,EACAG,EAeA7lF,EACA0S,EACAkzE,EAxBA3/D,EAAenuB,KAAKukB,KAAKygB,cACzB5D,EAAYphC,KAAKohC,UACjBysD,EAAgBzsD,EAAU,GAAGp5B,EACjC,GAAImmB,GAAgB0/D,EAClB,OAAO7tF,KAAK6gC,GAqBd,GAjBK8sD,EAYHI,EAAeF,GAFbD,EAHGngE,EAGapa,KAAKmL,IAAIxe,KAAK42B,KAAKrS,KAAKkM,WAAW5B,UAAYpB,GAF/Cpa,KAAK6K,IAAI,EAAGle,KAAK42B,KAAKhkB,KAAKzI,GAAK0jF,OAP7CpgE,GAAYA,EAAW2T,EAAUzgC,OAAS,KAC7C8sB,EAAW2T,EAAUzgC,OAAS,GAGhCitF,GADAG,EAAe3sD,EAAU3T,GAAUzlB,GACJ6lF,GAYpB,aAATnxF,GAEF,GADiB2W,KAAK2K,OAAO6vE,EAAgB1/D,GAAgBy/D,GAC5C,GAAM,EACrB,OAAO5tF,KAAKs3C,iBAAiBu2C,EAAgB1/D,GAAgBy/D,EAAgBC,GAAiB7tF,KAAKukB,KAAKkM,WAAW5B,UAAW,OAE3H,IAAa,WAATnyB,EAAmB,CAC5B,IAAIsxF,EAAQhuF,KAAKs3C,eAAeu2C,EAAgB7tF,KAAKukB,KAAKkM,WAAW5B,UAAW,GAC5Eo/D,EAAOjuF,KAAKs3C,eAAey2C,EAAe/tF,KAAKukB,KAAKkM,WAAW5B,UAAW,GAC1Eq/D,EAAUluF,KAAKs3C,gBAAgBs2C,GAAiBC,EAAgB1/D,GAAgBy/D,EAAgBC,GAAiB7tF,KAAKukB,KAAKkM,WAAW5B,UAAW,GACjJs/D,EAAU96E,KAAK2K,OAAO6vE,EAAgB1/D,GAAgBy/D,GAAiB,EAC3E,GAAI5tF,KAAK6gC,GAAGlgC,OAAQ,CAGlB,IADAia,GADAkzE,EAAM,IAAIhrF,MAAMkrF,EAAMrtF,SACZA,OACLuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB4lF,EAAI5lF,GAAKgmF,EAAQhmF,IAAM+lF,EAAK/lF,GAAK8lF,EAAM9lF,IAAMimF,EAE/C,OAAOL,CACjB,CACQ,OAAOI,GAAWD,EAAOD,GAASG,CAC1C,CAAa,GAAa,aAATzxF,EAAqB,CAC9B,IAAI4xF,EAAatuF,KAAKs3C,eAAeu2C,EAAgB7tF,KAAKukB,KAAKkM,WAAW5B,UAAW,GACjF0/D,EAAiBvuF,KAAKs3C,gBAAgBu2C,EAAgB,MAAS7tF,KAAKukB,KAAKkM,WAAW5B,UAAW,GACnG,GAAI7uB,KAAK6gC,GAAGlgC,OAAQ,CAGlB,IADAia,GADAkzE,EAAM,IAAIhrF,MAAMwrF,EAAW3tF,SACjBA,OACLuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB4lF,EAAI5lF,GAAKomF,EAAWpmF,IAAMomF,EAAWpmF,GAAKqmF,EAAermF,KAAO2lF,EAAgB1/D,GAAgB,KAElG,OAAO2/D,CACjB,CACQ,OAAOQ,GAAcA,EAAaC,IAAmBV,EAAgB1/D,GAAgB,IAC7F,EACM,OAAOnuB,KAAKs3C,gBAAgBs2C,IAAkBC,EAAgB1/D,GAAgBy/D,EAAgBC,IAAkB7tF,KAAKukB,KAAKkM,WAAW5B,UAAW,EACtJ,CACI,SAASg0D,EAAO39E,EAAOspF,GACrB,IAAKxuF,KAAKkB,EACR,OAAOlB,KAAK6gC,GAId,GAFA37B,EAAyB,IAAhBA,GAAS,KAClBspF,EAAUn7E,KAAK2K,MAAMwwE,GAAW,KACjB,EACb,OAAOxuF,KAAK6gC,GAEd,IAMI3hC,EAMAuvF,EAZAjvE,EAAcxf,KAAKukB,KAAKygB,cAAgBhlC,KAAKukB,KAAKkM,WAAW5B,UAC7DwR,EAAY7gB,EAActa,EAE1BwpF,EAAkBF,EAAU,GADjBhvE,EAActa,EACmBm7B,IAAcmuD,EAAU,GAAK,EACzEtmF,EAAI,EACJsb,EAAI,EAQR,IALEtkB,EADEc,KAAK6gC,GAAGlgC,OACFkc,iBAAiB,UAAW7c,KAAK6gC,GAAGlgC,QAEpC,EAGHuH,EAAIsmF,GAAS,CAElB,GADAC,EAAczuF,KAAKs3C,eAAejX,EAAYn4B,EAAIwmF,GAC9C1uF,KAAK6gC,GAAGlgC,OACV,IAAK6iB,EAAI,EAAGA,EAAIxjB,KAAK6gC,GAAGlgC,OAAQ6iB,GAAK,EACnCtkB,EAAMskB,IAAMirE,EAAYjrE,QAG1BtkB,GAASuvF,EAEXvmF,GAAK,CACb,CACM,GAAIlI,KAAK6gC,GAAGlgC,OACV,IAAK6iB,EAAI,EAAGA,EAAIxjB,KAAK6gC,GAAGlgC,OAAQ6iB,GAAK,EACnCtkB,EAAMskB,IAAMgrE,OAGdtvF,GAASsvF,EAEX,OAAOtvF,CACb,CACI,SAASyvF,EAAwBphE,GAC1BvtB,KAAK4uF,0BACR5uF,KAAK4uF,wBAA0B,CAC7B1kF,EAAG,IAAIuiC,SAIX,IAAIwD,EAASjwC,KAAK4uF,wBAAwB1kF,EAE1C,GADA+lC,EAAOM,eAAevwC,KAAKu2C,IAAIt5C,OAC3B+C,KAAKw2C,uBAAyB,EAAG,CACnC,IAAIq4C,EAAS7uF,KAAKimB,EAAEqxB,eAAe/pB,GACnC0iB,EAAOlC,WAAW8gD,EAAO,GAAK7uF,KAAKimB,EAAEqf,MAAOupD,EAAO,GAAK7uF,KAAKimB,EAAEqf,KAAMupD,EAAO,GAAK7uF,KAAKimB,EAAEqf,KAChG,CACM,GAAItlC,KAAKw2C,uBAAyB,EAAG,CACnC,IAAI9I,EAAQ1tC,KAAKiI,EAAEqvC,eAAe/pB,GAClC0iB,EAAOvC,MAAMA,EAAM,GAAK1tC,KAAKiI,EAAEq9B,KAAMoI,EAAM,GAAK1tC,KAAKiI,EAAEq9B,KAAMoI,EAAM,GAAK1tC,KAAKiI,EAAEq9B,KACvF,CACM,GAAItlC,KAAKkmB,IAAMlmB,KAAKw2C,uBAAyB,EAAG,CAC9C,IAAIhJ,EAAOxtC,KAAKkmB,GAAGoxB,eAAe/pB,GAC9B0+D,EAAWjsF,KAAKmmB,GAAGmxB,eAAe/pB,GACtC0iB,EAAOxC,cAAcD,EAAOxtC,KAAKkmB,GAAGof,KAAM2mD,EAAWjsF,KAAKmmB,GAAGmf,KACrE,CACM,GAAItlC,KAAK2gB,GAAK3gB,KAAKw2C,uBAAyB,EAAG,CAC7C,IAAI2sC,EAAWnjF,KAAK2gB,EAAE22B,eAAe/pB,GACrC0iB,EAAOlD,QAAQo2C,EAAWnjF,KAAK2gB,EAAE2kB,KACzC,MAAa,IAAKtlC,KAAK2gB,GAAK3gB,KAAKw2C,uBAAyB,EAAG,CACrD,IAAIs4C,EAAY9uF,KAAK82C,GAAGQ,eAAe/pB,GACnCwhE,EAAY/uF,KAAK62C,GAAGS,eAAe/pB,GACnCyhE,EAAYhvF,KAAK42C,GAAGU,eAAe/pB,GACnC0hE,EAAcjvF,KAAKmrC,GAAGmM,eAAe/pB,GACzC0iB,EAAO5C,SAASyhD,EAAY9uF,KAAK82C,GAAGxR,MAAM8H,QAAQ2hD,EAAY/uF,KAAK62C,GAAGvR,MAAM6H,QAAQ6hD,EAAYhvF,KAAK42C,GAAGtR,MAAM+H,SAAS4hD,EAAY,GAAKjvF,KAAKmrC,GAAG7F,MAAM8H,QAAQ6hD,EAAY,GAAKjvF,KAAKmrC,GAAG7F,MAAM6H,QAAQ8hD,EAAY,GAAKjvF,KAAKmrC,GAAG7F,KACtO,CACM,GAAItlC,KAAK4S,KAAKpL,GAAKxH,KAAK4S,KAAKpL,EAAES,EAAG,CAChC,IAAIinF,EAAYlvF,KAAKy2C,GAAGa,eAAe/pB,GACnC4hE,EAAYnvF,KAAK02C,GAAGY,eAAe/pB,GACvC,GAAIvtB,KAAK4S,KAAKpL,EAAEipC,EAAG,CACjB,IAAI2+C,EAAYpvF,KAAK22C,GAAGW,eAAe/pB,GACvC0iB,EAAOlC,UAAUmhD,EAAYlvF,KAAKy2C,GAAGnR,KAAM6pD,EAAYnvF,KAAK02C,GAAGpR,MAAO8pD,EAAYpvF,KAAK22C,GAAGrR,KACpG,MACU2K,EAAOlC,UAAUmhD,EAAYlvF,KAAKy2C,GAAGnR,KAAM6pD,EAAYnvF,KAAK02C,GAAGpR,KAAM,EAE/E,KAAa,CACL,IAAIr/B,EAAWjG,KAAKwH,EAAE8vC,eAAe/pB,GACrC0iB,EAAOlC,UAAU9nC,EAAS,GAAKjG,KAAKwH,EAAE89B,KAAMr/B,EAAS,GAAKjG,KAAKwH,EAAE89B,MAAOr/B,EAAS,GAAKjG,KAAKwH,EAAE89B,KACrG,CACM,OAAO2K,CAEb,CACI,SAASo/C,IACP,OAAOrvF,KAAKkK,EAAEs+B,MAAM,IAAIiE,OAC9B,CACI,IAAIgL,EAAuBrB,yBAAyBqB,qBACpDrB,yBAAyBqB,qBAAuB,SAAU7gB,EAAMhkB,EAAMyd,GACpE,IAAI9b,EAAOkjC,EAAqB7gB,EAAMhkB,EAAMyd,GAO5C,OANI9b,EAAKuyB,kBAAkBnmC,OACzB4T,EAAK+iC,eAAiBq3C,EAAwBvrF,KAAKmR,GAEnDA,EAAK+iC,eAAiB+3C,EAA8BjsF,KAAKmR,GAE3DA,EAAK+1E,iBAAmB+C,kBAAkB/C,iBACnC/1E,CACb,EACI,IAAI+6E,EAAkB7oD,gBAAgBC,QACtCD,gBAAgBC,QAAU,SAAU9P,EAAMhkB,EAAMlW,EAAM4oC,EAAMjV,GAC1D,IAAI9b,EAAO+6E,EAAgB14D,EAAMhkB,EAAMlW,EAAM4oC,EAAMjV,GAI/C9b,EAAKuxB,GACPvxB,EAAK+iC,eAAiB+1C,kBAAkB/1C,eAAel0C,KAAKmR,GAE5DA,EAAK+iC,eAAiB+1C,kBAAkBI,qBAAqBrqF,KAAKmR,GAEpEA,EAAK+1E,iBAAmB+C,kBAAkB/C,iBAC1C/1E,EAAKouE,QAAUA,EACfpuE,EAAKkuE,OAASA,EACdluE,EAAKsuE,OAASA,EACdtuE,EAAK+vE,kBAAoB+I,kBAAkB/I,kBAAkBlhF,KAAKmR,GAClEA,EAAKmzE,eAAiB2F,kBAAkB3F,eAAetkF,KAAKmR,GAC5DA,EAAKovE,QAAqB,IAAX/wE,EAAKqT,EAAUrT,EAAK1R,EAAEP,OAAS,EAC9C4T,EAAKm2E,cAAgB93E,EAAKmtC,GAC1B,IAAI7gD,EAAQ,EAaZ,OAZa,IAATxC,IACFwC,EAAQ2d,iBAAiB,UAAsB,IAAXjK,EAAKqT,EAAUrT,EAAK1R,EAAE,GAAG+G,EAAEtH,OAASiS,EAAK1R,EAAEP,SAEjF4T,EAAKi5E,eAAiB,CACpBxrD,UAAW/nB,oBACXknB,UAAW,EACXjiC,MAAOA,GAETmuF,kBAAkBC,kBAAkB12D,EAAMhkB,EAAM2B,GAC5CA,EAAKrT,GACPmvB,EAAU4V,mBAAmB1xB,GAExBA,CACb,EAmBI,IAAIg7E,EAAmCtmD,qBAAqBumD,yBACxDC,EAA4CxmD,qBAAqBymD,kCACrE,SAASC,IAAmB,CAC5BA,EAAiB9sF,UAAY,CAC3BqlC,SAAU,SAAkB3zB,EAAMgZ,GAC5BvtB,KAAKkB,GACPlB,KAAKomC,WAEP,IAIIl+B,EAJAqgC,EAAYvoC,KAAKkK,OACR7D,IAATknB,IACFgb,EAAYvoC,KAAKs3C,eAAe/pB,EAAM,IAGxC,IAAI3S,EAAM2tB,EAAU1N,QAChBqN,EAAWK,EAAUh0B,GACrBskB,EAAS0P,EAAUr+B,EACnB6S,EAAMI,iBAAiBvC,GAC3B,IAAK1S,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EAEtB6U,EAAI7U,GADO,MAATqM,GAAyB,MAATA,EACT,CAAC2zB,EAAShgC,GAAG,GAAK2wB,EAAO3wB,GAAG,GAAIggC,EAAShgC,GAAG,GAAK2wB,EAAO3wB,GAAG,IAE3D,CAACggC,EAAShgC,GAAG,GAAIggC,EAAShgC,GAAG,IAG1C,OAAO6U,CACf,EACM8b,OAAQ,SAAgBtL,GACtB,OAAOvtB,KAAKkoC,SAAS,IAAK3a,EAClC,EACMg0D,WAAY,SAAoBh0D,GAC9B,OAAOvtB,KAAKkoC,SAAS,IAAK3a,EAClC,EACMi0D,YAAa,SAAqBj0D,GAChC,OAAOvtB,KAAKkoC,SAAS,IAAK3a,EAClC,EACMqiE,SAAU,WACR,OAAO5vF,KAAKkK,EAAEsc,CACtB,EACMqpE,YAAa,SAAqBrzD,EAAMjP,GACtC,IAAIgb,EAAYvoC,KAAKkK,OACR7D,IAATknB,IACFgb,EAAYvoC,KAAKs3C,eAAe/pB,EAAM,IAEnCvtB,KAAK8vF,kBACR9vF,KAAK8vF,gBAAkB1vD,IAAIvC,kBAAkB0K,IAS/C,IAPA,IAMIxkB,EANAga,EAAiB/9B,KAAK8vF,gBACtBz0D,EAAU0C,EAAe1C,QACzBoC,EAAYM,EAAexC,YAAciB,EACzCt0B,EAAI,EACJ0S,EAAMygB,EAAQ16B,OACdovF,EAAoB,EAEjB7nF,EAAI0S,GAAK,CACd,GAAIm1E,EAAoB10D,EAAQnzB,GAAGizB,YAAcsC,EAAW,CAC1D,IAAIuyD,EAAY9nF,EACZ+nF,EAAW1nD,EAAU/hB,GAAKte,IAAM0S,EAAM,EAAI,EAAI1S,EAAI,EAClD45B,GAAerE,EAAYsyD,GAAqB10D,EAAQnzB,GAAGizB,YAC/DpX,EAAKqc,IAAIV,kBAAkB6I,EAAUr+B,EAAE8lF,GAAYznD,EAAUr+B,EAAE+lF,GAAW1nD,EAAUlrB,EAAE2yE,GAAYznD,EAAUrgC,EAAE+nF,GAAWnuD,EAAazG,EAAQnzB,IAC9I,KACZ,CACY6nF,GAAqB10D,EAAQnzB,GAAGizB,YAElCjzB,GAAK,CACf,CAIQ,OAHK6b,IACHA,EAAKwkB,EAAU/hB,EAAI,CAAC+hB,EAAUr+B,EAAE,GAAG,GAAIq+B,EAAUr+B,EAAE,GAAG,IAAM,CAACq+B,EAAUr+B,EAAEq+B,EAAU1N,QAAU,GAAG,GAAI0N,EAAUr+B,EAAEq+B,EAAU1N,QAAU,GAAG,KAElI9W,CACf,EACMmsE,aAAc,SAAsB1zD,EAAMjP,EAAM4iE,GAElC,GAAR3zD,EAEFA,EAAOx8B,KAAKkK,EAAEsc,EACG,GAARgW,IAETA,EAAO,MAET,IAAIL,EAAMn8B,KAAK6vF,YAAYrzD,EAAMjP,GAC7B6O,EAAMp8B,KAAK6vF,YAAYrzD,EAAO,KAAOjP,GACrC6iE,EAAUh0D,EAAI,GAAKD,EAAI,GACvBk0D,EAAUj0D,EAAI,GAAKD,EAAI,GACvBm0D,EAAYj9E,KAAKyK,KAAKzK,KAAKuK,IAAIwyE,EAAS,GAAK/8E,KAAKuK,IAAIyyE,EAAS,IACnE,OAAkB,IAAdC,EACK,CAAC,EAAG,GAEmB,YAAfH,EAA2B,CAACC,EAAUE,EAAWD,EAAUC,GAAa,EAAED,EAAUC,EAAWF,EAAUE,EAElI,EACMC,cAAe,SAAuB/zD,EAAMjP,GAC1C,OAAOvtB,KAAKkwF,aAAa1zD,EAAMjP,EAAM,UAC7C,EACMijE,aAAc,SAAsBh0D,EAAMjP,GACxC,OAAOvtB,KAAKkwF,aAAa1zD,EAAMjP,EAAM,SAC7C,EACM+8D,iBAAkB+C,kBAAkB/C,iBACpChzC,eAAgB+1C,kBAAkBI,sBAEpCjzE,gBAAgB,CAACm1E,GAAmBJ,GACpC/0E,gBAAgB,CAACm1E,GAAmBF,GACpCA,EAA0C5sF,UAAUy0C,eAvHpD,SAA6B9W,GAgB3B,OAdKxgC,KAAKwtF,iBACRxtF,KAAKwtF,eAAiB,CACpBiD,WAAYnoD,UAAUE,MAAMxoC,KAAK6gC,IACjCM,UAAW,EACXuvD,SAAUz2E,sBAGdumB,GAAYxgC,KAAK42B,KAAKnG,WAAW5B,WACjC2R,GAAYxgC,KAAK2gC,cACA3gC,KAAKwtF,eAAekD,WACnC1wF,KAAKwtF,eAAersD,UAAYnhC,KAAKwtF,eAAekD,SAAWlwD,EAAWxgC,KAAKklC,SAAS/D,UAAY,EACpGnhC,KAAKwtF,eAAekD,SAAWlwD,EAC/BxgC,KAAKkpC,iBAAiB1I,EAAUxgC,KAAKwtF,eAAeiD,WAAYzwF,KAAKwtF,iBAEhExtF,KAAKwtF,eAAeiD,UACjC,EAuGIhB,EAA0C5sF,UAAU++E,mBAAqBnD,kBAAkBmD,mBAC3F,IAAI+O,EAAuB1nD,qBAAqB4mB,aAChD5mB,qBAAqB4mB,aAAe,SAAUj5B,EAAMhkB,EAAMlW,EAAMqgB,EAAK6zE,GACnE,IAAIr8E,EAAOo8E,EAAqB/5D,EAAMhkB,EAAMlW,EAAMqgB,EAAK6zE,GAWvD,OAVAr8E,EAAKm2E,cAAgB93E,EAAKmtC,GAC1BxrC,EAAKoxB,MAAO,EACC,IAATjpC,EACF2wF,kBAAkBC,kBAAkB12D,EAAMhkB,EAAKmR,GAAIxP,GACjC,IAAT7X,GACT2wF,kBAAkBC,kBAAkB12D,EAAMhkB,EAAKiS,GAAItQ,GAEjDA,EAAKrT,GACP01B,EAAKqP,mBAAmB1xB,GAEnBA,CACb,CACA,CACE,SAASs8E,eACPnD,sBACJ,CAEE,SAASoD,eASP/0B,aAAal5D,UAAUkuF,mBAAqB,SAAUzxB,EAAc3yD,GAClE,IAAI+zB,EAAW1gC,KAAKgxF,oBAAoBrkF,GACxC,GAAI2yD,EAAat3D,IAAM04B,EAAU,CAC/B,IAAImhC,EAAU,CAAA,EAId,OAHA7hE,KAAKo9D,SAASyE,EAASvC,GACvBuC,EAAQ75D,EAAI04B,EAASpf,WACrBugD,EAAQ/6C,YAAa,EACd+6C,CACf,CACM,OAAOvC,CACb,EACIvD,aAAal5D,UAAUw6D,eAAiB,WACtC,IAAI4zB,EAAcjxF,KAAKm/D,kBACnB+xB,EAAiBlxF,KAAKstF,oBAE1B,OADAttF,KAAK8lC,GAAKmrD,GAAeC,EAClBlxF,KAAK8lC,EAClB,EACIi2B,aAAal5D,UAAUyqF,kBAzBvB,WACE,OAAIttF,KAAK4S,KAAKxL,EAAEpI,GACdgB,KAAKgxF,oBAAsBvS,kBAAkBmD,mBAAmBx+E,KAAKpD,KAA1Cy+E,CAAgDz+E,KAAK42B,KAAM52B,KAAK4S,KAAKxL,EAAGpH,MACnGA,KAAK+lC,UAAU/lC,KAAK+wF,mBAAmB3tF,KAAKpD,QACrC,GAEF,IACb,CAmBA,CACE,SAASmxF,aACPL,cACJ,CAEE,SAASM,sBAAsB,CAC/BA,oBAAoBvuF,UAAY,CAC9BwuF,gBAAiB,SAAyBC,EAAUC,GAClD,IAEIC,EACAtpF,EAHAupF,EAAUzvE,SAAS,WAIvB,IAHAyvE,EAAQj6D,aAAa,SAAU85D,GAG1BppF,EAAI,EAAGA,EAAIqpF,EAAI5wF,OAAQuH,GAAK,GAC/BspF,EAAcxvE,SAAS,gBACXwV,aAAa,KAAM+5D,EAAIrpF,IACnCupF,EAAQxhF,YAAYuhF,GACpBC,EAAQxhF,YAAYuhF,GAEtB,OAAOC,CACb,GAGE,IAAIC,kBAAoB,mFACxB,SAASC,cAAc1wF,EAAQ+xD,EAAep8B,EAAM3e,EAAI7X,GACtDJ,KAAKgzD,cAAgBA,EACrB,IAAIP,EAAgBzwC,SAAS,iBAC7BywC,EAAcj7B,aAAa,OAAQ,UACnCi7B,EAAcj7B,aAAa,8BAA+B,aAC1Di7B,EAAcj7B,aAAa,SAAUk6D,kBAAoB,QACzD1xF,KAAK4xF,aAAen/B,EACpBA,EAAcj7B,aAAa,SAAUvf,EAAK,WAC1ChX,EAAOgP,YAAYwiD,IACnBA,EAAgBzwC,SAAS,kBACXwV,aAAa,OAAQ,UACnCi7B,EAAcj7B,aAAa,8BAA+B,QAC1Di7B,EAAcj7B,aAAa,SAAU,2CACrCi7B,EAAcj7B,aAAa,SAAUvf,EAAK,WAC1ChX,EAAOgP,YAAYwiD,GACnBzyD,KAAK6xF,aAAep/B,EACpB,IAAIg/B,EAAUzxF,KAAKqxF,gBAAgBp5E,EAAI,CAAC7X,EAAQ6X,EAAK,UAAWA,EAAK,YACrEhX,EAAOgP,YAAYwhF,EACvB,CAYE,SAASK,cAAc7wF,EAAQ+xD,EAAep8B,EAAM3e,GAClDjY,KAAKgzD,cAAgBA,EACrB,IAAIP,EAAgBzwC,SAAS,iBAC7BywC,EAAcj7B,aAAa,OAAQ,UACnCi7B,EAAcj7B,aAAa,8BAA+B,QAC1Di7B,EAAcj7B,aAAa,SAAU,2CACrCi7B,EAAcj7B,aAAa,SAAUvf,GACrChX,EAAOgP,YAAYwiD,GACnBzyD,KAAK6xF,aAAep/B,CACxB,CASE,SAASs/B,gBAAgBv/B,EAAKQ,EAAep8B,GAC3C52B,KAAKgyF,aAAc,EACnBhyF,KAAKgzD,cAAgBA,EACrBhzD,KAAK42B,KAAOA,EACZ52B,KAAK0pC,MAAQ,EACjB,CA0GE,SAASuoD,iBAAiBhxF,EAAQ+xD,EAAep8B,EAAM3e,GACrDjY,KAAKgzD,cAAgBA,EACrB,IAAIP,EAAgBzwC,SAAS,iBAC7BywC,EAAcj7B,aAAa,OAAQ,UACnCi7B,EAAcj7B,aAAa,8BAA+B,aAC1Di7B,EAAcj7B,aAAa,SAAU,wFACrCv2B,EAAOgP,YAAYwiD,GACnB,IAAIy/B,EAAsBlwE,SAAS,uBACnCkwE,EAAoB16D,aAAa,8BAA+B,QAChE06D,EAAoB16D,aAAa,SAAUvf,GAC3CjY,KAAK6xF,aAAeK,EACpB,IAAIC,EAAUnwE,SAAS,WACvBmwE,EAAQ36D,aAAa,OAAQ,SAC7B06D,EAAoBjiF,YAAYkiF,GAChCnyF,KAAKmyF,QAAUA,EACf,IAAIC,EAAUpwE,SAAS,WACvBowE,EAAQ56D,aAAa,OAAQ,SAC7B06D,EAAoBjiF,YAAYmiF,GAChCpyF,KAAKoyF,QAAUA,EACf,IAAIC,EAAUrwE,SAAS,WACvBqwE,EAAQ76D,aAAa,OAAQ,SAC7B06D,EAAoBjiF,YAAYoiF,GAChCryF,KAAKqyF,QAAUA,EACfpxF,EAAOgP,YAAYiiF,EACvB,CAeE,SAASI,mBAAmBrxF,EAAQ+xD,EAAep8B,EAAM3e,GACvDjY,KAAKgzD,cAAgBA,EACrB,IAAIlJ,EAAiB9pD,KAAKgzD,cAAclJ,eACpCooC,EAAsBlwE,SAAS,wBAG/B8nC,EAAe,IAAItiD,EAAEtG,GAAgC,IAA3B4oD,EAAe,IAAItiD,EAAE0C,GAAW4/C,EAAe,IAAItiD,EAAEtG,GAAgC,IAA3B4oD,EAAe,IAAItiD,EAAE0C,GAAW4/C,EAAe,IAAItiD,EAAEtG,GAAgC,IAA3B4oD,EAAe,IAAItiD,EAAE0C,GAAW4/C,EAAe,IAAItiD,EAAEtG,GAAgC,IAA3B4oD,EAAe,IAAItiD,EAAE0C,GAAW4/C,EAAe,IAAItiD,EAAEtG,GAAgC,IAA3B4oD,EAAe,IAAItiD,EAAE0C,KACzRlK,KAAKmyF,QAAUnyF,KAAKuyF,aAAa,UAAWL,KAG1CpoC,EAAe,IAAItiD,EAAEtG,GAAgC,IAA3B4oD,EAAe,IAAItiD,EAAE0C,GAAW4/C,EAAe,IAAItiD,EAAEtG,GAAgC,IAA3B4oD,EAAe,IAAItiD,EAAE0C,GAAW4/C,EAAe,IAAItiD,EAAEtG,GAAgC,IAA3B4oD,EAAe,IAAItiD,EAAE0C,GAAW4/C,EAAe,IAAItiD,EAAEtG,GAAgC,IAA3B4oD,EAAe,IAAItiD,EAAE0C,GAAW4/C,EAAe,IAAItiD,EAAEtG,GAAgC,IAA3B4oD,EAAe,IAAItiD,EAAE0C,KACzRlK,KAAKoyF,QAAUpyF,KAAKuyF,aAAa,UAAWL,KAG1CpoC,EAAe,IAAItiD,EAAEtG,GAAgC,IAA3B4oD,EAAe,IAAItiD,EAAE0C,GAAW4/C,EAAe,IAAItiD,EAAEtG,GAAgC,IAA3B4oD,EAAe,IAAItiD,EAAE0C,GAAW4/C,EAAe,IAAItiD,EAAEtG,GAAgC,IAA3B4oD,EAAe,IAAItiD,EAAE0C,GAAW4/C,EAAe,IAAItiD,EAAEtG,GAAgC,IAA3B4oD,EAAe,IAAItiD,EAAE0C,GAAW4/C,EAAe,IAAItiD,EAAEtG,GAAgC,IAA3B4oD,EAAe,IAAItiD,EAAE0C,KACzRlK,KAAKqyF,QAAUryF,KAAKuyF,aAAa,UAAWL,KAG1CpoC,EAAe,IAAItiD,EAAEtG,GAAgC,IAA3B4oD,EAAe,IAAItiD,EAAE0C,GAAW4/C,EAAe,IAAItiD,EAAEtG,GAAgC,IAA3B4oD,EAAe,IAAItiD,EAAE0C,GAAW4/C,EAAe,IAAItiD,EAAEtG,GAAgC,IAA3B4oD,EAAe,IAAItiD,EAAE0C,GAAW4/C,EAAe,IAAItiD,EAAEtG,GAAgC,IAA3B4oD,EAAe,IAAItiD,EAAE0C,GAAW4/C,EAAe,IAAItiD,EAAEtG,GAAgC,IAA3B4oD,EAAe,IAAItiD,EAAE0C,KACzRlK,KAAKwyF,QAAUxyF,KAAKuyF,aAAa,UAAWL,KAG1ClyF,KAAKmyF,SAAWnyF,KAAKoyF,SAAWpyF,KAAKqyF,SAAWryF,KAAKwyF,WACvDN,EAAoB16D,aAAa,8BAA+B,QAChEv2B,EAAOgP,YAAYiiF,KAEjBpoC,EAAe,GAAGtiD,EAAEtG,GAA+B,IAA1B4oD,EAAe,GAAGtiD,EAAE0C,GAAW4/C,EAAe,GAAGtiD,EAAEtG,GAA+B,IAA1B4oD,EAAe,GAAGtiD,EAAE0C,GAAW4/C,EAAe,GAAGtiD,EAAEtG,GAA+B,IAA1B4oD,EAAe,GAAGtiD,EAAE0C,GAAW4/C,EAAe,GAAGtiD,EAAEtG,GAA+B,IAA1B4oD,EAAe,GAAGtiD,EAAE0C,GAAW4/C,EAAe,GAAGtiD,EAAEtG,GAA+B,IAA1B4oD,EAAe,GAAGtiD,EAAE0C,MAC/QgoF,EAAsBlwE,SAAS,wBACXwV,aAAa,8BAA+B,QAChE06D,EAAoB16D,aAAa,SAAUvf,GAC3ChX,EAAOgP,YAAYiiF,GACnBlyF,KAAKyyF,gBAAkBzyF,KAAKuyF,aAAa,UAAWL,GACpDlyF,KAAK0yF,gBAAkB1yF,KAAKuyF,aAAa,UAAWL,GACpDlyF,KAAK2yF,gBAAkB3yF,KAAKuyF,aAAa,UAAWL,GAE1D,CAgEE,SAASU,oBAAoB3xF,EAAQ+xD,EAAep8B,EAAM3e,EAAI7X,GAC5D,IAAIyyF,EAAmB7/B,EAAc3iC,UAAUI,WAAWk4B,aAAaggB,WACnEA,EAAa3V,EAAcpgD,KAAK2uD,IAAMsxB,EAC1C5xF,EAAOu2B,aAAa,IAAKmxC,EAAW3pE,GAAK6zF,EAAiB7zF,GAC1DiC,EAAOu2B,aAAa,IAAKmxC,EAAWn/D,GAAKqpF,EAAiBrpF,GAC1DvI,EAAOu2B,aAAa,QAASmxC,EAAWzjE,OAAS2tF,EAAiB3tF,OAClEjE,EAAOu2B,aAAa,SAAUmxC,EAAWxjE,QAAU0tF,EAAiB1tF,QACpEnF,KAAKgzD,cAAgBA,EACrB,IAAI8/B,EAAiB9wE,SAAS,kBAC9B8wE,EAAet7D,aAAa,KAAM,eAClCs7D,EAAet7D,aAAa,SAAUvf,EAAK,kBAC3C66E,EAAet7D,aAAa,eAAgB,KAC5Cx3B,KAAK8yF,eAAiBA,EACtB7xF,EAAOgP,YAAY6iF,GACnB,IAAIC,EAAW/wE,SAAS,YACxB+wE,EAASv7D,aAAa,KAAM,MAC5Bu7D,EAASv7D,aAAa,KAAM,KAC5Bu7D,EAASv7D,aAAa,KAAMvf,EAAK,kBACjC86E,EAASv7D,aAAa,SAAUvf,EAAK,kBACrCjY,KAAK+yF,SAAWA,EAChB9xF,EAAOgP,YAAY8iF,GACnB,IAAIC,EAAUhxE,SAAS,WACvBgxE,EAAQx7D,aAAa,cAAe,WACpCw7D,EAAQx7D,aAAa,gBAAiB,KACtCw7D,EAAQx7D,aAAa,SAAUvf,EAAK,kBACpCjY,KAAKgzF,QAAUA,EACf/xF,EAAOgP,YAAY+iF,GACnB,IAAIC,EAAcjxE,SAAS,eAC3BixE,EAAYz7D,aAAa,KAAMvf,EAAK,kBACpCg7E,EAAYz7D,aAAa,MAAOvf,EAAK,kBACrCg7E,EAAYz7D,aAAa,WAAY,MACrCy7D,EAAYz7D,aAAa,SAAUvf,EAAK,kBACxChX,EAAOgP,YAAYgjF,GACnB,IAAIxB,EAAUzxF,KAAKqxF,gBAAgBp5E,EAAI,CAACA,EAAK,iBAAkB7X,IAC/Da,EAAOgP,YAAYwhF,EAEvB,CA1TEj3E,gBAAgB,CAAC42E,qBAAsBO,eACvCA,cAAc9uF,UAAU0wB,YAAc,SAAU2jB,GAC9C,GAAIA,GAAel3C,KAAKgzD,cAAcztB,KAAM,CAC1C,IAAI2tD,EAAalzF,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EACpDipF,EAAanzF,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EACpDonD,EAAUtxD,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EAAI,IACzDlK,KAAK4xF,aAAap6D,aAAa,SAAUk6D,kBAAoB,IAAMpgC,EAAU,MAC7EtxD,KAAK6xF,aAAar6D,aAAa,SAAU27D,EAAW,GAAKD,EAAW,GAAK,UAAYA,EAAW,GAAK,KAAOC,EAAW,GAAKD,EAAW,IAAM,UAAYA,EAAW,GAAK,KAAOC,EAAW,GAAKD,EAAW,IAAM,UAAYA,EAAW,GAAK,aACnP,CACA,EAYEpB,cAAcjvF,UAAU0wB,YAAc,SAAU2jB,GAC9C,GAAIA,GAAel3C,KAAKgzD,cAAcztB,KAAM,CAC1C,IAAIn5B,EAAQpM,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EAC/ConD,EAAUtxD,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EACrDlK,KAAK6xF,aAAar6D,aAAa,SAAU,WAAaprB,EAAM,GAAK,YAAcA,EAAM,GAAK,YAAcA,EAAM,GAAK,UAAYklD,EAAU,KAC/I,CACA,EAQEygC,gBAAgBlvF,UAAUsuF,WAAa,WACrC,IACIxuE,EACAywE,EACAlrF,EACA0S,EAJAy4E,EAAerzF,KAAK42B,KAAK01B,aAAa7rD,UAAYT,KAAK42B,KAAK01B,aAAagnC,WAgB7E,IAXiD,IAA7CtzF,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,GACzC0Q,EAAM5a,KAAK42B,KAAK40B,YAAY1nC,gBAAgBnjB,OAC5CuH,EAAI,GAGJ0S,EAAU,GADV1S,EAAIlI,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EAAI,IAGjDkpF,EAAYpxE,SAAS,MACXwV,aAAa,OAAQ,QAC/B47D,EAAU57D,aAAa,iBAAkB,SACzC47D,EAAU57D,aAAa,oBAAqB,GACpCtvB,EAAI0S,EAAK1S,GAAK,EACpBya,EAAOX,SAAS,QAChBoxE,EAAUnjF,YAAY0S,GACtB3iB,KAAK0pC,MAAMr/B,KAAK,CACd7C,EAAGmb,EACHmrB,EAAG5lC,IAGP,GAAkD,IAA9ClI,KAAKgzD,cAAclJ,eAAe,IAAItiD,EAAE0C,EAAS,CACnD,IAAIkmD,EAAOpuC,SAAS,QAChB/J,EAAKsI,kBACT6vC,EAAK54B,aAAa,KAAMvf,GACxBm4C,EAAK54B,aAAa,YAAa,SAC/B44B,EAAKngD,YAAYmjF,GACjBpzF,KAAK42B,KAAKnG,WAAWC,KAAKzgB,YAAYmgD,GACtC,IAAItmD,EAAIkY,SAAS,KAEjB,IADAlY,EAAE0tB,aAAa,OAAQ,OAASld,kBAAoB,IAAMrC,EAAK,KACxDo7E,EAAa,IAClBvpF,EAAEmG,YAAYojF,EAAa,IAE7BrzF,KAAK42B,KAAK01B,aAAar8C,YAAYnG,GACnC9J,KAAKo1D,OAAShF,EACdgjC,EAAU57D,aAAa,SAAU,OACvC,MAAW,GAAkD,IAA9Cx3B,KAAKgzD,cAAclJ,eAAe,IAAItiD,EAAE0C,GAAyD,IAA9ClK,KAAKgzD,cAAclJ,eAAe,IAAItiD,EAAE0C,EAAS,CAC7G,GAAkD,IAA9ClK,KAAKgzD,cAAclJ,eAAe,IAAItiD,EAAE0C,EAE1C,IADAmpF,EAAerzF,KAAK42B,KAAK01B,aAAa7rD,UAAYT,KAAK42B,KAAK01B,aAAagnC,WAClED,EAAa1yF,QAClBX,KAAK42B,KAAK01B,aAAa9E,YAAY6rC,EAAa,IAGpDrzF,KAAK42B,KAAK01B,aAAar8C,YAAYmjF,GACnCpzF,KAAK42B,KAAK01B,aAAainC,gBAAgB,QACvCH,EAAU57D,aAAa,SAAU,OACvC,CACIx3B,KAAKgyF,aAAc,EACnBhyF,KAAKwzF,WAAaJ,CACtB,EACErB,gBAAgBlvF,UAAU0wB,YAAc,SAAU2jB,GAIhD,IAAIhvC,EAHClI,KAAKgyF,aACRhyF,KAAKmxF,aAGP,IACI/gC,EACAztC,EAFA/H,EAAM5a,KAAK0pC,MAAM/oC,OAGrB,IAAKuH,EAAI,EAAGA,EAAI0S,EAAK1S,GAAK,EACxB,IAAwB,IAApBlI,KAAK0pC,MAAMxhC,GAAG4lC,IAChBsiB,EAAOpwD,KAAK42B,KAAK40B,YAAY4D,SAASpvD,KAAK0pC,MAAMxhC,GAAG4lC,GACpDnrB,EAAO3iB,KAAK0pC,MAAMxhC,GAAGV,GACjB0vC,GAAel3C,KAAKgzD,cAAcztB,MAAQ6qB,EAAK77C,KAAKgxB,OACtD5iB,EAAK6U,aAAa,IAAK44B,EAAKN,UAE1B5Y,GAAel3C,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE+9B,MAAQvlC,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE+9B,MAAQvlC,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE+9B,MAAQvlC,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE+9B,MAAQ6qB,EAAK77C,KAAKgxB,MAAM,CAC7N,IAAIkuD,EACJ,GAAiD,IAA7CzzF,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,GAAwD,MAA7ClK,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EAAW,CACtG,IAAIjC,EAAmG,IAA/FoL,KAAK+K,IAAIpe,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EAAGlK,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,GAC9F7K,EAAmG,IAA/FgU,KAAK6K,IAAIle,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EAAGlK,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,GAC9F2jC,EAAIlrB,EAAK+wE,iBACbD,EAAiB,SAAW5lD,EAAI5lC,EAAI,IACpC,IAGIub,EAHAmwE,EAAa9lD,GAAKxuC,EAAI4I,GACtBgqB,EAAU,EAA+C,EAA3CjyB,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EAAQlK,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EAAI,IACxG0pF,EAAQvgF,KAAK2K,MAAM21E,EAAa1hE,GAEpC,IAAKzO,EAAI,EAAGA,EAAIowE,EAAOpwE,GAAK,EAC1BiwE,GAAkB,KAAkD,EAA3CzzF,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EAAQlK,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EAAI,IAAO,IAE5HupF,GAAkB,KAAW,GAAJ5lD,EAAS,MAC9C,MACY4lD,EAAiB,KAAkD,EAA3CzzF,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EAAQlK,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EAAI,IAEpHyY,EAAK6U,aAAa,mBAAoBi8D,EAChD,CASI,IANIv8C,GAAel3C,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE+9B,OACxDvlC,KAAKwzF,WAAWh8D,aAAa,eAA2D,EAA3Cx3B,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,IAElFgtC,GAAel3C,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE+9B,OACxDvlC,KAAKwzF,WAAWh8D,aAAa,UAAWx3B,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,IAE/B,IAA9ClK,KAAKgzD,cAAclJ,eAAe,IAAItiD,EAAE0C,GAAyD,IAA9ClK,KAAKgzD,cAAclJ,eAAe,IAAItiD,EAAE0C,KACzFgtC,GAAel3C,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE+9B,MAAM,CAC9D,IAAIn5B,EAAQpM,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EACnDlK,KAAKwzF,WAAWh8D,aAAa,SAAU,OAASzZ,QAAmB,IAAX3R,EAAM,IAAY,IAAM2R,QAAmB,IAAX3R,EAAM,IAAY,IAAM2R,QAAmB,IAAX3R,EAAM,IAAY,IAClJ,CAEA,EA2BE6lF,iBAAiBpvF,UAAU0wB,YAAc,SAAU2jB,GACjD,GAAIA,GAAel3C,KAAKgzD,cAAcztB,KAAM,CAC1C,IAAIsuD,EAAS7zF,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EAChD4pF,EAAS9zF,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EAChD6pF,EAAS/zF,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EAChD8pF,EAASD,EAAO,GAAK,IAAMD,EAAO,GAAK,IAAMD,EAAO,GACpDI,EAASF,EAAO,GAAK,IAAMD,EAAO,GAAK,IAAMD,EAAO,GACpDK,EAASH,EAAO,GAAK,IAAMD,EAAO,GAAK,IAAMD,EAAO,GACxD7zF,KAAKmyF,QAAQ36D,aAAa,cAAew8D,GACzCh0F,KAAKoyF,QAAQ56D,aAAa,cAAey8D,GACzCj0F,KAAKqyF,QAAQ76D,aAAa,cAAe08D,EAC/C,CACA,EAsCE5B,mBAAmBzvF,UAAU0vF,aAAe,SAAU71F,EAAMw1F,GAC1D,IAAIz8B,EAASzzC,SAAStlB,GAGtB,OAFA+4D,EAAOj+B,aAAa,OAAQ,SAC5B06D,EAAoBjiF,YAAYwlD,GACzBA,CACX,EACE68B,mBAAmBzvF,UAAUsxF,cAAgB,SAAUC,EAAYC,EAAYC,EAAOC,EAAaC,GAajG,IAZA,IAEIh4D,EAMAi4D,EARApsD,EAAM,EAGNjqB,EAAM/K,KAAK+K,IAAIg2E,EAAYC,GAC3Bn2E,EAAM7K,KAAK6K,IAAIk2E,EAAYC,GAC3BK,EAAQ5xF,MAAMpD,KAAK,KAAM,CAC3BiB,OALa,MAQX6mC,EAAM,EACNmtD,EAAcH,EAAcD,EAC5BK,EAAaP,EAAaD,EACvB/rD,GAAO,KAGVosD,GAFFj4D,EAAO6L,EAAM,MACDjqB,EACGw2E,EAAa,EAAIJ,EAAcD,EACnC/3D,GAAQte,EACJ02E,EAAa,EAAIL,EAAcC,EAE/BD,EAAcI,EAActhF,KAAKuK,KAAK4e,EAAO43D,GAAcQ,EAAY,EAAIN,GAE1FI,EAAMltD,GAAOitD,EACbjtD,GAAO,EACPa,GAAO,QAET,OAAOqsD,EAAMvzF,KAAK,IACtB,EACEmxF,mBAAmBzvF,UAAU0wB,YAAc,SAAU2jB,GACnD,GAAIA,GAAel3C,KAAKgzD,cAAcztB,KAAM,CAC1C,IAAI9mB,EACAqrC,EAAiB9pD,KAAKgzD,cAAclJ,eACpC9pD,KAAKyyF,kBAAoBv7C,GAAe4S,EAAe,GAAGtiD,EAAE+9B,MAAQukB,EAAe,GAAGtiD,EAAE+9B,MAAQukB,EAAe,GAAGtiD,EAAE+9B,MAAQukB,EAAe,GAAGtiD,EAAE+9B,MAAQukB,EAAe,GAAGtiD,EAAE+9B,QAC9K9mB,EAAMze,KAAKm0F,cAAcrqC,EAAe,GAAGtiD,EAAE0C,EAAG4/C,EAAe,GAAGtiD,EAAE0C,EAAG4/C,EAAe,GAAGtiD,EAAE0C,EAAG4/C,EAAe,GAAGtiD,EAAE0C,EAAG4/C,EAAe,GAAGtiD,EAAE0C,GACzIlK,KAAKyyF,gBAAgBj7D,aAAa,cAAe/Y,GACjDze,KAAK0yF,gBAAgBl7D,aAAa,cAAe/Y,GACjDze,KAAK2yF,gBAAgBn7D,aAAa,cAAe/Y,IAE/Cze,KAAKmyF,UAAYj7C,GAAe4S,EAAe,IAAItiD,EAAE+9B,MAAQukB,EAAe,IAAItiD,EAAE+9B,MAAQukB,EAAe,IAAItiD,EAAE+9B,MAAQukB,EAAe,IAAItiD,EAAE+9B,MAAQukB,EAAe,IAAItiD,EAAE+9B,QAC3K9mB,EAAMze,KAAKm0F,cAAcrqC,EAAe,IAAItiD,EAAE0C,EAAG4/C,EAAe,IAAItiD,EAAE0C,EAAG4/C,EAAe,IAAItiD,EAAE0C,EAAG4/C,EAAe,IAAItiD,EAAE0C,EAAG4/C,EAAe,IAAItiD,EAAE0C,GAC9IlK,KAAKmyF,QAAQ36D,aAAa,cAAe/Y,IAEvCze,KAAKoyF,UAAYl7C,GAAe4S,EAAe,IAAItiD,EAAE+9B,MAAQukB,EAAe,IAAItiD,EAAE+9B,MAAQukB,EAAe,IAAItiD,EAAE+9B,MAAQukB,EAAe,IAAItiD,EAAE+9B,MAAQukB,EAAe,IAAItiD,EAAE+9B,QAC3K9mB,EAAMze,KAAKm0F,cAAcrqC,EAAe,IAAItiD,EAAE0C,EAAG4/C,EAAe,IAAItiD,EAAE0C,EAAG4/C,EAAe,IAAItiD,EAAE0C,EAAG4/C,EAAe,IAAItiD,EAAE0C,EAAG4/C,EAAe,IAAItiD,EAAE0C,GAC9IlK,KAAKoyF,QAAQ56D,aAAa,cAAe/Y,IAEvCze,KAAKqyF,UAAYn7C,GAAe4S,EAAe,IAAItiD,EAAE+9B,MAAQukB,EAAe,IAAItiD,EAAE+9B,MAAQukB,EAAe,IAAItiD,EAAE+9B,MAAQukB,EAAe,IAAItiD,EAAE+9B,MAAQukB,EAAe,IAAItiD,EAAE+9B,QAC3K9mB,EAAMze,KAAKm0F,cAAcrqC,EAAe,IAAItiD,EAAE0C,EAAG4/C,EAAe,IAAItiD,EAAE0C,EAAG4/C,EAAe,IAAItiD,EAAE0C,EAAG4/C,EAAe,IAAItiD,EAAE0C,EAAG4/C,EAAe,IAAItiD,EAAE0C,GAC9IlK,KAAKqyF,QAAQ76D,aAAa,cAAe/Y,IAEvCze,KAAKwyF,UAAYt7C,GAAe4S,EAAe,IAAItiD,EAAE+9B,MAAQukB,EAAe,IAAItiD,EAAE+9B,MAAQukB,EAAe,IAAItiD,EAAE+9B,MAAQukB,EAAe,IAAItiD,EAAE+9B,MAAQukB,EAAe,IAAItiD,EAAE+9B,QAC3K9mB,EAAMze,KAAKm0F,cAAcrqC,EAAe,IAAItiD,EAAE0C,EAAG4/C,EAAe,IAAItiD,EAAE0C,EAAG4/C,EAAe,IAAItiD,EAAE0C,EAAG4/C,EAAe,IAAItiD,EAAE0C,EAAG4/C,EAAe,IAAItiD,EAAE0C,GAC9IlK,KAAKwyF,QAAQh7D,aAAa,cAAe/Y,GAEjD,CACA,EAuCEjE,gBAAgB,CAAC42E,qBAAsBwB,qBACvCA,oBAAoB/vF,UAAU0wB,YAAc,SAAU2jB,GACpD,GAAIA,GAAel3C,KAAKgzD,cAAcztB,KAAM,CAI1C,IAHI2R,GAAel3C,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE+9B,OACxDvlC,KAAK8yF,eAAet7D,aAAa,eAAgBx3B,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EAAI,GAE1FgtC,GAAel3C,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE+9B,KAAM,CAC9D,IAAIsvD,EAAM70F,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EACjDlK,KAAKgzF,QAAQx7D,aAAa,cAAerW,SAAS9N,KAAKC,MAAe,IAATuhF,EAAI,IAAWxhF,KAAKC,MAAe,IAATuhF,EAAI,IAAWxhF,KAAKC,MAAe,IAATuhF,EAAI,KAC7H,CAIM,IAHI39C,GAAel3C,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE+9B,OACxDvlC,KAAKgzF,QAAQx7D,aAAa,gBAAiBx3B,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EAAI,KAEpFgtC,GAAel3C,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE+9B,MAAQvlC,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE+9B,KAAM,CAC7G,IAAIwb,EAAW/gD,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EAClDuhC,GAASzrC,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EAAI,IAAM0U,UAC1D5f,EAAI+hD,EAAW1tC,KAAKoxB,IAAIgH,GACxBjiC,EAAIu3C,EAAW1tC,KAAKuwB,IAAI6H,GAC5BzrC,KAAK+yF,SAASv7D,aAAa,KAAMx4B,GACjCgB,KAAK+yF,SAASv7D,aAAa,KAAMhuB,EACzC,CACA,CACA,EAEE,IAAIsrF,iBAAmB,GACvB,SAASC,gBAAgBC,EAAYhiC,EAAep8B,GAClD52B,KAAKgyF,aAAc,EACnBhyF,KAAKgzD,cAAgBA,EACrBhzD,KAAKg1F,WAAaA,EAClBh1F,KAAK42B,KAAOA,EACZA,EAAKq9B,aAAejyC,SAAS,KAC7B4U,EAAKq9B,aAAahkD,YAAY2mB,EAAK01B,cACnC11B,EAAKq9B,aAAahkD,YAAY2mB,EAAKs9B,oBACnCt9B,EAAKy1B,YAAcz1B,EAAKq9B,YAC5B,CA+EE,SAASghC,sBAAsBh0F,EAAQ+xD,EAAep8B,EAAM3e,GAE1DhX,EAAOu2B,aAAa,IAAK,SACzBv2B,EAAOu2B,aAAa,IAAK,SACzBv2B,EAAOu2B,aAAa,QAAS,QAC7Bv2B,EAAOu2B,aAAa,SAAU,QAC9Bx3B,KAAKgzD,cAAgBA,EACrB,IAAI8/B,EAAiB9wE,SAAS,kBAC9B8wE,EAAet7D,aAAa,SAAUvf,GACtChX,EAAOgP,YAAY6iF,GACnB9yF,KAAK8yF,eAAiBA,CAC1B,CA4BE,SAASoC,kBAAkB,CAoC3B,SAASC,mBAAmB1rF,EAAGupD,GAC7BhzD,KAAK+0B,KAAKi+B,EACd,CAGE,SAASoiC,kBAAkB5oC,GACzBxsD,KAAK+0B,KAAKy3B,EACd,CAkCE,OAlMAuoC,gBAAgBlyF,UAAUwyF,WAAa,SAAUjlC,GAG/C,IAFA,IAAIloD,EAAI,EACJ0S,EAAMk6E,iBAAiBn0F,OACpBuH,EAAI0S,GAAK,CACd,GAAIk6E,iBAAiB5sF,KAAOkoD,EAC1B,OAAO0kC,iBAAiB5sF,GAE1BA,GAAK,CACX,CACI,OAAO,IACX,EACE6sF,gBAAgBlyF,UAAUyyF,gBAAkB,SAAUllC,EAAMmlC,GAC1D,IAAIxyC,EAAaqN,EAAK9D,aAAavJ,WACnC,GAAKA,EAAL,CAMA,IAHA,IASIyyC,EATA/0F,EAAWsiD,EAAWtiD,SACtByH,EAAI,EACJ0S,EAAMna,EAASE,OACZuH,EAAI0S,GACLna,EAASyH,KAAOkoD,EAAK9D,cAGzBpkD,GAAK,EAGHA,GAAK0S,EAAM,IACb46E,EAAY/0F,EAASyH,EAAI,IAE3B,IAAIutF,EAAUzzE,SAAS,OACvByzE,EAAQj+D,aAAa,OAAQ,IAAM+9D,GAC/BC,EACFzyC,EAAW/yC,aAAaylF,EAASD,GAEjCzyC,EAAW9yC,YAAYwlF,EAnB7B,CAqBA,EACEV,gBAAgBlyF,UAAU6yF,iBAAmB,SAAU9+D,EAAMw5B,GAC3D,IAAKpwD,KAAKq1F,WAAWjlC,GAAO,CAC1B,IAAImlC,EAAWh1E,kBACX60C,EAASpzC,SAAS,QACtBozC,EAAO59B,aAAa,KAAM44B,EAAK7D,SAC/B6I,EAAO59B,aAAa,YAAa,SACjCs9D,iBAAiBzqF,KAAK+lD,GACtB,IAAI1/B,EAAOkG,EAAKnG,WAAWC,KAC3BA,EAAKzgB,YAAYmlD,GACjB,IAAIugC,EAAS3zE,SAAS,UACtB2zE,EAAOn+D,aAAa,KAAM+9D,GAC1Bv1F,KAAKs1F,gBAAgBllC,EAAMmlC,GAC3BI,EAAO1lF,YAAYmgD,EAAK9D,cACxB57B,EAAKzgB,YAAY0lF,GACjB,IAAIF,EAAUzzE,SAAS,OACvByzE,EAAQj+D,aAAa,OAAQ,IAAM+9D,GACnCngC,EAAOnlD,YAAYwlF,GACnBrlC,EAAKx9C,KAAK8hD,IAAK,EACftE,EAAKx6B,MACX,CACIgB,EAAK++B,SAASvF,EAAK7D,QACvB,EACEwoC,gBAAgBlyF,UAAUsuF,WAAa,WAKrC,IAJA,IAAIxvD,EAAM3hC,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EAC7C+0C,EAAWj/C,KAAK42B,KAAKrS,KAAK06B,SAC1B/2C,EAAI,EACJ0S,EAAMqkC,EAASt+C,OACZuH,EAAI0S,GACLqkC,EAAS/2C,IAAM+2C,EAAS/2C,GAAG0K,KAAK+uB,MAAQA,GAC1C3hC,KAAK01F,iBAAiB11F,KAAK42B,KAAMqoB,EAAS/2C,IAE5CA,GAAK,EAEPlI,KAAKgyF,aAAc,CACvB,EACE+C,gBAAgBlyF,UAAU0wB,YAAc,WACjCvzB,KAAKgyF,aACRhyF,KAAKmxF,YAEX,EAcE8D,sBAAsBpyF,UAAU0wB,YAAc,SAAU2jB,GACtD,GAAIA,GAAel3C,KAAKgzD,cAAcztB,KAAM,CAE1C,IACIqwD,EADqB,GACb51F,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EAQ/C2rF,EAAa71F,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EACpD4rF,EAAuB,GAAdD,EAAkB,EAAID,EAC/BG,EAAuB,GAAdF,EAAkB,EAAID,EAEnC51F,KAAK8yF,eAAet7D,aAAa,eAAgBs+D,EAAS,IAAMC,GAMhE,IAAIC,EAAuD,GAA5Ch2F,KAAKgzD,cAAclJ,eAAe,GAAGtiD,EAAE0C,EAAS,OAAS,YACxElK,KAAK8yF,eAAet7D,aAAa,WAAYw+D,EACnD,CACA,EAGEd,gBAAgBryF,UAAUkyB,KAAO,SAAUy3B,GACzCxsD,KAAKwsD,eAAiBA,EACtBxsD,KAAKtD,KAAOqyD,YAAYC,iBACxBhvD,KAAKiwC,OAAS,IAAIxD,OAClBzsC,KAAKsxD,SAAU,EACftxD,KAAKulC,MAAO,EACZvlC,KAAK4wD,QAAS,CAClB,EACEskC,gBAAgBryF,UAAU0wB,YAAc,SAAU0iE,GAGhD,GAFAj2F,KAAK4wD,QAAS,EACd5wD,KAAKulC,MAAO,EACR0wD,GAAcj2F,KAAKwsD,eAAejnB,KAAM,CAC1C,IAAIukB,EAAiB9pD,KAAKwsD,eAAe1C,eACrC+kC,EAAS/kC,EAAe,GAAGtiD,EAAE0C,EAC7BjE,EAAW6jD,EAAe,GAAGtiD,EAAE0C,EAC/BgsF,EAA2C,IAA1BpsC,EAAe,GAAGtiD,EAAE0C,EACrCisF,EAAcrsC,EAAe,GAAGtiD,EAAE0C,EAClCksF,EAAaF,EAAiBC,EAAcrsC,EAAe,GAAGtiD,EAAE0C,EAChEsjC,EAAOsc,EAAe,GAAGtiD,EAAE0C,EAC3B+hF,EAAWniC,EAAe,GAAGtiD,EAAE0C,EAC/Bi5E,EAAWr5B,EAAe,GAAGtiD,EAAE0C,EACnClK,KAAKiwC,OAAOjG,QACZhqC,KAAKiwC,OAAOlC,WAAW8gD,EAAO,IAAKA,EAAO,GAAIA,EAAO,IACrD7uF,KAAKiwC,OAAOvC,MAAmB,IAAb0oD,EAAiC,IAAdD,EAAoB,GACzDn2F,KAAKiwC,OAAOlD,QAAQo2C,EAAWvkE,WAC/B5e,KAAKiwC,OAAOxC,cAAcD,EAAO5uB,WAAYqtE,EAAW,IAAMrtE,WAC9D5e,KAAKiwC,OAAOlC,UAAU9nC,EAAS,GAAIA,EAAS,GAAI,GAChDjG,KAAKulC,MAAO,EACRvlC,KAAKsxD,UAAYxH,EAAe,GAAGtiD,EAAE0C,IACvClK,KAAKsxD,QAAUxH,EAAe,GAAGtiD,EAAE0C,EACnClK,KAAK4wD,QAAS,EAEtB,CACA,EAKEp2C,gBAAgB,CAAC06E,iBAAkBC,oBAKnC36E,gBAAgB,CAAC06E,iBAAkBE,mBAGnC9mE,iBAAiB,SAAU4gD,gBAC3B5gD,iBAAiB,OAAQ8iD,gBACzB9iD,iBAAiB,MAAOw5C,aAGxBr0B,eAAeE,iBAAiB,KAAMG,cACtCL,eAAeE,iBAAiB,KAAMI,wBACtCN,eAAeE,iBAAiB,KAAM+D,kBACtCjE,eAAeE,iBAAiB,KAAMgE,sBACtClE,eAAeE,iBAAiB,KAAM2G,gBACtC7G,eAAeE,iBAAiB,KAAM6J,oBAGtC/7B,qBAAqB6kE,aACrB3kE,wBAAwByrE,cACxByD,eACAM,aAGA79B,iBAAiB,GAAIq+B,eAAe,GACpCr+B,iBAAiB,GAAIw+B,eAAe,GACpCx+B,iBAAiB,GAAIy+B,iBAAiB,GACtCz+B,iBAAiB,GAAI2+B,kBAAkB,GACvC3+B,iBAAiB,GAAIg/B,oBAAoB,GACzCh/B,iBAAiB,GAAIs/B,qBAAqB,GAC1Ct/B,iBAAiB,GAAIyhC,iBAAiB,GACtCzhC,iBAAiB,GAAI2hC,uBAAuB,GAC5C3hC,iBAAiB,GAAI6hC,oBAAoB,GACzClpB,eAAe,GAAImpB,mBAEZpjD,MAER,EArqhBgEqkD,OAAA3yF,QAAiBmW,yICGlF,SAASy8E,kBAAkB31E,EAAGsF,IAC3B,MAAQA,GAAKA,EAAItF,EAAEhgB,UAAYslB,EAAItF,EAAEhgB,QACtC,IAAK,IAAItB,EAAI,EAAG8I,EAAIrF,MAAMmjB,GAAI5mB,EAAI4mB,EAAG5mB,IAAK8I,EAAE9I,GAAKshB,EAAEthB,GACnD,OAAO8I,CACT,CACA,SAASouF,gBAAgB51E,GACvB,GAAI7d,MAAMC,QAAQ4d,GAAI,OAAOA,CAC/B,CACA,SAAS61E,gBAAgBn3F,EAAGshB,EAAG3Y,GAC7B,OAAQ2Y,EAAI81E,eAAe91E,MAAOthB,EAAIwB,OAAOe,eAAevC,EAAGshB,EAAG,CAChEzhB,MAAO8I,EACP/F,YAAY,EACZJ,cAAc,EACdM,UAAU,IACP9C,EAAEshB,GAAK3Y,EAAG3I,CACjB,CACA,SAASq3F,sBAAsB/1E,EAAGktB,GAChC,IAAI7lC,EAAI,MAAQ2Y,EAAI,KAAO,oBAAsBrkB,QAAUqkB,EAAErkB,OAAO2N,WAAa0W,EAAE,cACnF,GAAI,MAAQ3Y,EAAG,CACb,IAAI3I,EACF8I,EACAD,EACAoiB,EACArE,EAAI,GACJ1c,GAAI,EACJ8T,GAAI,EACN,IACE,GAAInV,GAAKF,EAAIA,EAAEtI,KAAKihB,IAAI3X,KAAM,IAAM6kC,QAG7B,OAAStkC,GAAKlK,EAAI6I,EAAExI,KAAKsI,IAAImB,QAAU8c,EAAE5b,KAAKhL,EAAEH,OAAQ+mB,EAAEtlB,SAAWktC,GAAItkC,GAAI,GACtF,CAAE,MAAOoX,GACPtD,GAAI,EAAIlV,EAAIwY,CACd,CAAC,QACC,IACE,IAAKpX,GAAK,MAAQvB,EAAE2uF,SAAWrsE,EAAItiB,EAAE2uF,SAAU91F,OAAOypB,KAAOA,GAAI,MACnE,CAAC,QACC,GAAIjN,EAAG,MAAMlV,CACf,CACF,CACA,OAAO8d,CACT,CACF,CACA,SAAS2wE,mBACP,MAAM,IAAIlvF,UAAU,4IACtB,CACA,SAASmvF,QAAQx3F,EAAGshB,GAClB,IAAI3Y,EAAInH,OAAOG,KAAK3B,GACpB,GAAIwB,OAAOi2F,sBAAuB,CAChC,IAAIz5E,EAAIxc,OAAOi2F,sBAAsBz3F,GACrCshB,IAAMtD,EAAIA,EAAEpc,OAAO,SAAU0f,GAC3B,OAAO9f,OAAOS,yBAAyBjC,EAAGshB,GAAG1e,UAC/C,IAAK+F,EAAEqC,KAAKhC,MAAML,EAAGqV,EACvB,CACA,OAAOrV,CACT,CACA,SAAS+uF,eAAe13F,GACtB,IAAK,IAAIshB,EAAI,EAAGA,EAAIvY,UAAUzH,OAAQggB,IAAK,CACzC,IAAI3Y,EAAI,MAAQI,UAAUuY,GAAKvY,UAAUuY,GAAK,CAAA,EAC9CA,EAAI,EAAIk2E,QAAQh2F,OAAOmH,IAAI,GAAIk+C,QAAQ,SAAUvlC,GAC/C61E,gBAAgBn3F,EAAGshB,EAAG3Y,EAAE2Y,GAC1B,GAAK9f,OAAOm2F,0BAA4Bn2F,OAAOuoF,iBAAiB/pF,EAAGwB,OAAOm2F,0BAA0BhvF,IAAM6uF,QAAQh2F,OAAOmH,IAAIk+C,QAAQ,SAAUvlC,GAC7I9f,OAAOe,eAAevC,EAAGshB,EAAG9f,OAAOS,yBAAyB0G,EAAG2Y,GACjE,EACF,CACA,OAAOthB,CACT,CACA,SAAS43F,yBAAyB53F,EAAG2I,GACnC,GAAI,MAAQ3I,EAAG,MAAO,CAAA,EACtB,IAAIge,EACFsD,EACAzY,EAAIgvF,8BAA8B73F,EAAG2I,GACvC,GAAInH,OAAOi2F,sBAAuB,CAChC,IAAI7uF,EAAIpH,OAAOi2F,sBAAsBz3F,GACrC,IAAKshB,EAAI,EAAGA,EAAI1Y,EAAEtH,OAAQggB,IAAKtD,EAAIpV,EAAE0Y,GAAI3Y,EAAE9D,SAASmZ,IAAM,CAAA,EAAG85E,qBAAqBz3F,KAAKL,EAAGge,KAAOnV,EAAEmV,GAAKhe,EAAEge,GAC5G,CACA,OAAOnV,CACT,CACA,SAASgvF,8BAA8Bv2E,EAAGthB,GACxC,GAAI,MAAQshB,EAAG,MAAO,CAAA,EACtB,IAAI3Y,EAAI,CAAA,EACR,IAAK,IAAIG,KAAKwY,EAAG,GAAI,CAAA,EAAG5f,eAAerB,KAAKihB,EAAGxY,GAAI,CACjD,GAAI9I,EAAE6E,SAASiE,GAAI,SACnBH,EAAEG,GAAKwY,EAAExY,EACX,CACA,OAAOH,CACT,CACA,SAASovF,eAAez2E,EAAGthB,GACzB,OAAOk3F,gBAAgB51E,IAAM+1E,sBAAsB/1E,EAAGthB,IAAMg4F,4BAA4B12E,EAAGthB,IAAMu3F,kBACnG,CACA,SAASU,aAAatvF,EAAG2Y,GACvB,GAAI,iBAAmB3Y,IAAMA,EAAG,OAAOA,EACvC,IAAI3I,EAAI2I,EAAE1L,OAAOi7F,aACjB,QAAI,IAAWl4F,EAAG,CAChB,IAAI6I,EAAI7I,EAAEK,KAAKsI,EAAG2Y,GAClB,GAAI,iBAAmBzY,EAAG,OAAOA,EACjC,MAAM,IAAIR,UAAU,+CACtB,CACA,OAAQ,WAAaiZ,EAAIhZ,OAASmL,QAAQ9K,EAC5C,CACA,SAASyuF,eAAezuF,GACtB,IAAIE,EAAIovF,aAAatvF,EAAG,UACxB,MAAO,iBAAmBE,EAAIA,EAAIA,EAAI,EACxC,CACA,SAASmvF,4BAA4B12E,EAAGsF,GACtC,GAAItF,EAAG,CACL,GAAI,iBAAmBA,EAAG,OAAO21E,kBAAkB31E,EAAGsF,GACtD,IAAIje,EAAI,CAAA,EAAGsZ,SAAS5hB,KAAKihB,GAAGlK,MAAM,MAClC,MAAO,WAAazO,GAAK2Y,EAAElhB,cAAgBuI,EAAI2Y,EAAElhB,YAAY7B,MAAO,QAAUoK,GAAK,QAAUA,EAAIlF,MAAM00F,KAAK72E,GAAK,cAAgB3Y,GAAK,2CAA2CyK,KAAKzK,GAAKsuF,kBAAkB31E,EAAGsF,QAAK,CACvN,CACF,CAEA,IAAIwxE,YAAc,CAAC,gBAAiB,OAAQ,WAAY,iBAAkB,aAAc,iBAAkB,eAAgB,iBAAkB,gBAAiB,cAAe,eAAgB,iBAAkB,cAAe,YAAa,YAAa,WAAY,OAAQ,aAAc,oBACrRC,UAAY,SAAmBz6F,EAAOsH,GACxC,IAAIkhB,EAAgBxoB,EAAMwoB,cACxB/M,EAAOzb,EAAMyb,KACbJ,EAAWrb,EAAMqb,SACjBwY,EAAiB7zB,EAAM6zB,eACvBrI,EAAaxrB,EAAMwrB,WACnB2M,EAAiBn4B,EAAMm4B,eACvBD,EAAel4B,EAAMk4B,aACrBE,EAAiBp4B,EAAMo4B,eACvBsiE,EAAgB16F,EAAM06F,cACtBC,EAAc36F,EAAM26F,YACpBC,EAAe56F,EAAM46F,aACrBC,EAAiB76F,EAAM66F,eACvBC,EAAc96F,EAAM86F,YACpBziE,EAAYr4B,EAAMq4B,UAClBr4B,EAAM+6F,UACN/6F,EAAMkyB,SACNlyB,EAAMW,KACNX,EAAMktB,WACNltB,EAAMuzB,iBACN,IAAIynE,EAAOhB,yBAAyBh6F,EAAOw6F,aAE3CS,EAAad,eADCllF,MAAAA,UAAS,GACgB,GACvCimF,EAAkBD,EAAW,GAC7BE,EAAqBF,EAAW,GAC9BG,EAAuBC,MAAAA,SACvBC,EAAqBD,MAAAA,OAAO,MAmPhC,OAhHAjmF,MAAAA,UAAU,WACR,IAAImmF,EA3Bc,WAClB,IACI30F,EADA40F,EAAgBrwF,UAAUzH,OAAS,QAAsB0F,IAAjB+B,UAAU,GAAmBA,UAAU,GAAK,CAAA,EAGxF,GAAKmwF,EAAmBrK,QAAxB,CAIwC,QAAvCrqF,EAAKw0F,EAAqBnK,eAA4B,IAAPrqF,GAAyBA,EAAG6nB,UAE5E,IAAI/uB,EAASo6F,eAAeA,eAAeA,eAAe,CAAA,EAAI95F,GAAQw7F,GAAgB,GAAI,CACxFpoE,UAAWkoE,EAAmBrK,UAMhC,OAHAmK,EAAqBnK,QAAUl8C,OAAOppB,cAAcjsB,GACpDy7F,IAAqBC,EAAqBnK,SAEnC,WACL,IAAIrqF,EACoC,QAAvCA,EAAKw0F,EAAqBnK,eAA4B,IAAPrqF,GAAyBA,EAAG6nB,UAC5E2sE,EAAqBnK,aAAU7nF,CACjC,CAfA,CAgBF,CAKkBuiB,GAEhB,OAAO,WACL,OAAO4vE,aAA6C,EAASA,GAC/D,CAEF,EAAG,CAAC/yE,EAAe/M,IAEnBrG,MAAAA,UAAU,WACHgmF,EAAqBnK,UAG1BmK,EAAqBnK,QAAQ51E,WAAaA,EAC5C,EAAG,CAACA,IAEJjG,MAAAA,UAAU,WACHgmF,EAAqBnK,UAIrBp9D,EAKAhuB,MAAMC,QAAQ+tB,IAAoBA,EAAenwB,UAKlD03F,EAAqBnK,QAAQt/D,gBAAkBkC,EAAe,IAAMunE,EAAqBnK,QAAQt/D,gBAAkBkC,EAAe,MACpIunE,EAAqBnK,QAAQt/D,gBAAkBkC,EAAe,IAGhEunE,EAAqBnK,QAAQp5D,WAAWhE,EAAe,GAAIA,EAAe,KAbxEunE,EAAqBnK,QAAQh5D,eAAc,GAc/C,EAAG,CAACpE,IASJze,MAAAA,UAAU,WACR,IA+BIqmF,EA/BmB,CAAC,CACtB96F,KAAM,WACN+6F,QAASlwE,GACR,CACD7qB,KAAM,eACN+6F,QAASvjE,GACR,CACDx3B,KAAM,aACN+6F,QAASxjE,GACR,CACDv3B,KAAM,eACN+6F,QAAStjE,GACR,CACDz3B,KAAM,eACN+6F,QAAShB,GACR,CACD/5F,KAAM,aACN+6F,QAASf,GACR,CACDh6F,KAAM,cACN+6F,QAASd,GACR,CACDj6F,KAAM,gBACN+6F,QAASb,GACR,CACDl6F,KAAM,YACN+6F,QAASZ,GACR,CACDn6F,KAAM,UACN+6F,QAASrjE,IAEsBr0B,OAAO,SAAU23F,GAChD,OAA2B,MAApBA,EAASD,OAClB,GACA,GAAKD,EAAU/3F,OAAf,CAGA,IAAIk4F,EAAiBH,EAAUpsF,IAM/B,SAAUssF,GACR,IAAI/0F,EAGJ,OAFwC,QAAvCA,EAAKw0F,EAAqBnK,eAA4B,IAAPrqF,GAAyBA,EAAGioB,iBAAiB8sE,EAASh7F,KAAMg7F,EAASD,SAE9G,WACL,IAAI90F,EACoC,QAAvCA,EAAKw0F,EAAqBnK,eAA4B,IAAPrqF,GAAyBA,EAAG8oB,oBAAoBisE,EAASh7F,KAAMg7F,EAASD,QAC1H,CACF,GAEA,OAAO,WACLE,EAAe3yC,QAAQ,SAAU4yC,GAC/B,OAAOA,GACT,EACF,CArBA,CAsBF,EAAG,CAACrwE,EAAY2M,EAAgBD,EAAcE,EAAgBsiE,EAAeC,EAAaC,EAAcC,EAAgBC,EAAaziE,IAQ9H,CACLyjE,KALsBr2F,MAAM0M,cAAc,MAAO2nF,eAAe,CAChExyF,MAAOA,EACPxH,IAAKw7F,GACJN,IAGD/7E,KA5OS,WACT,IAAIrY,EACoC,QAAvCA,EAAKw0F,EAAqBnK,eAA4B,IAAPrqF,GAAyBA,EAAGqY,MAC9E,EA0OEyX,KAtOS,WACT,IAAI9vB,EACoC,QAAvCA,EAAKw0F,EAAqBnK,eAA4B,IAAPrqF,GAAyBA,EAAG8vB,MAC9E,EAoOEjY,MAhOU,WACV,IAAI7X,EACoC,QAAvCA,EAAKw0F,EAAqBnK,eAA4B,IAAPrqF,GAAyBA,EAAG6X,OAC9E,EA8NEkZ,SAzNa,SAAkB24D,GAC/B,IAAI1pF,EACoC,QAAvCA,EAAKw0F,EAAqBnK,eAA4B,IAAPrqF,GAAyBA,EAAG+wB,SAAS24D,EACvF,EAuNEv5D,YAxMgB,SAAqB90B,EAAO+0B,GAC5C,IAAIpwB,EACoC,QAAvCA,EAAKw0F,EAAqBnK,eAA4B,IAAPrqF,GAAyBA,EAAGmwB,YAAY90B,EAAO+0B,EACjG,EAsMEI,YAlNgB,SAAqBn1B,EAAO+0B,GAC5C,IAAIpwB,EACoC,QAAvCA,EAAKw0F,EAAqBnK,eAA4B,IAAPrqF,GAAyBA,EAAGwwB,YAAYn1B,EAAO+0B,EACjG,EAgNEY,aAlMiB,SAAsBlV,GACvC,IAAI9b,EACoC,QAAvCA,EAAKw0F,EAAqBnK,eAA4B,IAAPrqF,GAAyBA,EAAGgxB,aAAalV,EAC3F,EAgME2U,aA1LiB,SAAsB9E,EAAUyF,GACjD,IAAIpxB,EACoC,QAAvCA,EAAKw0F,EAAqBnK,eAA4B,IAAPrqF,GAAyBA,EAAGywB,aAAa9E,EAAUyF,EACrG,EAwLE3B,YAnLgB,SAAqB0lE,GACrC,IAAIn1F,EACoC,QAAvCA,EAAKw0F,EAAqBnK,eAA4B,IAAPrqF,GAAyBA,EAAGyvB,YAAY0lE,EAC1F,EAiLEnjE,YA5KgB,SAAqBojE,GACrC,IAAIp1F,EACJ,OAA+C,QAAvCA,EAAKw0F,EAAqBnK,eAA4B,IAAPrqF,OAAgB,EAASA,EAAGgyB,YAAYojE,EACjG,EA0KEvtE,QAtKY,WACZ,IAAI7nB,EACoC,QAAvCA,EAAKw0F,EAAqBnK,eAA4B,IAAPrqF,GAAyBA,EAAG6nB,UAG5E2sE,EAAqBnK,aAAU7nF,CACjC,EAiKE6yF,sBAAuBX,EACvBJ,gBAAiBA,EACjBtpC,cAAewpC,EAAqBnK,QAExC,EAGA,SAASiL,uBAAuB9oE,GAC9B,IAAI+oE,EAAwB/oE,EAAUgpE,wBACpCh0F,EAAM+zF,EAAsB/zF,IAC5BF,EAASi0F,EAAsBj0F,OAGjC,OAFcmN,OAAOgnF,YAAcj0F,IACzBiN,OAAOgnF,YAAcn0F,EAEjC,CACA,SAASo0F,2BAA2BlpE,EAAWmpE,EAASC,GACtD,IAAIC,EAAyBrpE,EAAUgpE,wBACrCh0F,EAAMq0F,EAAuBr0F,IAM/B,MAAO,CACLrG,GAHOw6F,EAHAE,EAAuBj0F,MACtBi0F,EAAuBx0F,MAM/BsE,GAHOiwF,EAAUp0F,GAFRq0F,EAAuBv0F,OAOpC,CACA,IAAIw0F,qBAAuB,SAA8BC,GACvD,IAAIC,EAAaD,EAAKC,WACpBhrC,EAAgB+qC,EAAK/qC,cACrB1qD,EAAOy1F,EAAKz1F,KACZ21F,EAAUF,EAAKE,QACjBznF,MAAAA,UAAU,WACR,IAAI+d,EAAUypE,EAAW3L,QACzB,GAAK99D,GAAYy+B,GAAkBirC,EAAQn5F,OAA3C,CAGAkuD,EAAcl7B,OACd,IAuDMomE,EAgDAC,EAGAC,EAzGAC,EACAC,EAkHN,OAAQh2F,GACN,IAAK,SACH,OArHE+1F,EAAkB,KAClBC,EAAgB,WAClB,IAAIC,EAAiBjB,uBAAuB/oE,GAExCiqE,EAASP,EAAQQ,KAAK,SAAUC,GAClC,IAAIC,EAAaD,EAAMC,WACvB,OAAOA,GAAcJ,GAAkBI,EAAW,IAAMJ,GAAkBI,EAAW,EACvF,GAEA,GAAKH,EAAL,CAGA,GAAoB,SAAhBA,EAAO39F,MAAmB29F,EAAOG,YAAuC,IAAzBH,EAAO1b,OAAOh+E,OAAc,CAE7E,IAAI85F,EAAYJ,EAAO1b,OAAO,GAAKtrE,KAAKwsC,MAAMu6C,EAAiBC,EAAOG,WAAW,KAAOH,EAAOG,WAAW,GAAKH,EAAOG,WAAW,IAAMH,EAAO1b,OAAO;oEAErJ9vB;EAAc76B,YAAYymE,EAAY5rC,EAAc5uC,WAAa,GAAG,EACtE,CACoB,SAAhBo6E,EAAO39F,OAEe,OAApBw9F,GAOEA,IAAoBG,EAAO1b,QAIpB9vB,EAAc3/B,YATzB2/B,EAAcv6B,aAAa+lE,EAAO1b,QAAQ,GAC1Cub,EAAkBG,EAAO1b,QAeT,SAAhB0b,EAAO39F,MAAmBmyD,EAAc3/B,WAE1C2/B,EAAc35B,eAAc,GAC5B25B,EAAc3yC,QAEI,SAAhBm+E,EAAO39F,MAETmyD,EAAc76B,YAAYqmE,EAAO1b,OAAO,GAAK9vB,EAAc5uC,WAAa,GAAG,EAlC7E,CAoCF,EACArQ,SAASkc,iBAAiB,SAAUquE,GAC7B,WACLvqF,SAAS+c,oBAAoB,SAAUwtE,EACzC,EAmEA,IAAK,SACH,OAjEEJ,EAAe,SAAsBW,EAAIC,GAC3C,IAAI37F,EAAI07F,EACJlxF,EAAImxF,EAER,IAAU,IAAN37F,QAAYwK,EAAU,CAExB,IAAIg+B,EAAM+xD,2BAA2BnpE,EAASpxB,EAAGwK,GAEjDxK,EAAIwoC,EAAIxoC,EACRwK,EAAIg+B,EAAIh+B,CACV,CAEA,IAAI6wF,EAASP,EAAQQ,KAAK,SAAUM,GAClC,IAAI30F,EAAW20F,EAAM30F,SACrB,OAAIA,GAAYnD,MAAMC,QAAQkD,EAASjH,IAAM8D,MAAMC,QAAQkD,EAASuD,GAC3DxK,GAAKiH,EAASjH,EAAE,IAAMA,GAAKiH,EAASjH,EAAE,IAAMwK,GAAKvD,EAASuD,EAAE,IAAMA,GAAKvD,EAASuD,EAAE,MAEvFvD,GAAa6M,OAAOqhB,MAAMluB,EAASjH,IAAO8T,OAAOqhB,MAAMluB,EAASuD,KAC3DxK,IAAMiH,EAASjH,GAAKwK,IAAMvD,EAASuD,CAG9C,GAEA,GAAK6wF,EAAL,CAIA,GAAoB,SAAhBA,EAAO39F,MAAmB29F,EAAOp0F,UAAYnD,MAAMC,QAAQs3F,EAAOp0F,SAASjH,IAAM8D,MAAMC,QAAQs3F,EAAOp0F,SAASuD,IAA+B,IAAzB6wF,EAAO1b,OAAOh+E,OAAc,CAEnJ,IAAIk6F,GAAY77F,EAAIq7F,EAAOp0F,SAASjH,EAAE,KAAOq7F,EAAOp0F,SAASjH,EAAE,GAAKq7F,EAAOp0F,SAASjH,EAAE,IAClF87F,GAAYtxF,EAAI6wF,EAAOp0F,SAASuD,EAAE,KAAO6wF,EAAOp0F,SAASuD,EAAE,GAAK6wF,EAAOp0F,SAASuD,EAAE,IACtFqlD,EAAcv6B,aAAa+lE,EAAO1b,QAAQ,GAC1C9vB,EAAc76B,YAAY3gB,KAAKwsC,MAAMg7C,EAAWC,GAAY,GAAKT,EAAO1b,OAAO,GAAK0b,EAAO1b,OAAO,MAAM,EAC1G,CACoB,SAAhB0b,EAAO39F,MACTmyD,EAAcv6B,aAAa+lE,EAAO1b,QAAQ,GAExB,SAAhB0b,EAAO39F,OAELmyD,EAAc3/B,UAChB2/B,EAAc35B,eAAc,GAE9B25B,EAAcv6B,aAAa+lE,EAAO1b,SAEhB,SAAhB0b,EAAO39F,MACTmyD,EAAc76B,YAAYqmE,EAAO1b,OAAO,IAAI,EApB9C,CAsBF,EACIqb,EAAmB,SAA0BxjE,GAC/CujE,EAAavjE,EAAGukE,QAASvkE,EAAGwkE,QAC9B,EACIf,EAAkB,WACpBF,GAAa,KACf,EACA3pE,EAAQtE,iBAAiB,YAAakuE,GACtC5pE,EAAQtE,iBAAiB,WAAYmuE,GAC9B,WACL7pE,EAAQzD,oBAAoB,YAAaqtE,GACzC5pE,EAAQzD,oBAAoB,WAAYstE,EAC1C,EApHF,CA6HF,EAAG,CAAC91F,EAAM0qD,GACZ,EACIosC,uBAAyB,SAAgCC,GAC3D,IAAIpB,EAAUoB,EAAMpB,QAClB31F,EAAO+2F,EAAM/2F,KACbg3F,EAAYD,EAAMC,UAChBtsC,EAAgBssC,EAAUtsC,cAC5BkqC,EAAOoC,EAAUpC,KACjBG,EAAwBiC,EAAUjC,sBAOpC,OANAS,qBAAqB,CACnBG,QAASA,EACTjrC,cAAeA,EACf1qD,KAAMA,EACN01F,WAAYX,IAEPH,CACT,EAEIqC,UAAY,CAAC,QAAS,iBACtBC,OAAS,SAAgBp+F,GAC3B,IAAI4G,EAAIE,EAAIyG,EACRjG,EAAQtH,EAAMsH,MAChB+2F,EAAgBr+F,EAAMq+F,cACtBC,EAActE,yBAAyBh6F,EAAOm+F,WAI5CI,EAAa9D,UAAU6D,EAAah3F,GACtCw0F,EAAOyC,EAAWzC,KAClB78E,EAAOs/E,EAAWt/E,KAClByX,EAAO6nE,EAAW7nE,KAClBjY,EAAQ8/E,EAAW9/E,MACnBkZ,EAAW4mE,EAAW5mE,SACtBZ,EAAcwnE,EAAWxnE,YACzBK,EAAcmnE,EAAWnnE,YACzBQ,EAAe2mE,EAAW3mE,aAC1BP,EAAeknE,EAAWlnE,aAC1BhB,EAAckoE,EAAWloE,YACzBuC,EAAc2lE,EAAW3lE,YACzBnK,EAAU8vE,EAAW9vE,QACrBwtE,EAAwBsC,EAAWtC,sBACnCf,EAAkBqD,EAAWrD,gBAC7BtpC,EAAgB2sC,EAAW3sC,cAyB7B,OArBAx8C,MAAAA,UAAU,WACJpV,EAAM+6F,YACR/6F,EAAM+6F,UAAU9J,QAAU,CACxBhyE,KAAMA,EACNyX,KAAMA,EACNjY,MAAOA,EACPkZ,SAAUA,EACVP,YAAaA,EACbL,YAAaA,EACba,aAAcA,EACdP,aAAcA,EACdhB,YAAaA,EACbuC,YAAaA,EACbnK,QAASA,EACTwtE,sBAAuBA,EACvBf,gBAAiBA,EACjBtpC,cAAeA,GAIrB,EAAG,CAA4B,QAA1BhrD,EAAK5G,EAAM+6F,iBAA8B,IAAPn0F,OAAgB,EAASA,EAAGqqF,UAC5D+M,uBAAuB,CAC5BE,UAAW,CACTpC,KAAMA,EACN78E,KAAMA,EACNyX,KAAMA,EACNjY,MAAOA,EACPkZ,SAAUA,EACVZ,YAAaA,EACbK,YAAaA,EACbQ,aAAcA,EACdP,aAAcA,EACdhB,YAAaA,EACbuC,YAAaA,EACbnK,QAASA,EACTwtE,sBAAuBA,EACvBf,gBAAiBA,EACjBtpC,cAAeA,GAEjBirC,QAAwG,QAA9F/1F,EAAKu3F,aAAqD,EAASA,EAAcxB,eAA4B,IAAP/1F,EAAgBA,EAAK,GACrII,KAAkG,QAA3FqG,EAAK8wF,aAAqD,EAASA,EAAcn3F,YAAyB,IAAPqG,EAAgBA,EAAK,UAEnI,ECplBMixF,gBAAsD,SAAC53F,WAAE5G,UAAOkQ,EAAAtJ,EAAAG,WAAAA,OAAU,IAAAmJ,EAAG,MAAKA,EAChFoE,EAAa,SAACN,+BAClB,IAAKA,IAAYA,EAAQ9C,SAAU,OAAO,KAE1C,OAAQ8C,EAAQ9C,UACd,IAAK,OACH,OAAO,KAET,IAAK,WACL,IAAK,gBACH,OAAmB,UAAZ8C,EAAQ7C,YAAI,IAAAvK,OAAA,EAAAA,EAAEoK,MAAO,KAE9B,IAAK,UACH,IAAMI,EAAwB,QAAftK,EAAAkN,EAAQ3C,eAAO,IAAAvK,OAAA,EAAAA,EAAEwK,QAC1BC,GACkB,QAAtBrB,EAAe,QAAf3C,EAAAyG,EAAQ3C,eAAO,IAAA9D,OAAA,EAAAA,EAAEiE,aAAK,IAAAtB,OAAA,EAAAA,EAAEqB,QACT,QAAflB,EAAA2D,EAAQ3C,eAAO,IAAAhB,OAAA,EAAAA,EAAEkB,QACY,QAA7BG,UAAAlB,EAAAwD,EAAQ3C,8BAASI,oBAAY,IAAAC,OAAA,EAAAA,EAAEH,MAEjC,OAAKA,EAGD,IAAA3J,OAAI2J,EADU,YAAXH,EACK,kBACA,iBAJM,KAOpB,IAAK,MACH,IAAM6C,EAAsB,QAAXtC,EAAAqC,EAAQ/S,WAAG,IAAA0Q,OAAA,EAAAA,EAAEJ,KAC9B,OAAK0C,EACE,IAAArM,OAAIqM,EAAO,eADG,KAIvB,IAAK,OACH,IAAMC,GAAqB,QAAZtC,EAAAoC,EAAQnC,YAAI,IAAAD,OAAA,EAAAA,EAAEE,OAAmB,UAAZkC,EAAQnC,YAAI,IAAAE,OAAA,EAAAA,EAAER,MAC5C4C,EAA8B,QAArBsqF,EAAY,QAAZrqF,EAAAJ,EAAQnC,YAAI,IAAAuC,OAAA,EAAAA,EAAEpC,eAAO,IAAAysF,OAAA,EAAAA,EAAE59C,cACtC,OAAK3sC,GAAWC,EACT,SAAAvM,OAASsM,EAAM,UAAAtM,OAASuM,GADA,KAIjC,QACE,OAAOH,EAAQK,MAAQ,KAE7B,EAGQlD,EAAOmD,EAAWtU,GAiBpBgH,EAdiB,WACrB,OAAQD,GACN,IAAK,YACH,OAAO/G,EAAMkH,KAAK0M,UACpB,IAAK,YACH,OAAO5T,EAAMkH,KAAK2M,UACpB,IAAK,SACH,OAAO7T,EAAMkH,KAAK4M,OAEpB,QACE,OAAO9T,EAAMkH,KAAKC,IAExB,CAEoBwG,GAEdkH,GAAqB,QAAf/N,EAAA9G,EAAM0+F,iBAAS,IAAA53F,OAAA,EAAAA,EAAEwT,WAAW,SACpCta,EAAM0+F,UACN,UAAGjrF,WAAS7L,OAAG5H,EAAM0+F,WAEnBC,EAAoC,OAAtBrqF,EAAWtU,GAEzBqQ,EAAoC5K,MAAMwP,SAAqB,MAA9DuT,EAAanY,EAAA,GAAEuuF,OAChBpuF,EAAoB/K,MAAMwP,SAAwB,MAAjD9T,EAAKqP,EAAA,GAAEquF,OAwBd,OAtBAp5F,MAAM2P,UAAU,WACd,IAAI0pF,GAAY,EACVC,EAAa,IAAIC,gBAcvB,OAbAJ,EAAiB,MACjBC,EAAS,MACTpd,MAAM5sE,EAAK,CAAEoqF,OAAQF,EAAWE,SAC7B9yF,KAAK,SAAO+yF,GAAG,OAAA7zF,eAAA,OAAA,OAAA,EAAA,+CACd,IAAK6zF,EAAIC,GAAI,MAAM,IAAIv8F,MAAM,+BAAAgF,OAA+Bs3F,EAAIj0E,SAChE,MAAA,CAAA,EAAOi0E,EAAIE,cAEZjzF,KAAK,SAACizF,GACDN,GAAWF,EAAiBQ,EAClC,GACCC,MAAM,SAACj9F,GACF08F,GAAwB,eAAX18F,EAAEzB,MAAuBk+F,EAASz8F,EAAEk9F,SAAW,2BAClE,GACK,WACLR,GAAY,EACZC,EAAWQ,OACb,CACF,EAAG,CAAC1qF,IAGFxN,kBAAAA,yCACA8J,EACC9J,2BACF+K,KAAMjB,EACSkB,OAAyB,aAAjBrS,aAAK,EAALA,EAAOkR,UAAkC,QAAX3D,EAAAvN,eAAAA,EAAOmR,YAAI,IAAA5D,OAAA,EAAAA,EAAE8E,OAAQ,QAAO7O,SAE/E4L,kBAAAA,KAAA,MAAA,CACC9H,MAAO,CACLW,MAAO,OACPC,OAAQ,OACRe,QAAS,eACTzB,gBAAiB,QACjBuN,OAAQ4pF,EAAc,UAAY,WACnCn7F,SAAA,CAGAglB,GACCnhB,kBAAAA,IAAC+2F,OAAM,CACL51E,cAAeA,EACf/M,KAAMzU,EAAYyU,KAClBJ,SAAUrU,EAAYqU,SACtB/T,MAAO,CAAEW,MAAO,OAAQC,OAAQ,WAGlCsgB,IAAkBrnB,GAClBkG,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAAEW,MAAO,OAAQC,OAAQ,UAEtC/G,GACCkG,kBAAAA,WAAKC,MAAO,CAAEwI,SAAU,OAAQX,MAAO,QAAQ3L,SAAA,kCAKhD4L,kBAAAA,KAAA,MAAA,CACD9H,MAAO,CACLW,MAAO,OACPC,OAAQ,OACRe,QAAS,eACTzB,gBAAiB,QACjBuN,OAAQ4pF,EAAc,UAAY,WACnCn7F,SAAA,CAGAglB,GACCnhB,kBAAAA,IAAC+2F,QACC51E,cAAeA,EACf/M,KAAMzU,EAAYyU,KAClBJ,SAAUrU,EAAYqU,SACtB/T,MAAO,CAAEW,MAAO,OAAQC,OAAQ,WAGlCsgB,IAAkBrnB,GAClBkG,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAAEW,MAAO,OAAQC,OAAQ,UAEtC/G,GACCkG,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAAEwI,SAAU,OAAQX,MAAO,QAAQ3L,SAAA,iCAMvD,EC5IMg8F,kBAA0D,SAAC54F,GAC/D,IAAA5G,UACA8G,EAAAF,EAAAG,WAAAA,OAAU,IAAAD,EAAG,MAAKA,EAEZyG,EAAkC0H,MAAAA,SAAS,GAA1CwqF,EAAYlyF,EAAA,GAAEmyF,EAAenyF,EAAA,GAC9B2C,EAA4B+E,MAAAA,SAASjV,EAAMqb,UAA1C2D,EAAS9O,EAAA,GAAEyvF,OACZtvF,EAA4B4E,MAAAA,UAAS,GAApC2qF,EAASvvF,EAAA,GAAEwvF,EAAYxvF,EAAA,GAExByvF,EAAS9/F,EAAM8/F,OAAO,GAAGrrF,IACzBsrF,EAAcD,EAAOp8F,OAGrBs8F,EAAYC,MAAAA,YAAY,WAC5BP,EAAgB,SAACQ,GAAS,OAACA,EAAO,GAAKH,CAAb,EAC5B,EAAG,CAACA,IAGEI,EAAYF,MAAAA,YAAY,WAC5BP,EAAgB,SAACQ,GAAS,OAACA,EAAO,EAAIH,GAAeA,CAA3B,EAC5B,EAAG,CAACA,IAQJ3qF,MAAAA,UAAU,WACR,GAAKpV,EAAMqb,UAAa2D,IAAa4gF,EAArC,CAEA,IAAMQ,EAAW3yE,YAAY,WAC3BuyE,GACF,EAAGhgG,EAAMqgG,kBAET,OAAO,WAAM,OAAAzyE,cAAcwyE,EAAd,CANmC,CAOlD,EAAG,CAACpgG,EAAMqb,SAAUrb,EAAMqgG,iBAAkBrhF,EAAW4gF,EAAWI,IAGlE,IA8BMM,EAfiB,WACrB,OAAOv5F,GACL,IAAK,YACH,OAAO/G,EAAM8/F,OAAO,GAAG54F,KAAK0M,UAC9B,IAAK,YACH,OAAO5T,EAAM8/F,OAAO,GAAG54F,KAAK2M,UAC9B,IAAK,SACH,OAAO7T,EAAM8/F,OAAO,GAAG54F,KAAK4M,OAE9B,QACE,OAAO9T,EAAM8/F,OAAO,GAAG54F,KAAKC,IAElC,CAEoBwG,GACa2yF,aAE3BC,EAAkB,SAACvvF,GACvB,OAAKA,EACDA,EAAIsJ,WAAW,YAActJ,EAAIsJ,WAAW,YAAoBtJ,EAC7D,GAAApJ,OAAG6L,WAAS7L,OAAGoJ,GAFL,EAGnB,EAEMwvF,EAAoB,SAACC,SAEzB,OADAv/F,QAAQiU,KAAKsrF,GACLA,EAAMC,WACZ,IAAK,OAyBL,QACE,OAAO,KAxBT,IAAK,eACH,MAAO,GAAA94F,QAAsB,QAAnBhB,EAAA65F,EAAME,qBAAa,IAAA/5F,OAAA,EAAAA,EAAEoK,MAAO,IACxC,IAAK,UACH,IAAMK,EAAeovF,EAAMpvF,SAAW,CAAA,EAChCD,GAASC,eAAAA,EAASC,WAAWD,aAAO,EAAPA,EAASuvF,cACtCrvF,GAAOF,aAAO,EAAPA,EAASE,OAAQ,GAC7B,OAAKA,EAEY,YAAXH,EACL,YAAAxJ,OAAY2J,GACZ,SAAA3J,OAAS2J,GAJQ,KAMrB,IAAK,MACH,IAAMtQ,EAAWw/F,EAAMx/F,KAAO,CAAA,EAC9B,OAAKA,EAAIsQ,KACF,QAAA3J,OAAQ3G,eAAAA,EAAKsQ,MADE,KAGxB,IAAK,OACH,IAAMM,EAAY4uF,EAAM5uF,MAAQ,CAAA,EAC1BqC,EAASrC,EAAKC,IACdqC,EAAOtC,EAAKgvF,UAClB,MAAO,SAAAj5F,OAASsM,EAAM,UAAAtM,OAASuM,GAKrC,EAoBA,OACE/E,kBAAAA,KAAA,MAAA,CACE0F,UAAU,qBACVxN,MAAO,CACL0B,SAAU,WACVd,OAAQlI,EAAMkI,OACdY,SAAU,UAEZg4F,aAjGqB,WACvBjB,GAAa,GACT7/F,EAAM+gG,cACRpB,GAAa,EAEjB,EA6FIqB,aA3FqB,WACvBnB,GAAa,GACT7/F,EAAM+gG,cACRpB,GAAa,EAEjB,EAsFkCn8F,SAAA,CAG9B6D,kBAAAA,IAAA,MAAA,CACEyN,UAAU,kBACVxN,MAAO,CACL2B,QAAS,OACTf,OAAQ,OACRwR,WAAY,WAAA9R,OAAW5H,EAAMswF,MAAK,WAClCnnF,cAAenJ,EAAMihG,SAAW,SAAW,OAC5Cz9F,SAEAqC,MAAM00F,KAAK,CAAE72F,OAAQ48F,IAAgBjxF,IAAI,SAAC7C,EAAGsX,aACtC28E,EAAQX,GAAQL,EAAe37E,GAAUi8E,GACzCmB,EAAyC,OAA7BV,EAAkBC,GACpC,OACEp5F,kBAAAA,IAAA,MAAA,CAEEyN,UAAU,iBACVxN,MAAO,CACLgH,KAAM,OAAA1G,OAAO,IAAM04F,EAAY,KAC/Bp4F,OAAQlI,EAAMihG,SAAW,GAAAr5F,OAAG,IAAM04F,EAAY,KAAM,OACpDx3F,SAAU,SACVG,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBwL,OAAQmsF,EAAY,UAAY,WAElCvoF,QAASuoF,EAAY,WAAM,OAvDd,SAACT,GACxB,IAAMtvF,EAAOqvF,EAAkBC,GAC/B,GAAa,OAATtvF,EACJ,GAAoB,iBAATA,EAAX,CAQA,IAAM2kC,EAAclyC,OAAOu9F,QAAShwF,EAAaiwF,OAAS,CAAA,GACvD/xF,IAAI,SAACzI,OAAChH,EAAGgH,EAAA,GAAE3E,EAAK2E,EAAA,GAAM,MAAA,UAAGhH,EAAG,KAAAgI,OAAI4U,mBAAmBva,GAA7B,GACtBiC,KAAK,KACFwmB,EAAW,GAAA9iB,OAAIuJ,EAAaiJ,iBAAW07B,EAAc,IAAAluC,OAAIkuC,GAAgB,IAC/EzgC,OAAOwW,SAASzZ,KAAOsY,CALvB,MANMvZ,EAAKmJ,WAAW,QAClBjF,OAAO6V,KAAK/Z,EAAM,UAElBkE,OAAOwW,SAASzZ,KAAOjB,CAS7B,CAuCuCkwF,CAAiBZ,EAAjB,OAA0Br3F,EAAS5F,SAE3C,UAAlBi9F,EAAMa,QACLj6F,kBAAAA,IAAA,QAAA,CACEwN,IAAK0rF,EAA2B,QAAX35F,EAAA65F,EAAM5lF,aAAK,IAAAjU,OAAA,EAAAA,EAAEoK,KAClC1J,MAAO,CAAEW,MAAO,OAAQC,OAAQ,OAAQoQ,UAAWtY,EAAMsY,WACzD8C,SAAUpb,EAAMqb,SAChBC,OAAK,EACLG,MAAI,EACJD,UAAWxb,EAAMqb,WAGnBhU,kBAAAA,WACEwN,IAAK0rF,UAAgBz5F,EAAA25F,EAAM/pF,4BAAO1F,KAClC2D,KAAgB,QAAXpH,EAAAkzF,EAAM/pF,aAAK,IAAAnJ,OAAA,EAAAA,EAAEoH,MAAO,GACzBrN,MAAO,CAAEW,MAAO,OAAQC,OAAQ,OAAQoQ,UAAWtY,EAAMsY,cA1BxD,GAAA1Q,OAAG64F,EAAMc,MAAK,KAAA35F,OAAIkc,GA+B7B,KAKD9jB,EAAMwhG,oBAAsBzB,EAAcO,GACzClxF,6DACC/H,kBAAAA,IAAA,SAAA,CACPyN,UAAU,qCACV6D,QAASwnF,EACT74F,MAAKuD,SAAAA,SAAA,CACH7B,SAAU,YACNhJ,EAAMihG,SACN,CAAE74F,IAAK,OAAQI,KAAM,MAAOmR,UAAW,oBACvC,CAAEvR,IAAK,MAAOI,KAAM,MAAOmR,UAAW,qBAAqB,CAC/D8nF,OAAQ,GACRC,WAAY,QACZvyF,MAAO,QACP+I,OAAQ,kBACRuB,UAAW,4BACX9Q,aAAc,MACdV,MAAO,OACPC,OAAQ,OACR6M,OAAQ,UACR9L,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBuG,SAAU,OACVC,WAAY,OACZ2J,WAAY,+BAA4BlW,SAIzCxD,EAAMihG,SAAW,IAAM,MAG1B55F,kBAAAA,IAAA,SAAA,CACEyN,UAAU,qCACV6D,QAASqnF,EACT14F,MAAKuD,SAAAA,SAAA,CACH7B,SAAU,YACNhJ,EAAMihG,SACN,CAAE34F,OAAQ,OAAQE,KAAM,MAAOmR,UAAW,oBAC1C,CAAEvR,IAAK,MAAOM,MAAO,MAAOiR,UAAW,qBAAqB,CAChE8nF,OAAQ,GACRC,WAAY,QACZvyF,MAAO,QACP+I,OAAQ,kBACRuB,UAAW,4BACX9Q,aAAc,MACdV,MAAO,OACPC,OAAQ,OACR6M,OAAQ,UACR9L,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBuG,SAAU,OACVC,WAAY,OACZ2J,WAAY,+BAA4BlW,SAGzCxD,EAAMihG,SAAW,IAAM,SAOnBjhG,EAAM2hG,kBAAoB5B,EAAc,GACvC14F,kBAAAA,IAAA,MAAA,CACEyN,UAAU,gBACVxN,MAAKuD,SAAAA,SAAA,CACH7B,SAAU,YACNhJ,EAAMihG,SACN,CAAE74F,IAAK,MAAOM,MAAO,OAAQiR,UAAW,mBAAoBrR,OAAQ,OAAQE,KAAM,QAClF,CAAEF,OAAQ,OAAQE,KAAM,IAAKE,MAAO,MACvC,CACDO,QAAS,OACTM,eAAgB,SAChBS,WAAY,SACZb,cAAenJ,EAAMihG,SAAW,SAAW,MAC3C7oF,IAAK,MACLqpF,OAAQ,IACRrzF,QAASpO,EAAMihG,SAAW,UAAY,WAEtCt4F,aAAc3I,EAAMihG,SAAW,OAAS,SAAMz9F,SAG/CqC,MAAM00F,KAAK,CAAE72F,OAAQq8F,IAAe1wF,IAAI,SAAC7C,EAAGssB,GAAU,OACrDzxB,sBAAA,SAAA,CAAA,aAEc,eAAAO,OAAekxB,EAAQ,GACnChkB,UAAW,gBAAAlN,OAAgBkxB,IAAU2mE,EAAe,SAAW,IAC/D9mF,QAAS,WAAM,OA/PT,SAACmgB,GACjB4mE,EAAgB5mE,EAAQinE,EAC1B,CA6P2B6B,CAAU9oE,EAAV,EACfxxB,MAAO,CACLW,MAAO6wB,IAAU2mE,EAAe,OAAS,OACzCv3F,OAAQ4wB,IAAU2mE,EAAe,OAAS,OAC1C92F,aAAc,MACduP,OAAQ,OACRwpF,WAAY5oE,IAAU2mE,EAAe,OAAS,OAC9C1qF,OAAQ,UACR2E,WAAY,mBAXTof,EAF8C,OAqBjE,EC7TM+oE,oBAA8D,SAACj7F,SAAE5G,EAAK4G,EAAA5G,MAAE2T,EAAS/M,EAAA+M,UAC/EywC,EAAoB,QAAbt9C,EAAA9G,EAAM8hG,eAAO,IAAAh7F,OAAA,EAAAA,EAAG,GACDs9C,SAAAA,EAAM5gD,SAE5B,IAAA+J,EAAsB9H,MAAMwP,SAAwB,MAAnD8sF,EAAMx0F,EAAA,GAAEy0F,OAETC,EAAY,SAAC9lF,GAAkB,OAAAA,EAAKnL,KAAO,GAAZ,EAE/BkxF,EAAO,SAACt7F,GAAE,IAAAuV,EAAIvV,EAAAuV,KAAErV,EAAAF,EAAAw1C,MAAAA,OAAK,IAAAt1C,EAAG,EAACA,EAAEyG,EAAA3G,EAAAu7F,OAAAA,OAAM,IAAA50F,GAAQA,EACvC60F,EAAcv8F,MAAMC,QAAQqW,EAAK3Y,WAAa2Y,EAAK3Y,SAASE,OAAS,EACrE2+F,EAAkB,IAAVjmD,IAAgB+lD,EACxB9xC,EAAQ8xC,GAAiCE,EAAxBriG,EAAM0gD,OAAO4hD,QAA0CtiG,EAAM0gD,OAAO6hD,UAErFC,EAAkC,CACtCv5F,QAAS,OACTe,WAAY,SACZT,eAAgB,gBAChB6O,IAAK,MACLhK,QAAS+zF,EAAS,YAAeE,EAAQ,YAAc,WACvDlzF,MAAOkhD,EAAMlhD,MAAMO,KACnBgyF,WAAYrxC,EAAMlhD,MAAMuyF,WACxBtxF,eAAgB,OAChBU,WAAY,SACZhB,SAAUqyF,EAAS,GAAME,EAAQ,GAAK,GACtCI,cAAcpyC,EAAMqyC,aAAgBL,GAAUF,EAAgD,OAAvC,aAAAv6F,OAAayoD,EAAMlhD,MAAMwzF,WAChFh6F,aAAcw5F,EAAS,EAAKE,EAAQ,EAAI,EACxCttF,OAAQ,UACRhF,WAAYoyF,EAAS,OAAS,UAG1BjyF,EAAoBzK,MAAMwP,UAAS,GAAlC2tF,EAAK1yF,EAAA,GAAE2yF,OAEd,OACEzzF,kBAAAA,YACE9H,MAAO,CAAE0B,SAAU,YACnB83F,aAAc,WAAQ+B,GAAS,IAAWR,GAASF,IAAQH,EAAU7lF,EAAKnB,IAAMmB,EAAK2mF,OAAS,KAAM,EACpG9B,aAAc,WAAQ6B,GAAS,IAAYR,GAASF,IAAQH,EAAU,SAAC9B,GAAS,OAACA,KAAU/jF,EAAKnB,IAAMmB,EAAK2mF,OAAS,KAAO5C,CAA3C,EAAkD,EAAC18F,SAAA,CAEnI2+F,EACN/yF,kBAAAA,KAAA,MAAA,CACE9H,MAAKuD,SAAAA,SAAA,GACA23F,GAAU,CACbd,WAAYkB,EAAQvyC,EAAM0yC,WAAWrB,WAAarxC,EAAMlhD,MAAMuyF,WAC9DvyF,MAAOyzF,EAAQvyC,EAAM0yC,WAAWrzF,KAAO2gD,EAAMlhD,MAAMO,KACnDqF,OAAQ,YAASvR,SAAA,CAGnB6D,kBAAAA,IAAA,OAAA,CAAA7D,SAAO2Y,aAAI,EAAJA,EAAMlB,QACZmnF,GACC/6F,kBAAAA,IAAA,OAAA,CAAMC,MAAO,CAAE6H,MAAOkhD,EAAMlhD,MAAM6zF,OAAS3yC,EAAMlhD,MAAMO,MAAMlM,SAAG,SAIpE4L,kBAAAA,UACEgD,KAAM6vF,EAAU9lF,GAChB9J,OAAQ8J,EAAK9J,QAAU,QACvB6E,IAAqB,WAAhBiF,EAAK9J,OAAsB,2BAAwBjJ,EACxD9B,MAAKuD,SAAAA,SAAA,CAAA,EACA23F,IACHd,WAAYkB,EAAQvyC,EAAM0yC,WAAWrB,WAAarxC,EAAMlhD,MAAMuyF,WAC9DvyF,MAAOyzF,EAAQvyC,EAAM0yC,WAAWrzF,KAAO2gD,EAAMlhD,MAAMO,OAAIlM,SAAA,CAGzD6D,kBAAAA,IAAA,OAAA,CAAA7D,SAAO2Y,eAAAA,EAAMlB,QACZmnF,GACC/6F,kBAAAA,YAAMC,MAAO,CAAE6H,MAAOkhD,EAAMlhD,MAAM6zF,OAAS3yC,EAAMlhD,MAAMO,eAAS2yF,EAAQ,IAAM,SAO3ED,IAAiBC,GAASF,EAAUJ,KAAY5lF,EAAKnB,IAAMmB,EAAK2mF,OAASF,IACxEv7F,kBAAAA,IAAA,MAAA,CACEC,MAAO,CACL0B,SAAU,WACVZ,IAAMi6F,GAASF,EAAU,OAAS,EAClC35F,KAAO65F,GAASF,EAAU,EAAI,OAC9BT,WAAY1hG,EAAM0gD,OAAO6hD,UAAUpzF,MAAMuyF,WACzCvyF,MAAOnP,EAAM0gD,OAAO6hD,UAAUpzF,MAAMO,KACpCwI,OAAQ,aAAAtQ,OAAa5H,EAAM0gD,OAAO6hD,UAAUpzF,MAAMwzF,WAAa,eAC/Dh6F,aAAc,EACdkG,SAAU,IACVT,QAAS,EACTqL,UAAW,8BACXgoF,OAAQ,KACTj+F,SAED6D,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAAE2B,QAAS,OAAQE,cAAe,mBAC3CgT,EAAK3Y,SAAU6L,IAAI,SAACZ,GAAU,OAC7BpH,kBAAAA,IAAC66F,EAAI,CAA+B/lF,KAAM1N,EAAO2tC,MAAOA,EAAQ,GAArD3tC,EAAMuM,IAAMvM,EAAMq0F,MADA,SAQ3C,EAEA,OAAK1+C,EAOH/8C,kBAAAA,IAAA,MAAA,CACEC,MAAO,CACLW,MAAO,OACPgB,QAAS,OACTe,WAAY,QACZi5F,WAAY,MACZC,YAAY,OACZ/0F,OAAQ,MACRuzF,WAAY1hG,EAAM0gD,OAAO4hD,QAAQnzF,MAAMuyF,WACvC/4F,aAAc,EACdG,SAAU,UACVZ,OAAQyL,GACTnQ,SAGD6D,kBAAAA,IAAC66F,EAAI,CAA6B/lF,KAAMioC,EAAMhI,MAAO,EAAG+lD,QAAQ,GAArD/9C,EAAKppC,IAAMopC,EAAK0+C,SApB3Bz7F,sBAAA,MAAA,CAAKC,MAAO,CAAE8G,QAAS,GAAIe,MAAO,QAAQ3L,SAAA,uBAyBhD,ECzEMwW,iBAAmB,SAAChJ,GACxB,IACE,IAAMiJ,EAAS,IAAIC,IAAIlJ,GACvB,GAAIiJ,EAAOE,SAASlT,SAAS,YAC3B,OAAOgT,EAAOG,SAASC,QAAQ,IAAK,KAAO,KAE7C,GAAIJ,EAAOE,SAASlT,SAAS,eAAgB,CAC3C,GAAIgT,EAAOG,SAASE,WAAW,UAC7B,OAAOL,EAAOM,aAAajW,IAAI,KAEjC,GAAI2V,EAAOG,SAASE,WAAW,WAC7B,OAAOL,EAAOG,SAASI,MAAM,WAAW,IAAM,IAElD,CACF,CAAE,MAAA5T,GAAO,CACT,OAAO,IACT,EAEM6T,eAAiB,SAACzJ,GACtB,IACE,IAOQ0J,EAPFT,EAAS,IAAIC,IAAIlJ,GACvB,GAAIiJ,EAAOE,SAASlT,SAAS,aAE3B,MAAiB,WADXyT,EAAQT,EAAOG,SAASI,MAAM,KAAKxW,OAAOyS,UACtC,GAAuBiE,EAAM,IAAM,KACtCA,EAAM,IAAM,KAErB,GAAIT,EAAOE,SAASlT,SAAS,oBAE3B,OADMyT,EAAQT,EAAOG,SAASI,MAAM,KAAKxW,OAAOyS,UACnC,IAAM,IAEvB,CAAE,MAAA7P,GAAO,CACT,OAAO,IACT,EAEM+T,qBAAuB,SAAC3J,GAC5B,IACE,IAAMiJ,EAAS,IAAIC,IAAIlJ,GACvB,GAAIiJ,EAAOE,SAASlT,SAAS,mBAAoB,CAC/C,IAAMyT,EAAQT,EAAOG,SAASI,MAAM,KAAKxW,OAAOyS,SAChD,GAAiB,UAAbiE,EAAM,GAAgB,OAAOA,EAAM,IAAM,IAC/C,CACA,GAAIT,EAAOE,SAASlT,SAAS,UAC3B,OAAOgT,EAAOG,SAASC,QAAQ,IAAK,KAAO,IAE/C,CAAE,MAAAzT,GAAO,CACT,OAAO,IACT,EAiBMgU,eAAgD,SAAChU,GACrD,IAAAu8F,EAASv8F,EAAAu8F,UACTr8F,EAAAF,EAAA+B,aAAAA,OAAY,IAAA7B,EAAG,EAACA,EAChByG,EAAA3G,EAAAsB,OAAAA,OAAM,IAAAqF,EAAG,OAAMA,EAoEf,OACElG,kBAAAA,IAAA,MAAA,CACEC,MAAO,CACLqB,aAAc,GAAAf,OAAGe,EAAY,MAC7BT,OAAQA,EACRY,SAAU,UACXtF,SAxEgB,WACnB,IAAMuX,EAAmC,CACvC9S,MAAO,OACPC,OAAQ,OACRgQ,OAAQ,EACRvP,aAAc,GAAAf,OAAGe,EAAY,OAG/B,GAAuB,YAAnBw6F,EAAU1jG,KAAoB,CAChC,IACMoV,GADAmG,EAAKhB,iBAAiBmpF,EAAUnyF,MACrB,iCAAApJ,OAAiCoT,GAAOmoF,EAAUnyF,IACnE,OACE3J,kBAAAA,IAAA,SAAA,CACE4T,MAAOkoF,EAAUxuF,KAAO,gBACxBE,IAAKA,EACLqG,MAAM,sGACNC,iBAAe,EACf7T,MAAOyT,GAGb,CAEA,GAAuB,UAAnBooF,EAAU1jG,KAAkB,CAExBoV,GADAmG,EAAKP,eAAe0oF,EAAUnyF,MACnB,kCAAApJ,OAAkCoT,GAAOmoF,EAAUnyF,IACpE,OACE3J,kBAAAA,IAAA,SAAA,CACE4T,MAAOkoF,EAAUxuF,KAAO,cACxBE,IAAKA,EACLqG,MAAM,2CACNC,iBAAe,EACf7T,MAAOyT,GAGb,CAEA,GAAuB,gBAAnBooF,EAAU1jG,KAAwB,CACpC,IAAMub,EACAnG,GADAmG,EAAKL,qBAAqBwoF,EAAUnyF,MACzB,2CAAApJ,OAA2CoT,GAAOmoF,EAAUnyF,IAC7E,OACE3J,kBAAAA,IAAA,SAAA,CACE4T,MAAOkoF,EAAUxuF,KAAO,oBACxBE,IAAKA,EACLqG,MAAM,2CACNC,iBAAe,EACf7T,MAAOyT,GAGb,CAGA,OACE3L,uBAAA,QAAA,CACEgM,UAAiC,IAAvB+nF,EAAU9nF,SACpBC,OAA2B,IAApB6nF,EAAU7nF,MACjBC,aAAW,EACXC,UAAiC,IAAvB2nF,EAAU3nF,SACpBC,MAAyB,IAAnB0nF,EAAU1nF,KAChBnU,MAAO,CAAEW,MAAO,OAAQC,OAAQ,OAAQS,aAAc,GAAAf,OAAGe,EAAY,OAAMnF,SAAA,CAE3E6D,sBAAA,SAAA,CAAQwN,IAAK,UAAGpB,WAAS7L,OAAGu7F,EAAUnyF,OAAS,iDAIrD,CAUK4K,IAGP,EAGMwnF,eAAoD,SAACx8F,OAAE5G,EAAK4G,EAAA5G,MAAE8G,EAAAF,EAAAG,WAAAA,aAAa,MAAKD,EAAE6M,EAAS/M,EAAA+M,UACzF0D,EAAwB,SAACC,GAC7B,IAAKA,EAAM,OAAO,EAClB,OAAQvQ,GACN,IAAK,YAAa,QAASuQ,EAAK1D,UAChC,IAAK,YAAa,QAAS0D,EAAKzD,UAChC,IAAK,SAAU,QAASyD,EAAKxD,OAE7B,QAAS,QAASwD,EAAKnQ,IAE3B,EAaMoQ,EAAaF,EAAsBrX,EAAMuX,YACzCE,EAAqBJ,EAAsBrX,EAAMyX,oBACjDC,EAbmB,WACvB,IAAK1X,EAAMkP,OAAQ,MAAO,OAC1B,OAAQnI,GACN,IAAK,YAAa,OAAO/G,EAAMkP,OAAO0E,WAAa,OACnD,IAAK,YAAa,OAAO5T,EAAMkP,OAAO2E,WAAa,OACnD,IAAK,SAAU,OAAO7T,EAAMkP,OAAO4E,QAAU,OAE7C,QAAS,OAAO9T,EAAMkP,OAAO/H,KAAO,OAExC,CAIsBwQ,GAUhBmD,EARY,yBAChB,MAAmB,YAAf9a,EAAMP,OAC2B,QAA/B8N,EAAyB,QAAzBzG,EAAgB,QAAhBF,EAAA5G,EAAMqjG,kBAAU,IAAAz8F,OAAA,EAAAA,EAAE08F,eAAO,IAAAx8F,OAAA,EAAAA,EAAEkiD,YAAI,IAAAz7C,OAAA,EAAAA,EAAE7J,QAAe1D,EAAMqjG,WAAWC,QAAQt6C,cAE3E34C,EAAgB,UAAhBrQ,EAAMqjG,kBAAU,IAAAnzF,OAAA,EAAAA,EAAEqzF,qCAAgB7/F,QAAe1D,EAAMqjG,WAAWE,eAC/D,EACT,CAEeC,GAGTC,EAAa,WACjB,IAAMC,EAAsB/wF,SAASkG,cAAc,yBAC/C6qF,GACDA,EAAoC5qF,SAAS,CAAEtQ,MAAM,IAAMuQ,SAAU,UAE1E,EAEM4qF,EAAc,WAClB,IAAMD,EAAsB/wF,SAASkG,cAAc,yBAC/C6qF,GACDA,EAAoC5qF,SAAS,CAAEtQ,KAAM,IAAKuQ,SAAU,UAEzE,EAEM6qF,EAAY,SAACh9F,uBAAEuV,SAAMpK,EAAAnL,EAAA8V,MAAAA,OAAK,IAAA3K,GAAQA,EAChCqC,EAA4Ba,MAAAA,UAAS,GAApC2qF,EAASxrF,EAAA,GAAEyrF,EAAYzrF,EAAA,GAE9B,OACEhF,kBAAAA,KAAA,MAAA,CACE0F,UAAU,YACVxN,MAAO,CACLY,OAAQ,OACRS,aAAc,MACdG,SAAU,SACVoP,OAAQ,iBACR1Q,gBAAiBxH,EAAM6jG,WAAa,OACpC56F,QAAS,OACTE,cAAe,SACfiF,QAASsO,EAAQ,OAAS,OAC1BjD,UAAWmmF,EAAY,6BAA+B,4BACtDlmF,WAAY,gBACZ3E,OAAQ,UACR4E,UAAWimF,EAAY,mBAAqB,kBAC5CtxF,KAAM,GAER0K,YAAa,WAAM,OAAA6mF,GAAa,EAAb,EACnB3mF,WAAY,WAAM,OAAA2mF,GAAa,EAAb,EAAmBr8F,SAAA,CAErC6D,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAAEW,MAAO,OAAQI,aAAcqU,EAAQ,OAAS,gBAC1DrV,kBAAAA,IAACuT,eAAc,CACbuoF,UAAW,CACTnyF,IAAKmL,EAAKyB,KAAK5M,IACfvR,KAAM0c,EAAKyB,KAAKkmF,WAChBtoF,SAAUW,EAAKyB,KAAKpC,SACpBC,KAAMU,EAAKyB,KAAKnC,KAChB9G,IAAKwH,EAAKyB,KAAKjJ,IACf0G,UAAiC,IAAvBc,EAAKyB,KAAKvC,SACpBC,OAA2B,IAApBa,EAAKyB,KAAKtC,OAEnB3S,aAAc,EACdT,OAAQ,GAAAN,OAAG+rB,SAAShgB,GAAa,OAAS,IAAG,WAG1B,KAArB3T,eAAAA,EAAO+jG,YAAwB5nF,EAAKlB,OACpC5T,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CACViI,UAAW,SACXO,SAAU9P,EAAMgkG,WAAa,GAAAp8F,OAAG5H,EAAMgkG,WAAWl0F,SAAQ,MAAQ4M,EAAQ,OAAS,OAClF3M,YAA4B,QAAhBjJ,EAAA9G,EAAMgkG,kBAAU,IAAAl9F,OAAA,EAAAA,EAAEmJ,QAAS,OAAUyM,EAAQ,IAAM,IAC/DvN,OAAuB,QAAhB5B,EAAAvN,EAAMgkG,kBAAU,IAAAz2F,OAAA,EAAAA,EAAEmD,YAAa,OACtCV,WAA2B,QAAhBE,EAAAlQ,EAAMgkG,kBAAU,IAAA9zF,OAAA,EAAAA,EAAEC,UAAW,SAAW,SACnDC,gBAAgC,QAAhBC,EAAArQ,EAAMgkG,kBAAU,IAAA3zF,OAAA,EAAAA,EAAEmI,aAAc,YAAc,OAC9DoB,WAAY,MACZvR,aAAc,OACf7E,SACE2Y,EAAKlB,SAGgB,KAAxBjb,aAAK,EAALA,EAAOikG,eAA2B9nF,EAAK+nF,UACvC78F,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CACViI,UAAW,SACXO,SAAU9P,EAAMmkG,cAAgB,GAAAv8F,OAAG5H,EAAMmkG,cAAcr0F,SAAQ,MAAQ4M,EAAQ,OAAS,OACxF3M,YAA+B,QAAnBS,EAAAxQ,EAAMmkG,qBAAa,IAAA3zF,OAAA,EAAAA,EAAEP,QAAS,OAAS,IACnDd,OAA0B,QAAnBuC,EAAA1R,EAAMmkG,qBAAa,IAAAzyF,OAAA,EAAAA,EAAEhB,YAAa,OACzCV,WAA8B,QAAnB2B,EAAA3R,EAAMmkG,qBAAa,IAAAxyF,OAAA,EAAAA,EAAExB,UAAW,SAAW,SACtDC,gBAAmC,QAAnBwB,EAAA5R,EAAMmkG,qBAAa,IAAAvyF,OAAA,EAAAA,EAAE4G,aAAc,YAAc,OACjEoB,WAAY,OACbpW,SACE2Y,EAAK+nF,aAKhB,EAEA,OACE90F,kBAAAA,KAAA,MAAA,CACE9H,MAAO,CACL4Q,OAAQ,oBACRjQ,MAAO,OACP2G,SAAU,OACVjG,aAAc,MACdT,OAAQyL,GAAa,OACrBpM,UAAWoM,GAAwB,QACnC3K,SAAU,WACVF,SAAU,SACVT,aAAc,OACdF,UAAW,MACXc,QAAS,OACTE,cAAe,UAEjB2L,UAAU,0BAAyBtR,SAAA,CAElC+T,GACCnI,uBAAA,MAAA,CACE0F,UAAU,mBACVxN,MAAO,CACLE,gBAAiBxH,EAAMmY,iBACvB/J,QAAS,YACTzF,aAAc,MACdN,aAAc,MACdY,QAAS,OACTe,WAAY,SACZT,eAAgB,gBAChBF,SAAU,OACV+O,IAAK,QACN5U,SAAA,CAED6D,kBAAAA,IAAA,IAAA,CAAGC,MAAO,CACR6H,MAAOnP,EAAMuY,gBAAgB7H,UAC7BZ,SAAU,GAAAlI,OAAG5H,EAAMuY,gBAAgBzI,SAAQ,MAC3CC,WAAY/P,EAAMuY,gBAAgBtI,OAAS,OAAS,SACpDD,UAAWhQ,EAAMuY,gBAAgBpI,SAAW,SAAW,SACvDC,eAAgBpQ,EAAMuY,gBAAgBC,YAAc,YAAc,OAClErK,OAAQ,GACT3K,SACExD,EAAMyY,YAAc,eAGJ,SAAlBf,GAA4BoD,EAAOpX,OAAS,GAC3C0L,kBAAAA,KAAA,MAAA,CAAK9H,MAAO,CAAE2B,QAAS,OAAQmP,IAAK,iBAClC/Q,kBAAAA,IAAA,SAAA,CACEsR,QAAS8qF,EACTn8F,MAAO,CACLW,MAAO,OACPC,OAAQ,OACRS,aAAc,MACduP,OAAQ,iBACR1Q,gBAAiB,OACjBuN,OAAQ,UACR9L,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBuG,SAAU,OACVC,WAAY,QAEdiJ,YAAa,SAAC5W,GAAQA,EAAE6W,cAAc3R,MAAME,gBAAkB,SAAW,EACzE0R,WAAY,SAAC9W,GAAQA,EAAE6W,cAAc3R,MAAME,gBAAkB,MAAQ,EAAChE,SAAA,MAIxE6D,kBAAAA,IAAA,SAAA,CACEsR,QAASgrF,EACTr8F,MAAO,CACLW,MAAO,OACPC,OAAQ,OACRS,aAAc,MACduP,OAAQ,iBACR1Q,gBAAiB,OACjBuN,OAAQ,UACR9L,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBuG,SAAU,OACVC,WAAY,QAEdiJ,YAAa,SAAC5W,GAAQA,EAAE6W,cAAc3R,MAAME,gBAAkB,SAAW,EACzE0R,WAAY,SAAC9W,GAAQA,EAAE6W,cAAc3R,MAAME,gBAAkB,MAAQ,EAAChE,SAAA,YAShF4L,kBAAAA,KAAA,MAAA,CACE9H,MAAO,CACL2B,QAA2B,SAAlByO,EAA2B,OAAS,QAC7CyB,UAA6B,SAAlBzB,EAA4BD,EAAqB,OAAS,SAAY,UACjFW,IAAuB,SAAlBV,EAA2B,OAAS,IACzCtJ,QAAS,OACTgL,eAAgB,SAChB5R,gBAAiBxH,EAAMokG,oBAAsB,OAC7C9qF,eAAgB,OAChB3Q,aAAc,MACdK,SAAU,WACVuQ,eAAgB,sBAChBjL,KAAM,EACNxF,SAAU,UAEZgM,UAAU,qBAAoBtR,SAAA,EAG5B+T,GAAgC,SAAlBG,GAA4BoD,EAAOpX,OAAS,GAC1D0L,uBAAA+H,kBAAAA,SAAA,CAAA3T,SAAA,CACE6D,kBAAAA,IAAA,SAAA,CACEsR,QAAS8qF,EACTn8F,MAAO,CACL0B,SAAU,WACVR,KAAM,OACNJ,IAAK,MACLuR,UAAW,mBACX+nF,WAAY,kBACZvyF,MAAO,QACP+I,OAAQ,OACRvP,aAAc,MACdV,MAAO,OACPC,OAAQ,OACR6M,OAAQ,UACR9L,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBuG,SAAU,OACV2xF,OAAQ,GACR/nF,WAAY,iBAEdV,YAAa,SAAC5W,GACZA,EAAE6W,cAAc3R,MAAMo6F,WAAa,kBACnCt/F,EAAE6W,cAAc3R,MAAMqS,UAAY,6BACpC,EACAT,WAAY,SAAC9W,GACXA,EAAE6W,cAAc3R,MAAMo6F,WAAa,kBACnCt/F,EAAE6W,cAAc3R,MAAMqS,UAAY,2BACpC,EAACnW,SAAA,MAIH6D,kBAAAA,IAAA,SAAA,CACEsR,QAASgrF,EACTr8F,MAAO,CACL0B,SAAU,WACVN,MAAO,OACPN,IAAK,MACLuR,UAAW,mBACX+nF,WAAY,kBACZvyF,MAAO,QACP+I,OAAQ,OACRvP,aAAc,MACdV,MAAO,OACPC,OAAQ,OACR6M,OAAQ,UACR9L,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBuG,SAAU,OACV2xF,OAAQ,GACR/nF,WAAY,iBAEdV,YAAa,SAAC5W,GACZA,EAAE6W,cAAc3R,MAAMo6F,WAAa,kBACnCt/F,EAAE6W,cAAc3R,MAAMqS,UAAY,6BACpC,EACAT,WAAY,SAAC9W,GACXA,EAAE6W,cAAc3R,MAAMo6F,WAAa,kBACnCt/F,EAAE6W,cAAc3R,MAAMqS,UAAY,2BACpC,oBAMLmB,EAAOpX,OAAS,EACG,SAAlBgU,EACEoD,EAAOzL,IAAI,SAACwL,GAAU,OACpBxT,kBAAAA,IAAA,MAAA,CAAoBC,MAAO,CAAEuH,SAAU,QAAQ3G,OAAQ,iBACrDb,kBAAAA,IAACu8F,EAAS,CAACznF,KAAMtB,KADTA,EAAMG,GADI,GAKF,UAAlBtD,EACFrQ,sBAAA,MAAA,CAAKC,MAAO,CAAE2B,QAAS,OAAQ8Q,oBAAqB,iBAAkB3B,IAAK,OAAQhK,QAAS,OAAO5K,SAChGsX,EAAOzL,IAAI,SAACwL,GAAU,OACrBxT,kBAAAA,IAACu8F,EAAS,CAAgBznF,KAAMtB,GAAhBA,EAAMG,GADD,KAIL,WAAlBtD,EACFrQ,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAAE2B,QAAS,OAAQ8Q,oBAAqB,iBAAkB3B,IAAK,OAAQhK,QAAS,gBACzF0M,EAAOzL,IAAI,SAACwL,GAAU,OACrBxT,kBAAAA,IAACu8F,EAAS,CAAgBznF,KAAMtB,GAAhBA,EAAMG,GADD,KAIL,iBAAlBtD,EACFtI,kBAAAA,KAAA,MAAA,CAAK9H,MAAO,CAAE2B,QAAS,OAAQE,cAAe,SAAUiP,IAAK,OAAQhK,QAAS,iBAC3E0M,EAAOpX,OAAS,GACf2D,kBAAAA,IAACu8F,GAAUznF,KAAMrB,EAAO,GAAI4B,OAAK,IAElC5B,EAAOpX,OAAS,GACf2D,sBAAA,MAAA,CAAKC,MAAO,CAAE2B,QAAS,OAAQ8Q,oBAAqB,iBAAkB3B,IAAK,QAAQ5U,SAChFsX,EAAOtB,MAAM,GAAGnK,IAAI,SAACwL,GAAU,OAC9BxT,kBAAAA,IAACu8F,EAAS,CAAgBznF,KAAMtB,GAAhBA,EAAMG,GADQ,QAMpC,KAEJ3T,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAAEiI,UAAW,SAAUJ,MAAO,OAAQf,QAAS,OAAQnG,MAAO,OAAQiQ,OAAQ,kBAAmBvP,aAAc,MAAOnB,gBAAiB,oBACjJH,kBAAAA,IAAA,IAAA,CAAA7D,SAAA,gCAMZ,ECjdM6gG,uBAAoE,SAACz9F,GAAE,IAAA5G,UAAO8G,EAAAF,EAAAG,WAAAA,OAAU,IAAAD,EAAG,MAAKA,EAC/FuQ,EAAwB,SAACC,GAC9B,IAAKA,EAAM,OAAO,EAClB,OAAQvQ,GACP,IAAK,YAAa,QAASuQ,EAAK1D,UAChC,IAAK,YAAa,QAAS0D,EAAKzD,UAChC,IAAK,SAAU,QAASyD,EAAKxD,OAE7B,QAAS,QAASwD,EAAKnQ,IAEzB,EAaMoQ,EAAaF,EAAsBrX,EAAMuX,YACzC+sF,EAAmBjtF,EAAsBrX,EAAMskG,kBAC/C7sF,EAAqBJ,EAAsBrX,EAAMyX,oBACjDC,EAdmB,WACxB,IAAK1X,EAAMkP,OAAQ,MAAO,OAC1B,OAAQnI,GACP,IAAK,YAAa,OAAO/G,EAAMkP,OAAO0E,UACtC,IAAK,YAAa,OAAO5T,EAAMkP,OAAO2E,UACtC,IAAK,SAAU,OAAO7T,EAAMkP,OAAO4E,OAEnC,QAAS,OAAO9T,EAAMkP,OAAO/H,IAE/B,CAKsBwQ,GAShB4sF,EAPgB,uBACrB,OAAuB,UAAnBvkG,EAAMwkG,qBAAa,IAAA59F,OAAA,EAAAA,EAAEoR,qBACpBzK,EAAmB,UAAnBvN,EAAMwkG,qBAAa,IAAA19F,OAAA,EAAAA,EAAEkR,gCAAWtU,QAAkC,UAAnB1D,EAAMwkG,qBAAa,IAAAt0F,OAAA,EAAAA,EAAE8H,UAElE,EACR,CAEmBysF,GAqCbhoF,EAAO,SAAC7V,SApBOoK,EAoBLmL,SAAM5O,EAAA3G,EAAA8V,MAAAA,OAAK,IAAAnP,GAAQA,EACtB6E,EAfa,SAAC+J,GACpB,GAAIA,EAAKE,OAASF,EAAKE,MAAM3Y,OAAS,EAAG,CACrC,IAAM4Y,EAAYH,EAAKE,MAAM,GAG7B,GAFTnb,QAAQkb,IAAIE,EAAUC,SAETD,EAAUC,QACV,MAAO,SAAA3U,OAAS4U,mBAAmBF,EAAUC,0BAErD,CAGA,OAAO,IACX,CAGiBmoF,CAAkBvoF,GAS/B,OACI9U,kBAAAA,IATqD,SAACT,GAAE,IAAApD,EAAQoD,EAAApD,SAChE,OAAA4O,EACI/K,sBAAA,IAAA,CAAG+K,KAAMA,EAAM9K,MAAO,CAAE8I,eAAgB,OAAQjB,MAAO,WAAW3L,SAC7DA,IAGL6D,kBAAAA,IAAA8P,kBAAAA,SAAA,CAAA3T,SAAGA,GALP,EAQQ,CAAAA,SACJ4L,kBAAAA,KAAA,MAAA,CACI0F,UAAU,eACVxN,MAAO,CACHY,OAAO,OAEPS,aAAc,MACdG,SAAU,SACVoP,OAAQ,iBACR1Q,gBAAiB,OACjByB,QAAS,OACTE,cAAe,SACfa,WAAY,SACZT,eAAgB,SAChB6E,QAASsO,EAAQ,OAAS,OAC1BjD,UAAW,4BACXC,WAAY,sBACZ3E,OAAQ3C,EAAO,UAAY,WAE/B4G,YAAa,SAAC5W,GACTA,EAAE6W,cAAiC3R,MAAMqS,UAAY,mBACrDvX,EAAE6W,cAAiC3R,MAAMmS,UAAY,4BAC1D,EACAP,WAAY,SAAC9W,GACRA,EAAE6W,cAAiC3R,MAAMqS,UAAY,gBACrDvX,EAAE6W,cAAiC3R,MAAMmS,UAAY,2BAC1D,EAACjW,SAAA,CAEA2Y,EAAKzF,OACFrP,sBAAA,MAAA,CACIC,MAAO,CACHY,OAAQwU,EAAQ,QAAU,QAC1BzU,MAAO,OACPgB,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBlB,aAAcqU,EAAQ,OAAS,OAClClZ,SAED6D,kBAAAA,IAAA,MAAA,CACIwN,KAvEV7D,EAuE2BmL,EAAKzF,MAAM1F,IAtErDA,EACDA,EAAIsJ,WAAW,YAActJ,EAAIsJ,WAAW,YAAoBtJ,EAC7D,GAAApJ,OAAG6L,WAAS7L,OAAGoJ,GAFL,IAuEa2D,IAAKwH,EAAKzF,MAAM/B,MAAgB,QAAT7N,EAAAqV,EAAKxb,YAAI,IAAAmG,OAAA,EAAAA,EAAE2N,MAAO,GACzCnN,MAAO,CAAEW,MAAO,OAAQC,OAAQ,OAAQoQ,UAAW,eAK9DgsF,GACGj9F,kBAAAA,IAAA,MAAA,CACIC,MAAO,CACHiI,UAAW,SACXO,SAAU4M,EAAQ,OAAS,OAC3B3M,WAAY2M,EAAQ,IAAM,IAC1BvN,MAAO,OACPyK,WAAY,MACZ1R,OAAQwU,EAAQ,OAAS,OACzB5T,SAAU,SACVG,QAASyT,EAAQ,QAAU,cAC3B7C,gBAAiB6C,OAAQtT,EAAY,EACrC0Q,gBAAiB,YACpBtW,SAEA2Y,EAAKxb,WAM9B,EAEH,OACCyO,kBAAAA,KAAA,MAAA,CACC9H,MAAO,CACN4Q,OAAQ,oBACRjQ,MAAO,OACP2G,SAAU,OACVjG,aAAc,MACdpB,UAAW,QACXyB,SAAU,WACVF,SAAU,SACVT,aAAc,OACdF,UAAW,MACXD,OAAO,QAER4M,UAAU,yBAAwBtR,SAAA,CAEjC+T,GACAnI,uBAAA,MAAA,CACC0F,UAAU,sBACVxN,MAAO,CACNE,gBAAiBxH,EAAMmY,iBACvB/J,QAAS,YACTzF,aAAc,MACdN,aAAc,MACdY,QAAS,OACTe,WAAY,SACZT,eAAgB,gBAChBF,SAAU,OACV+O,IAAK,QACL5U,SAAA,CAED6D,kBAAAA,IAAA,IAAA,CAAGC,MAAO,CACT6H,MAAOnP,EAAMuY,gBAAgB7H,UAC7BZ,SAAU,GAAAlI,OAAG5H,EAAMuY,gBAAgBzI,SAAQ,MAC3CC,WAAY/P,EAAMuY,gBAAgBtI,OAAS,OAAS,SACpDD,UAAWhQ,EAAMuY,gBAAgBpI,SAAW,SAAW,SACvDC,eAAgBpQ,EAAMuY,gBAAgBC,YAAc,YAAc,OAClErK,OAAQ,GACR3K,SACCxD,EAAM2kG,UAAY,eAGD,SAAlBjtF,GAA4B6sF,EAAW7gG,OAAS,GAChD0L,kBAAAA,KAAA,MAAA,CAAK9H,MAAO,CAAE2B,QAAS,OAAQmP,IAAK,iBACnC/Q,kBAAAA,IAAA,SAAA,CACCsR,QAhKY,WAClB,IAAMC,EAAWjG,SAASkG,cAAc,0BACpCD,GACFA,EAAyBE,SAAS,CAAEtQ,MAAM,IAAMuQ,SAAU,UAE7D,EA4JOzR,MAAO,CACNW,MAAO,OACPC,OAAQ,OACRS,aAAc,MACduP,OAAQ,iBACR1Q,gBAAiB,OACjBuN,OAAQ,UACR9L,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBuG,SAAU,OACVC,WAAY,QAEbiJ,YAAa,SAAC5W,GAAQA,EAAE6W,cAAc3R,MAAME,gBAAkB,SAAW,EACzE0R,WAAY,SAAC9W,GAAQA,EAAE6W,cAAc3R,MAAME,gBAAkB,MAAQ,EAAChE,SAAA,MAIvE6D,kBAAAA,IAAA,SAAA,CACCsR,QA7Ka,WACnB,IAAMC,EAAWjG,SAASkG,cAAc,0BACpCD,GACFA,EAAyBE,SAAS,CAAEtQ,KAAM,IAAKuQ,SAAU,UAE5D,EAyKOzR,MAAO,CACNW,MAAO,OACPC,OAAQ,OACRS,aAAc,MACduP,OAAQ,iBACR1Q,gBAAiB,OACjBuN,OAAQ,UACR9L,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBuG,SAAU,OACVC,WAAY,QAEbiJ,YAAa,SAAC5W,GAAQA,EAAE6W,cAAc3R,MAAME,gBAAkB,SAAW,EACzE0R,WAAY,SAAC9W,GAAQA,EAAE6W,cAAc3R,MAAME,gBAAkB,MAAQ,EAAChE,SAAA,YAS3E6D,kBAAAA,IAAA,MAAA,CACCC,MAAO,CACN2B,QAA2B,SAAlByO,EAA2B,OAAS,QAC7CyB,UAA6B,SAAlBzB,EAA4BD,EAAqB,OAAS,SAAY,UACjFW,IAAuB,SAAlBV,EAA2B,OAAS,IACzCtJ,QAAS,OACTgL,eAAgB,SAChB5R,gBAAiBxH,EAAMokG,oBAAsB,OAC7C9qF,eAAgB,OAChB3Q,aAAc,MACdK,SAAU,WACVuQ,eAAgB,sBACXrR,OAAO,QAGb4M,UAAU,wBAAuBtR,SAEhC+gG,EAAW7gG,OAAS,EACF,SAAlBgU,EACC6sF,EAAWl1F,IAAI,SAACu1F,GAAa,OAC5Bv9F,sBAAA,MAAA,CAAyBC,MAAO,CAAEuH,SAAU,QAAS3G,OAAO,gBAC3Db,kBAAAA,IAACoV,EAAI,CAACN,KAAMyoF,KADHA,EAASrzF,KADS,GAKR,UAAlBmG,EACHrQ,sBAAA,MAAA,CAAKC,MAAO,CAAE2B,QAAS,OAAQ8Q,oBAAqB,iBAAkB3B,IAAK,OAAQhK,QAAS,OAAO5K,SACjG+gG,EAAWl1F,IAAI,SAACu1F,GAAa,OAC7Bv9F,kBAAAA,IAACoV,EAAI,CAAqBN,KAAMyoF,GAArBA,EAASrzF,KADS,KAIV,WAAlBmG,EACHrQ,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAAE2B,QAAS,OAAQ8Q,oBAAqB,iBAAkB3B,IAAK,OAAQhK,QAAS,gBAC1Fm2F,EAAWl1F,IAAI,SAACu1F,GAAa,OAC7Bv9F,sBAACoV,EAAI,CAAqBN,KAAMyoF,GAArBA,EAASrzF,KADS,KAIV,iBAAlBmG,EACHtI,kBAAAA,KAAA,MAAA,CAAK9H,MAAO,CAAE2B,QAAS,OAAQE,cAAe,SAAUiP,IAAK,OAAQhK,QAAS,iBAC5Em2F,EAAW7gG,OAAS,GACpB2D,sBAACoV,GAAKN,KAAMooF,EAAW,GAAI7nF,OAAK,IAEhC6nF,EAAW7gG,OAAS,GACpB2D,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAAE2B,QAAS,OAAQ8Q,oBAAqB,iBAAkB3B,IAAK,QAAQ5U,SACjF+gG,EAAW/qF,MAAM,GAAGnK,IAAI,SAACu1F,GAAa,OACtCv9F,kBAAAA,IAACoV,EAAI,CAAqBN,KAAMyoF,GAArBA,EAASrzF,KADkB,QAMvC,KAEJlK,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAAEiI,UAAW,SAAUJ,MAAO,OAAQf,QAAS,OAAQnG,MAAO,OAAQiQ,OAAQ,kBAAmBvP,aAAc,MAAOnB,gBAAiB,oBAClJH,kBAAAA,IAAA,IAAA,CAAA7D,SAAA,mCAMN,EC3QMqhG,uBAAwD,SAACj+F,aAOxCoK,EANrB8zF,EAASl+F,EAAAk+F,UACT7zF,EAAQrK,EAAAqK,SACRZ,iBAAA1H,OAAY,IAAA0H,EAAG,EAACA,EAChBG,WAAAtI,OAAM,IAAAsI,EAAG,OAAMA,EACfkB,UA4CMqzF,EAAkC,CACtC98F,WA7CG,IAAAyJ,EAAG,OAAMA,EA8CZxJ,OAAQA,EACRoQ,UAAW,UACX3P,aAAc,GAAAf,OAAGe,EAAY,MAC7BoM,OAA8B,SAAtB9D,EAASC,SAAsB,UAAY,UACnDwI,WAAY,uBAGd,OACErS,kBAAAA,SACC+K,eA/Ce,mDAEhB,OADAlR,QAAQiU,KAAKlE,GACLA,EAASC,UAEf,IAAK,OAgBL,QACE,OAAO,KAfT,IAAK,gBACL,IAAK,WACH,OAAoB,UAAbD,EAASE,YAAI,IAAAvK,OAAA,EAAAA,EAAEoK,MAAO,KAC/B,IAAK,UACH,GAAkC,qBAA9BlK,EAAAmK,EAASI,8BAASC,SACpB,MAAO,YAAA1J,QAAkC,QAAtB2F,EAAA0D,EAASI,QAAQG,aAAK,IAAAjE,OAAA,EAAAA,EAAEgE,QAAqC,QAA7BrB,EAAAe,EAASI,QAAQI,oBAAY,IAAAvB,OAAA,EAAAA,EAAEqB,OAElF,IAAMA,GAA8B,QAAvBf,EAAgB,UAAhBS,EAASI,eAAO,IAAAhB,OAAA,EAAAA,EAAEmB,aAAK,IAAAhB,OAAA,EAAAA,EAAEe,QAAsC,QAA9BI,UAAAD,EAAAT,EAASI,8BAASI,oBAAY,IAAAE,OAAA,EAAAA,EAAEJ,MAC9E,MAAO,UAAA3J,OAAU2J,GAErB,IAAK,MACH,MAAO,QAAA3J,QAA4B,QAApBmK,EAAY,QAAZH,EAAAX,EAAShQ,WAAG,IAAA2Q,OAAA,EAAAA,EAAEozF,cAAM,IAAAjzF,OAAA,EAAAA,EAAER,QAA+B,QAAvBktF,EAAa,QAAbrqF,EAAAnD,aAAQ,EAARA,EAAUhQ,WAAG,IAAAmT,OAAA,EAAAA,EAAE6wF,gBAAQ,IAAAxG,OAAA,EAAAA,EAAEltF,OACxE,IAAK,OACH,MAAO,iBAA+B,QAAtBsqB,EAAa,QAAbghC,EAAA5rD,EAASY,YAAI,IAAAgrD,OAAA,EAAAA,EAAEtgD,eAAO,IAAAsf,OAAA,EAAAA,EAAE/pB,OAAgC,QAAxBozF,EAAa,UAAbj0F,EAASY,YAAI,IAAAszF,OAAA,EAAAA,EAAEC,iBAAS,IAAAF,OAAA,EAAAA,EAAEpzF,KAAG,UAAAlK,QAAwB,UAAbqJ,EAASY,YAAI,IAAAmmC,OAAA,EAAAA,EAAE6oD,qBAAa5wD,EAAAh/B,EAASY,2BAAMG,UAIzI,CAwBSC,uBAAe7I,EACxBiJ,OACyB,cAAvBpB,eAAAA,EAAUC,UACiB,QAAtBhB,EAAc,QAAd3C,EAAA0D,aAAQ,EAARA,EAAUE,YAAI,IAAA5D,OAAA,EAAAA,EAAE8E,cAAM,IAAAnC,EAAAA,EAAI,SAC3B,QAAO1M,SAET6D,kBAAAA,IAAA,MAAA,CACAC,MAAO,CACLW,MAAO,OACPC,OAAQ,OACRS,aAAc,GAAAf,OAAGe,EAAY,MAC7BG,SAAU,UAEZgM,UAAU,YAAWtR,SAErB6D,kBAAAA,IAAA,MAAA,CACAyN,UAAU,gBACRD,KAtEe7D,EAsEE8zF,EAAU9zF,IArE1BA,EACDA,EAAIsJ,WAAW,YAActJ,EAAIsJ,WAAW,YAAoBtJ,EAC7D,GAAApJ,OAAG6L,WAAS7L,OAAGoJ,GAFL,IAsEb2D,IAAKmwF,EAAUnwF,KAAO,GACtBrN,MAAOy9F,EAEP/rF,YAAa,SAAC5W,GACc,SAAtB6O,EAASC,WACV9O,EAAE6W,cAAmC3R,MAAMqS,UAAY,cAE5D,EACAT,WAAY,SAAC9W,GACVA,EAAE6W,cAAmC3R,MAAMqS,UAAY,UAC1D,OAKR,EAGM0rF,eAAoD,SAACz+F,OACzD5G,EAAK4G,EAAA5G,MACL8G,EAAAF,EAAAG,WAAAA,aAAa,MAAKD,EAClB6M,EAAS/M,EAAA+M,UAEH0D,EAAwB,SAACC,GAC7B,IAAKA,EAAM,OAAO,EAClB,OAAQvQ,GACN,IAAK,YAAa,QAASuQ,EAAK1D,UAChC,IAAK,YAAa,QAAS0D,EAAKzD,UAChC,IAAK,SAAU,QAASyD,EAAKxD,OAE7B,QAAS,QAASwD,EAAKnQ,IAE3B,EAaMoQ,EAAaF,EAAsBrX,EAAMuX,YACpBF,EAAsBrX,EAAMyX,oBACvD,IAAMC,EAbmB,WACvB,IAAK1X,EAAMkP,OAAQ,MAAO,OAC1B,OAAQnI,GACN,IAAK,YAAa,OAAO/G,EAAMkP,OAAO0E,WAAa,OACnD,IAAK,YAAa,OAAO5T,EAAMkP,OAAO2E,WAAa,OACnD,IAAK,SAAU,OAAO7T,EAAMkP,OAAO4E,QAAU,OAE7C,QAAS,OAAO9T,EAAMkP,OAAO/H,KAAO,OAExC,CAIsBwQ,GAUhBnD,EARY,yBAChB,MAAmB,YAAfxU,EAAMP,OAC2B,QAA/B8N,EAAyB,QAAzBzG,EAAgB,QAAhBF,EAAA5G,EAAMslG,kBAAU,IAAA1+F,OAAA,EAAAA,EAAE08F,eAAO,IAAAx8F,OAAA,EAAAA,EAAEkiD,YAAI,IAAAz7C,OAAA,EAAAA,EAAE7J,QAAe1D,EAAMslG,WAAWhC,QAAQt6C,cAE3E34C,EAAgB,UAAhBrQ,EAAMslG,kBAAU,IAAAp1F,OAAA,EAAAA,EAAEq1F,qCAAgB7hG,QAAe1D,EAAMslG,WAAWC,eAC/D,EACT,CAEeC,GAGT/B,EAAa,WACjB,IAAMC,EAAsB/wF,SAASkG,cAAc,yBAC/C6qF,GACDA,EAAoC5qF,SAAS,CAAEtQ,MAAM,IAAMuQ,SAAU,UAE1E,EAEM4qF,EAAc,WAClB,IAAMD,EAAsB/wF,SAASkG,cAAc,yBAC/C6qF,GACDA,EAAoC5qF,SAAS,CAAEtQ,KAAM,IAAKuQ,SAAU,UAEzE,EAEM0sF,EAAY,SAAC7+F,uBAAEuV,SAAMpK,EAAAnL,EAAA8V,MAAAA,OAAK,IAAA3K,GAAQA,EAChCqC,EAA4Ba,MAAAA,UAAS,GAApC2qF,EAASxrF,EAAA,GAAEyrF,EAAYzrF,EAAA,GAE9B,OACEhF,kBAAAA,KAAA,MAAA,CACE0F,UAAU,YACVxN,MAAO,CACLY,OAAQ,OACRS,aAAc,MACdG,SAAU,SACVoP,OAAQ,iBACR1Q,gBAAiBxH,EAAM6jG,WAAa,OACpC56F,QAAS,OACTE,cAAe,SACfiF,QAASsO,EAAQ,OAAS,OAC1BjD,UAAWmmF,EAAY,6BAA+B,4BACtDlmF,WAAY,gBACZ3E,OAA0B,SAAlBoH,EAAKjL,SAAsB,UAAY,UAC/CyI,UAAWimF,EAAY,mBAAqB,kBAC5CtxF,KAAM,GAER0K,YAAa,WAAM,OAAA6mF,GAAa,EAAb,EACnB3mF,WAAY,WAAM,OAAA2mF,GAAa,EAAb,EAAmBr8F,SAAA,CAErC6D,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAAEW,MAAO,OAAQI,aAAcqU,EAAQ,OAAS,OAAOlZ,SACjE6D,kBAAAA,IAACw9F,uBAAsB,CACrBC,UAAW3oF,EAAKyB,KAChB3M,SAAU,CACRC,SAAUiL,EAAKjL,SACfG,QAAS8K,EAAK9K,QACdpQ,IAAKkb,EAAKlb,IACVkQ,KAAMgL,EAAKhL,KACXU,KAAMsK,EAAKtK,MAEblJ,aAAc,EACdT,OAAQ,GAAAN,OAAG+rB,SAAShgB,GAAa,OAAS,GAAE,WAGzB,KAArB3T,eAAAA,EAAO+jG,YAAwB5nF,EAAKlB,OACpC5T,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CACViI,UAAW,SACXO,SAAU9P,EAAMgkG,WAAa,GAAAp8F,OAAG5H,EAAMgkG,WAAWl0F,SAAQ,MAAQ4M,EAAQ,OAAS,OAClF3M,YAA4B,QAAhBjJ,EAAA9G,EAAMgkG,kBAAU,IAAAl9F,OAAA,EAAAA,EAAEmJ,QAAS,OAAUyM,EAAQ,IAAM,IAC/DvN,OAAuB,QAAhB5B,EAAAvN,EAAMgkG,kBAAU,IAAAz2F,OAAA,EAAAA,EAAEmD,YAAa,OACtCV,WAA2B,QAAhBE,EAAAlQ,EAAMgkG,kBAAU,IAAA9zF,OAAA,EAAAA,EAAEC,UAAW,SAAW,SACnDC,gBAAgC,QAAhBC,EAAArQ,EAAMgkG,kBAAU,IAAA3zF,OAAA,EAAAA,EAAEmI,aAAc,YAAc,OAC9DoB,WAAY,MACZvR,aAAc,OACf7E,SACE2Y,EAAKlB,SAGgB,KAAxBjb,aAAK,EAALA,EAAOikG,eAA2B9nF,EAAK+nF,UACvC78F,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CACViI,UAAW,SACXO,SAAU9P,EAAMmkG,cAAgB,GAAAv8F,OAAG5H,EAAMmkG,cAAcr0F,SAAQ,MAAQ4M,EAAQ,OAAS,OACxF3M,YAA+B,QAAnBS,EAAAxQ,EAAMmkG,qBAAa,IAAA3zF,OAAA,EAAAA,EAAEP,QAAS,OAAS,IACnDd,OAA0B,QAAnBuC,EAAA1R,EAAMmkG,qBAAa,IAAAzyF,OAAA,EAAAA,EAAEhB,YAAa,OACzCV,WAA8B,QAAnB2B,EAAA3R,EAAMmkG,qBAAa,IAAAxyF,OAAA,EAAAA,EAAExB,UAAW,SAAW,SACtDC,gBAAmC,QAAnBwB,EAAA5R,EAAMmkG,qBAAa,IAAAvyF,OAAA,EAAAA,EAAE4G,aAAc,YAAc,OACjEoB,WAAY,OACbpW,SACE2Y,EAAK+nF,aAKhB,EAEA,OACE90F,kBAAAA,2CACE/H,kBAAAA,IAAA,QAAA,CAAA7D,SACG,8GAMH4L,kBAAAA,KAAA,MAAA,CACE9H,MAAO,CACL4Q,OAAQ,oBACRjQ,MAAO,OACP2G,SAAU,OACVjG,aAAc,MACdT,OAAQyL,GAAa,OACrBpM,UAAWoM,GAAwB,QACnC3K,SAAU,WACVF,SAAU,SACVX,UAAW,MACXc,QAAS,OACTE,cAAe,UAEjB2L,UAAU,0BAAyBtR,SAAA,CAEpC+T,GACCnI,uBAAA,MAAA,CACE0F,UAAU,mBACVxN,MAAO,CACLE,gBAAiBxH,EAAMmY,iBACvB/J,QAAS,YACTzF,aAAc,MACdN,aAAc,MACdY,QAAS,OACTe,WAAY,SACZT,eAAgB,gBAChBF,SAAU,OACV+O,IAAK,QACN5U,SAAA,CAED6D,kBAAAA,IAAA,IAAA,CAAGC,MAAO,CACR6H,MAAOnP,EAAMuY,gBAAgB7H,UAC7BZ,SAAU,GAAAlI,OAAG5H,EAAMuY,gBAAgBzI,SAAQ,MAC3CC,WAAY/P,EAAMuY,gBAAgBtI,OAAS,OAAS,SACpDD,UAAWhQ,EAAMuY,gBAAgBpI,SAAW,SAAW,SACvDC,eAAgBpQ,EAAMuY,gBAAgBC,YAAc,YAAc,OAClErK,OAAQ,GACT3K,SACExD,EAAMyY,YAAczY,EAAM2kG,UAAY,kBAEtB,SAAlBjtF,GAA4BlD,EAAO9Q,OAAS,GAC3C0L,kBAAAA,YAAK9H,MAAO,CAAE2B,QAAS,OAAQmP,IAAK,iBAClC/Q,kBAAAA,IAAA,SAAA,CACFsR,QAAS8qF,EACTn8F,MAAO,CACLW,MAAO,OACPC,OAAQ,OACRS,aAAc,MACduP,OAAQ,iBACR1Q,gBAAiB,OACjBuN,OAAQ,UACR9L,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBuG,SAAU,OACVC,WAAY,OACZ0J,UAAW,6BAEbT,YAAa,SAAC5W,GAAQA,EAAE6W,cAAc3R,MAAME,gBAAkB,SAAW,EACzE0R,WAAY,SAAC9W,GAAQA,EAAE6W,cAAc3R,MAAME,gBAAkB,MAAQ,EAAChE,SAAA,MAIxE6D,kBAAAA,IAAA,SAAA,CACEsR,QAASgrF,EACTr8F,MAAO,CACLW,MAAO,OACPC,OAAQ,OACRS,aAAc,MACduP,OAAQ,iBACR1Q,gBAAiB,OACjBuN,OAAQ,UACR9L,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBuG,SAAU,OACVC,WAAY,OACZ0J,UAAW,6BAEbT,YAAa,SAAC5W,GAAQA,EAAE6W,cAAc3R,MAAME,gBAAkB,SAAW,EACzE0R,WAAY,SAAC9W,GAAQA,EAAE6W,cAAc3R,MAAME,gBAAkB,MAAQ,EAAChE,SAAA,YAU5E4L,kBAAAA,KAAA,MAAA,CACE9H,MAAO,CACL2B,QAA2B,SAAlByO,EAA2B,OAAS,QAC7CyB,UAA6B,SAAlBzB,EAA2B,SAAW,UACjDU,IAAuB,SAAlBV,EAA2B,OAAS,IACzCtJ,QAAS,OACTgL,eAAgB,SAChB5R,gBAAiBxH,EAAMokG,oBAAsB,OAC7Cz7F,aAAc,MACdK,SAAU,WACVsF,KAAM,EACNxF,SAAU,UAEZgM,UAAU,qBAAoBtR,SAAA,EAG5B+T,GAA+B,SAAlBG,GAA4BlD,EAAO9Q,OAAS,GACzD0L,uBAAA+H,kBAAAA,SAAA,CAAA3T,SAAA,CACE6D,kBAAAA,IAAA,SAAA,CACEsR,QAAS8qF,EACTn8F,MAAO,CACL0B,SAAU,WACVR,KAAM,OACNJ,IAAK,MACLuR,UAAW,mBACX+nF,WAAY,kBACZvyF,MAAO,QACP+I,OAAQ,OACRvP,aAAc,MACdV,MAAO,OACPC,OAAQ,OACR6M,OAAQ,UACR9L,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBuG,SAAU,OACV2xF,OAAQ,GACR/nF,WAAY,iBAEdV,YAAa,SAAC5W,GACZA,EAAE6W,cAAc3R,MAAMo6F,WAAa,kBACnCt/F,EAAE6W,cAAc3R,MAAMqS,UAAY,6BACpC,EACAT,WAAY,SAAC9W,GACXA,EAAE6W,cAAc3R,MAAMo6F,WAAa,kBACnCt/F,EAAE6W,cAAc3R,MAAMqS,UAAY,2BACpC,EAACnW,SAAA,MAIH6D,kBAAAA,IAAA,SAAA,CACEsR,QAASgrF,EACTr8F,MAAO,CACL0B,SAAU,WACVN,MAAO,OACPN,IAAK,MACLuR,UAAW,mBACX+nF,WAAY,kBACZvyF,MAAO,QACP+I,OAAQ,OACRvP,aAAc,MACdV,MAAO,OACPC,OAAQ,OACR6M,OAAQ,UACR9L,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBuG,SAAU,OACV2xF,OAAQ,GACR/nF,WAAY,iBAEdV,YAAa,SAAC5W,GACZA,EAAE6W,cAAc3R,MAAMo6F,WAAa,kBACnCt/F,EAAE6W,cAAc3R,MAAMqS,UAAY,6BACpC,EACAT,WAAY,SAAC9W,GACXA,EAAE6W,cAAc3R,MAAMo6F,WAAa,kBACnCt/F,EAAE6W,cAAc3R,MAAMqS,UAAY,2BACpC,EAACnW,SAAA,SAMNgR,EAAO9Q,OAAS,EACG,SAAlBgU,EACErQ,sBAAA,MAAA,CACEyN,UAAU,uBACVxN,MAAO,CACL2B,QAAS,OACTmP,IAAK,OACLe,UAAW,OACXG,eAAgB,OAChBosF,gBAAiB,QAClBliG,SACAgR,EAAOnF,IAAI,SAACqH,GAAU,OACrBrP,kBAAAA,IAAA,MAAA,CAEEC,MAAO,CACLuH,SAAU,QACV3G,OAAQyL,EACRgyF,WAAY,GACbniG,SAED6D,kBAAAA,IAACo+F,EAAS,CAACtpF,KAAMzF,KAPZA,EAAMsE,GAFQ,KAcL,UAAlBtD,EACFrQ,sBAAA,MAAA,CAAKC,MAAO,CACV2B,QAAS,OACT8Q,oBAAqB,iBACrB3B,IAAK,OACLhK,QAAS,MACTlG,OAAQ,QACT1E,SACEgR,EAAOnF,IAAI,SAACqH,GAAU,OACrBrP,kBAAAA,IAAA,MAAA,CAAoBC,MAAO,CACzBY,OAAQ,OACRe,QAAS,OACTE,cAAe,UAChB3F,SACC6D,kBAAAA,IAACo+F,EAAS,CAACtpF,KAAMzF,KALTA,EAAMsE,GADK,KAUL,WAAlBtD,EACFrQ,sBAAA,MAAA,CAAKC,MAAO,CACV2B,QAAS,OACT8Q,oBAAqB,iBACrB3B,IAAK,OACLhK,QAAS,MACTlG,OAAQ,OACRiR,UAAW,QAEZ3V,SACEgR,EAAOnF,IAAI,SAACqH,GAAU,OACrBrP,kBAAAA,IAAA,MAAA,CAAoBC,MAAO,CACzBY,OAAQ,OACRe,QAAS,OACTE,cAAe,UAEhB3F,SACC6D,kBAAAA,IAACo+F,EAAS,CAACtpF,KAAMzF,KANTA,EAAMsE,GADK,KAWL,iBAAlBtD,EACFtI,uBAAA,MAAA,CAAK9H,MAAO,CACV2B,QAAS,OACTE,cAAe,SACfiP,IAAK,OACLhK,QAAS,MACTlG,OAAQ,QACT1E,SAAA,CACEgR,EAAO9Q,OAAS,GACf2D,kBAAAA,WAAKC,MAAO,CAAEgH,KAAM,IAAK/G,UAAW,kBAClCF,kBAAAA,IAACo+F,GAAUtpF,KAAM3H,EAAO,GAAIkI,aAG/BlI,EAAO9Q,OAAS,GACf2D,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CACV2B,QAAS,OACT8Q,oBAAqB,iBACrB3B,IAAK,OACL9J,KAAM,KACP9K,SACEgR,EAAOgF,MAAM,GAAGnK,IAAI,SAACqH,GAAU,OAC9BrP,kBAAAA,IAAA,MAAA,CAAoBC,MAAO,CACzBY,OAAQ,OACRe,QAAS,OACTE,cAAe,UAChB3F,SACC6D,kBAAAA,IAACo+F,EAAS,CAACtpF,KAAMzF,KALTA,EAAMsE,GADc,QAYpC,KAEJ3T,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAAEiI,UAAW,SAAUJ,MAAO,OAAQf,QAAS,OAAQnG,MAAO,OAAQiQ,OAAQ,kBAAmBvP,aAAc,MAAOnB,gBAAiB,WAAWhE,SAC5J6D,kBAAAA,IAAA,IAAA,CAAA7D,SAAA,mCAOZ,ohgBCniBA,IAAMoiG,aAAgD,SAACh/F,aAAE5G,UAAOqQ,EAAAzJ,EAAAG,WAAAA,OAAU,IAAAsJ,EAAG,MAAKA,EAC3EG,EAA4ByE,MAAAA,SAAS,GAApC4wF,EAASr1F,EAAA,GAAEs1F,EAAYt1F,EAAA,GACxBkB,EAAoCuD,MAAAA,SAAS,GAA5C8wF,EAAar0F,EAAA,GAAEs0F,EAAgBt0F,EAAA,GAEhC8uF,EAAoB,SAACC,SACxB,OAAQA,EAAMC,WACZ,IAAK,OA0BL,QACE,OAAO,KAzBT,IAAK,eACH,MAAO,GAAA94F,QAAsB,QAAnBhB,EAAA65F,EAAME,qBAAa,IAAA/5F,OAAA,EAAAA,EAAEoK,MAAO,IACxC,IAAK,UACH,IAAMK,EAAeovF,EAAMpvF,SAAW,CAAA,EAChCD,GAASC,eAAAA,EAASC,WAAWD,aAAO,EAAPA,EAASuvF,cACtCrvF,GAAOF,aAAO,EAAPA,EAASE,OAAQ,GAC7B,OAAKA,EAEY,YAAXH,EACX,YAAAxJ,OAAY2J,GACN,SAAA3J,OAAS2J,GAJQ,KAMrB,IAAK,MACH,IAAMtQ,EAAWw/F,EAAMx/F,KAAO,CAAA,EAC9B,OAAKA,EAAIsQ,KACR,QAAA3J,OAAQ3G,eAAAA,EAAKsQ,MADQ,KAIxB,IAAK,OACH,IAAMM,EAAY4uF,EAAM5uF,MAAQ,CAAA,EAC1BqC,EAASrC,EAAKC,IACdqC,EAAOtC,EAAKgvF,UAClB,MAAO,SAAAj5F,OAASsM,EAAM,UAAAtM,OAASuM,GAKrC,EAEK8xF,EAAc,SAACj1F,GACpB,OAAKA,EACDA,EAAIsJ,WAAW,YAActJ,EAAIsJ,WAAW,YAAoBtJ,EAC7D,GAAApJ,OAAG6L,WAAS7L,OAAGoJ,GAFL,EAGlB,EAGMk1F,EAA2D,SAACt/F,+BAmC3Cu/F,EAnC6C90F,YAASwqB,EAAAj1B,EAAAsI,OAAAA,OAAM,IAAA2sB,EAAG,MAAKA,EACpFuqE,EAAc,SAACtwF,GACpB,MAAqB,iBAAVA,GAAsBA,EAAME,eAC/BqwF,WAAWvwF,EAAME,gBAAgBW,eAAe,QAAS,CAC/DrP,MAAO,WACPg/F,SAAU,MACVC,sBAAuB,EACvBC,sBAAuB,IAGlB1wF,CACR,EAYM2wF,EAAc,SAACN,GAEpB,IADA,IAAMO,EAAQ,GACLz7F,EAAI,EAAGA,GAAK,EAAGA,IACvBy7F,EAAMt5F,KACL/F,kBAAAA,IAAA,OAAA,CAAcyN,UAAW7J,GAAKk7F,EAAS,OAAS,aAAY3iG,SAAA,KAAjDyH,IAKb,OAAOy7F,CACR,EAMMC,EAAiB,SAACpwF,aACvB,OAA4B,UAAN,QAAf3P,EAAA2P,EAAQC,eAAO,IAAA5P,OAAA,EAAAA,EAAEjG,YAAI,IAAAmG,OAAA,EAAAA,EAAE2N,OAAsB,QAAflH,EAAAgJ,EAAQC,eAAO,IAAAjJ,OAAA,EAAAA,EAAE5M,OAAQ,EAC/D,EAEMimG,EAAmB,QAAb9/F,EAAAuK,EAAQyE,aAAK,IAAAhP,OAAA,EAAAA,EAAEoP,IACrB2wF,EAAkB,QAAbt5F,EAAA8D,EAAQyE,aAAK,IAAAvI,OAAA,EAAAA,EAAEwI,GACpB+wF,EAhCiB,SAACF,EAAUC,GACjC,IAAME,EAAWV,WAAWO,EAAI5wF,gBAAkB4wF,GAC5CI,EAAUX,WAAWQ,EAAG7wF,gBAAkB6wF,GAChD,GAAIE,EAAWC,EAAS,CACvB,IAAM7wF,GAAa4wF,EAAWC,GAAWD,EAAY,IACrD,OAAO3wF,KAAKC,MAAMF,EACnB,CACA,OAAO,CACR,CAwBc8wF,CAAeL,EAAKC,GAE5BK,EAAsB,QAAXh4F,EAAmB,gBAA6B,QAAXA,EAAmB,aAAe,YAClFi4F,EAAc91F,EAAQS,IACtBs1F,EAAc,IAAAx/F,OAAIu/F,GAElBE,EACLj4F,kBAAAA,KAAA+H,kBAAAA,SAAA,CAAA3T,SAAA,CAEC6D,kBAAAA,IAAA,MAAA,CAAKyN,UAAU,0BAAyBtR,SACvC6D,kBAAAA,IAAA,MAAA,CACCwN,IAAKoxF,GAA8B,QAAlB51F,EAAa,UAAbgB,EAAQqF,aAAK,IAAAxG,OAAA,EAAAA,EAAEuE,WAAG,IAAApE,OAAA,EAAAA,EAAEW,OAA2B,QAApBU,EAAa,UAAbL,EAAQi2F,aAAK,IAAA92F,OAAA,EAAAA,EAAEkG,aAAK,IAAAhF,OAAA,EAAAA,EAAEV,MAClE2D,KAAiB,QAAZhD,EAAAN,EAAQ1Q,YAAI,IAAAgR,OAAA,EAAAA,EAAE8C,OAAmB,UAAZpD,EAAQ1Q,YAAI,IAAAiR,OAAA,EAAAA,EAAElR,aACxCoU,UAAU,oBAKZ1F,kBAAAA,KAAA,MAAA,CAAK0F,UAAU,kBAAiBtR,SAAA,CAC/B4L,kBAAAA,YAAK0F,UAAU,iBAAgBtR,SAAA,CAC9B6D,kBAAAA,IAAA,MAAA,CAAKyN,UAAU,gBAAetR,UAAqB,UAAN,QAAbuO,EAAAV,EAAQsL,aAAK,IAAA5K,OAAA,EAAAA,EAAEpR,YAAI,IAAAyT,OAAA,EAAAA,EAAEK,OAAoB,QAAbgqF,EAAAptF,EAAQsL,aAAK,IAAA8hF,OAAA,EAAAA,EAAE99F,QAC3E0G,kBAAAA,IAAA,MAAA,CAAKyN,UAAU,eAActR,kBAAEq5D,EAAAxrD,EAAQ1Q,2BAAM8T,MAAOpD,EAAQ1Q,OAC5DyO,kBAAAA,KAAA,MAAA,CAAK0F,UAAU,eAActR,SAAA,CAAA,SAAQ6N,EAAQE,WAIlC,QAAXrC,GAA+B,QAAXA,GACpBE,uBAAA,MAAA,CAAK0F,UAAU,2BACdzN,kBAAAA,IAAA,MAAA,CAAKyN,UAAU,QAAOtR,SACpBijG,EAAYp1F,EAAQ0F,YAAc,KAEpC1P,sBAAA,OAAA,CAAMyN,UAAU,cAAatR,UAzCZ2iG,EA0CF90F,EAAQ0F,YAAc,EAzClCovF,EAAS,IAAAv+F,OAAIu+F,EAAOoB,QAAQ,GAAE,OAAQ,gBA+C/B,QAAXr4F,GAAoBmC,EAAQkF,SAAWlF,EAAQkF,QAAQ7S,OAAS,GAChE2D,kBAAAA,IAAA,MAAA,CAAKyN,UAAU,4BACbzD,EAAQkF,QAAQlH,IAAI,SAACkH,EAAcuiB,GAAkB,OACrDzxB,kBAAAA,IAAA,OAAA,CAAkByN,UAAU,cAAatR,SACvCmjG,EAAepwF,IADNuiB,EAD0C,KAiBxDzxB,kBAAAA,IAAA,MAAA,CAAKyN,UAAU,2BACd1F,kBAAAA,KAAA,MAAA,CAAK0F,UAAU,sBACdzN,kBAAAA,IAAA,OAAA,CAAMyN,UAAU,gBAAetR,SAAE4iG,EAAYS,KAC5CD,GAAOC,GAAMR,WAAWO,EAAI5wF,gBAAkB4wF,GAAOP,WAAWQ,EAAG7wF,gBAAkB6wF,IACrFz3F,kBAAAA,2CACC/H,kBAAAA,IAAA,OAAA,CAAMyN,UAAU,iBAAgBtR,SAAE4iG,EAAYQ,KAC7CE,EAAQ,GAAK13F,kBAAAA,KAAA,OAAA,CAAM0F,UAAU,cAAatR,SAAA,CAAEsjG,qBAOrC,QAAX53F,GACAE,kBAAAA,KAAA,MAAA,CAAK0F,UAAU,iBAAgBtR,SAAA,CAC9B6D,sBAAA,MAAA,CAAKyN,UAAU,QAAOtR,SACpBijG,EAAYp1F,EAAQ0F,YAAc,KAEpC3H,kBAAAA,KAAA,OAAA,CAAM0F,UAAU,4BACbzD,EAAQ2F,kBAAoB,EAAC,wBAUrC,OACC3P,sBAAA,MAAA,CAAKyN,UAAW,gBAAAlN,OAAgBs/F,GAAU1jG,SAExC6D,kBAAAA,SAAG+K,KAAMg1F,EAAa/0F,OAAO,SAAS/K,MAAO,CAAE8I,eAAgB,OAAQjB,MAAO,UAAWlG,QAAS,YAAYzF,SAC7G6jG,KASL,EAGMG,EAAmBvH,MAAAA,YAAY,WACpC+F,EAAiB,SAAC9F,GAAS,OAACA,EAAO,CAAR,EAC5B,EAAG,IAEGuH,EAAmBxH,MAAAA,YAAY,WACpC+F,EAAiB,SAAC9F,GAAS,OAAA9pF,KAAK6K,IAAI,EAAGi/E,EAAO,EAAnB,EAC5B,EAAG,IAEGwH,EAAmB,SAAC5uE,GACzBktE,EAAiBltE,EAClB,EAkBM6uE,EAAoB,SAAC7uE,GAG1B,MAAO,CACNtxB,gBAAiB,cACjB2H,MAJgB02F,IAAc/sE,EAIZ,UAAY,UAC9BhpB,SAAU,GAAAlI,OAAG5H,EAAM4nG,OAAO93F,SAAQ,MAClCC,WAAY/P,EAAM4nG,OAAO53F,UAAUC,OAAS,OAAS,MACrDD,UAAWhQ,EAAM4nG,OAAO53F,UAAUG,SAAW,SAAW,SACxDC,eAAgBpQ,EAAM4nG,OAAO53F,UAAUM,YAAc,YAAc,OACnElC,QAAS,WACT8J,OAAQ,OACRnD,OAAQ,UACR2E,WAAY,gBACZ/Q,aAAc,IACd+4F,WAAY,OACZ5wF,WAAY,SAEd,EA6tBM+2F,GAAoB,QAAb/gG,EAAA9G,EAAM6nG,KAAK,UAAE,IAAA/gG,OAAA,EAAAA,EAAE2N,MAAO,GAEnC,OACCrF,kBAAAA,KAAA,MAAA,CAAK9H,MAAO,CACXW,MAAO,OACPV,UAAW,GAAAK,OAAG5H,EAAMkI,OAAM,MAC1BV,gBAAiB,UACjBsB,SAAU,SACV2Q,UAAW,8BACXvB,OAAQ,qBACR1U,SAAA,CAEA4L,kBAAAA,KAAA,MAAA,CAAK9H,MAAO,CACX2B,QAAS,OACTe,WAAY,SACZT,eAAgB,gBAChB6E,QAAS,YACT5G,gBAAiB,UACjBi7F,aAAc,qBACdj/F,SAAA,CAECxD,EAAM+jG,WACN18F,kBAAAA,IAAA,KAAA,CAAIC,MAhvBc,iCACrB,MAAO,CACNwI,SAAU,GAAAlI,OAAe,QAAZhB,EAAA5G,aAAK,EAALA,EAAOib,aAAK,IAAArU,OAAA,EAAAA,EAAEkJ,SAAQ,MACnCC,YAAmC,QAAvBxC,UAAAzG,EAAA9G,aAAK,EAALA,EAAOib,4BAAOjL,iBAAS,IAAAzC,OAAA,EAAAA,EAAE0C,QAAS,OAAS,MACvDD,WAAkC,QAAvBK,UAAAH,EAAAlQ,aAAK,EAALA,EAAOib,4BAAOjL,iBAAS,IAAAK,OAAA,EAAAA,EAAEF,UAAW,SAAW,SAC1DC,gBAAuC,QAAvBsB,UAAAlB,EAAAxQ,aAAK,EAALA,EAAOib,4BAAOjL,iBAAS,IAAA0B,OAAA,EAAAA,EAAEpB,aAAc,YAAc,OACrEnB,MAAmB,QAAZwC,EAAA3R,eAAAA,EAAOib,aAAK,IAAAtJ,OAAA,EAAAA,EAAEjB,UACrBnB,UAAuB,QAAZqC,EAAA5R,eAAAA,EAAOib,aAAK,IAAArJ,OAAA,EAAAA,EAAEq1D,UACzB94D,OAAQ,IACRyL,WAAY,MAEd,CAquBekuF,GAAetkG,SACD,QAAvB0M,EAAY,QAAZ3C,EAAAvN,aAAK,EAALA,EAAOib,aAAK,IAAA1N,OAAA,EAAAA,EAAEw6F,iBAAS,IAAA73F,OAAA,EAAAA,EAAEuE,MAK5BpN,sBAAA,MAAA,CAAKC,MAAO,CACX2B,QAAS,OACTe,WAAY,UACZxG,SACCqkG,EAAKx4F,IAAI,SAAC24F,EAAKlvE,GAAU,OACzB1pB,kBAAAA,KAAC3J,MAAMvF,SAAQ,CAAAsD,SAAA,CACd6D,kBAAAA,IAAA,SAAA,CACCC,MAAOqgG,EAAkB7uE,GACzBngB,QAAS,WAAM,OAlyBE,SAACmgB,GACxBgtE,EAAahtE,GACbktE,EAAiB,EAClB,CA+xBsBiC,CAAgBnvE,EAAhB,EAAsBt1B,SAEd,SAAtBwkG,EAAIE,cACJF,EAAiB,cACdA,EAAIG,eAAen3F,IACtB3J,kBAAAA,IAAA,MAAA,CACCwN,IAAKoxF,EAAY+B,EAAIG,eAAen3F,KACpC2D,IAAKqzF,EAAIG,eAAexzF,IACxBrN,MAAO,CAAEY,OAAQ,OAAQD,MAAO,UAGjC+/F,EAAiB,gBAKlBlvE,EAAQ+uE,EAAKnkG,OAAS,GACtB2D,kBAAAA,IAAA,OAAA,CAAMC,MAAO,CAAE6H,MAAO,UAAWhB,OAAQ,SAAS3K,SAAA,QApB/Bs1B,EADI,QA8B5BzxB,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CACX0B,SAAU,WACVd,OAAQ,QACR1E,SACCqkG,EAAKnkG,OAAS,GAAKmkG,EAAKhC,IACxBx+F,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CACXW,MAAO,QAEPzE,SAnxBoB,SAACwkG,yBACnB94F,EA7CkB,SAAC84F,GACzB,OAAQjhG,GACP,IAAK,YAAa,OAAOihG,EAAI9gG,KAAK0M,UAAU1E,OAC5C,IAAK,YAAa,OAAO84F,EAAI9gG,KAAK2M,UAAU3E,OAC5C,IAAK,SAAU,OAAO84F,EAAI9gG,KAAK4M,OAAO5E,OAEtC,QAAS,OAAO84F,EAAI9gG,KAAKC,IAAI+H,OAE/B,CAqCgByI,CAAiBqwF,GAChC9mG,QAAQiU,KAAK6yF,GACb,IAAMI,EAAiB,WACtB,OAAQl5F,GACP,IAAK,MAEL,IAAK,MAEL,QAAS,MAAO,MAHhB,IAAK,MAEL,IAAK,MAAO,MAAO,iBAGrB,EAEMm5F,EAAc,WACnB,OAAQn5F,GACP,IAAK,MACL,IAAK,MAGL,QAAS,MAAO,MAFhB,IAAK,MACL,IAAK,MAAO,MAAO,iBAGrB,EAEMo5F,EAAe,CACpBr/F,QAAS,OACT8Q,oBAAqBquF,IACrBG,iBAAkBF,IAClBjwF,IAAK,MACLlQ,OAAQ,GAAAN,OAAG5H,EAAMkI,OAAM,MACvBY,SAAU,UAIX,OAAQk/F,EAAIQ,gBACX,IAAK,QACJ,GAAIR,EAAIS,gBAEP,OADCvnG,QAAQiU,KAAK6yF,EAAIS,gBAAiBjI,EAAkBwH,EAAIS,kBAEzDphG,kBAAAA,SACE+K,KAAMouF,EAAkBwH,EAAIS,uBAAoBr/F,EAChDiJ,OACiC,kBAAlC21F,EAAIS,gBAAgB/H,oBAChBsH,EAAIS,gBAAgB9H,oCAAetuF,OACnC,SAAQ7O,SAGX6D,kBAAAA,IAAA,MAAA,CAAKC,MAAOghG,WACbjhG,kBAAAA,IAAA,MAAA,CAAKyN,UAAU,YAAWtR,SACxB6D,kBAAAA,WACCwN,IAAKoxF,EAAY+B,EAAIS,gBAAgB/xF,MAAM1F,KAC3C2D,IAAKqzF,EAAIS,gBAAgB/xF,MAAM/B,IAChCG,UAAU,wBAOd,MACD,IAAK,QACJ,GAAIkzF,EAAIU,gBACP,OACCrhG,kBAAAA,IAAA,MAAA,CAAKC,MAAOghG,EAAY9kG,SACtB6D,sBAAA,MAAA,CAAKyN,UAAU,YAAWtR,SAC1B6D,kBAAAA,IAAA,QAAA,CACCwN,IAAKoxF,EAAY+B,EAAIU,gBAAgB7tF,MAAM7J,KAC3CwK,UAAQ,EACP1G,UAAU,sBAOhB,MAEC,IAAK,aACJ,GAAIkzF,EAAIW,qBAAsB,CAE5B,IAAMC,EAA2C,YAAlCZ,EAAIW,qBAAqBlpG,KACvCuoG,EAAIW,qBAAqBE,cACzBb,EAAIW,qBAAqB3wF,UAE1B,IAAK4wF,GAA4B,IAAlBA,EAAOllG,OACvB,OAAO2D,kBAAAA,4CAIN,GAAe,QAAX6H,EAAkB,CACvB,IAAM45F,EAAeF,EAAO7C,IAAkB6C,EAAO,GAC/CG,EAAUD,EAAetI,EAAkBsI,GAAgB,KAE3Dl0F,EAAek0F,EACnBzhG,kBAAAA,IAAA,MAAA,CAAKyN,UAAU,qBAChBzN,kBAAAA,IAAA,MAAA,CACEwN,IAAKoxF,EAC4B,YAAlC+B,EAAIW,qBAAqBlpG,KACrBqpG,EAAapyF,MAAM1F,YACnBlK,EAAAgiG,EAAalrF,2BAAM5M,KAEtB2D,IACiC,YAAlCqzF,EAAIW,qBAAqBlpG,KACrBqpG,EAAapyF,MAAM/B,IACF,QAAjBpH,EAAAu7F,EAAalrF,YAAI,IAAArQ,OAAA,EAAAA,EAAEoH,IAErBG,UAAU,oBAGV,KAEN,OACC1F,kBAAAA,KAAA,MAAA,CACC9H,MAAO,CACJ0B,SAAU,WACVf,MAAO,OACPC,OAAQ,OACRY,SAAU,SACVG,QAAS,OACTe,WAAY,SACZT,eAAgB,UACjB/F,SAAA,CAEAulG,EACC1hG,kBAAAA,IAAA,IAAA,CACD+K,KAAM22F,EACN12F,OAC8B,kBAA5By2F,eAAAA,EAAcpI,YACa,QAA1BxwF,EAAA44F,EAAanI,qBAAa,IAAAzwF,OAAA,EAAAA,EAAEmC,SAAU,SACtC,QAEH/K,MAAO,CAAEW,MAAO,OAAQC,OAAQ,QAAQ1E,SAEvCoR,MAODg0F,EAAOllG,OAAS,GACf0L,kBAAAA,KAAA+H,kBAAAA,SAAA,CAAA3T,SAAA,CAED6D,kBAAAA,IAAA,SAAA,CACEsR,QAAS8uF,EACTuB,SAA4B,IAAlBjD,EACVz+F,MAAO,CACR0B,SAAU,WACVR,KAAM,OACNJ,IAAK,MACLuR,UAAW,mBACX+nF,WAAY,kBACZvyF,MAAO,QACP+I,OAAQ,OACRvP,aAAc,MACdV,MAAO,OACPC,OAAQ,OACR6M,OAA0B,IAAlBgxF,EAAsB,cAAgB,UAC9C1xC,QAA2B,IAAlB0xC,EAAsB,GAAM,EACrC98F,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBuG,SAAU,OACV2xF,OAAQ,IACNj+F,SAAA,MAMH6D,kBAAAA,IAAA,SAAA,CACEsR,QAAS6uF,EACTwB,SAAUjD,GAAiB6C,EAAOllG,OAAS,EAC3C4D,MAAO,CACR0B,SAAU,WACVN,MAAO,OACPN,IAAK,MACLuR,UAAW,mBACX+nF,WAAY,kBACZvyF,MAAO,QACP+I,OAAQ,OACRvP,aAAc,MACdV,MAAO,OACPC,OAAQ,OACR6M,OAAQgxF,GAAiB6C,EAAOllG,OAAS,EAAI,cAAgB,UAC7D2wD,QAAS0xC,GAAiB6C,EAAOllG,OAAS,EAAI,GAAM,EACtDuF,QAAS,OACPe,WAAY,SACZT,eAAgB,SAChBuG,SAAU,OACV2xF,OAAQ,IACNj+F,SAAA,MAMH6D,kBAAAA,IAAA,MAAA,CACEC,MAAO,CACR0B,SAAU,WACVV,OAAQ,OACRE,KAAM,MACNmR,UAAW,mBACX1Q,QAAS,OACTmP,IAAK,MACLqpF,OAAQ,IACNj+F,SAEAolG,EAAOv5F,IAAI,SAAC7C,EAAGssB,GAAU,OAC3BzxB,kBAAAA,IAAA,SAAA,CAEEsR,QAAS,WAAM,OAAA+uF,EAAiB5uE,EAAjB,EACfxxB,MAAO,CACRW,MAAO6wB,IAAUitE,EAAgB,OAAS,MAC1C79F,OAAQ4wB,IAAUitE,EAAgB,OAAS,MAC3Cp9F,aAAc,MACduP,OAAQ,OACRwpF,WAAY5oE,IAAUitE,EAAgB,QAAU,wBAChDhxF,OAAQ,UACR2E,WAAY,kBATNof,EAFoB,UAoB7B,CAGA,IASMmwE,EATe,WACtB,OAAQ/5F,GACN,IAAK,MACL,IAAK,MAAO,OAAO,EACnB,IAAK,MAAO,OAAO,EACnB,QAAS,OAAO05F,EAAOllG,OAExB,CAEkBwlG,GACZC,EAAgBP,EAAOpvF,MAAM,EAAGyvF,GAGhCG,EAAyB,CAChCngG,QAAS,OACT8Q,oBAAqBquF,IACrBG,iBAAkBF,IAClBjwF,IAAK,MACLlQ,OAAQ,OACRY,SAAU,UAGT,OACDzB,kBAAAA,IAAA,MAAA,CAAKC,MAAO8hG,EAAwBt0F,UAAU,YAAWtR,SACtD2lG,EAAc95F,IAAI,SAACqH,EAAOoiB,aACtBiwE,EAAUvI,EAAkB9pF,GAC5B9B,EACJvN,kBAAAA,WAAiByN,UAAU,YAAWtR,SACvC6D,kBAAAA,IAAA,MAAA,CACEwN,IAAKoxF,EAC4B,YAAlC+B,EAAIW,qBAAqBlpG,KACrBiX,EAAMA,MAAM1F,YACZpK,EAAA8P,EAAMkH,2BAAM5M,KAEf2D,IACiC,YAAlCqzF,EAAIW,qBAAqBlpG,KACrBiX,EAAMA,MAAM/B,YACZ7N,EAAA4P,EAAMkH,2BAAMjJ,IAEfG,UAAU,mBAZDgkB,GAiBZ,OAAOiwE,EACL1hG,kBAAAA,SAED+K,KAAM22F,EACN12F,OACsB,iBAApBqE,EAAMgqF,WACc,QAAnBnzF,EAAAmJ,EAAMiqF,qBAAa,IAAApzF,OAAA,EAAAA,EAAE8E,SAAU,SAC/B,QAEHyC,UAAU,YAAWtR,SAEpBoR,GATIkkB,GAYJzxB,kBAAAA,IAAA,MAAA,CAAiBC,MAAO,CAAEW,MAAO,OAAQC,OAAQ,iBACjD0M,GADUkkB,EAIX,IAIH,CACA,MAEA,IAAK,aACJ,GAAIkvE,EAAIqB,qBAAsB,CAE5B,IAAMC,EAA2C,YAAlCtB,EAAIqB,qBAAqB5pG,KACvCuoG,EAAIqB,qBAAqBE,cACzBvB,EAAIqB,qBAAqBrxF,UAE1B,IAAKsxF,GAA4B,IAAlBA,EAAO5lG,OACvB,OAAO2D,kBAAAA,4CAIN,GAAe,QAAX6H,EAAkB,CACvB,IAAMs6F,EAAeF,EAAOvD,IAAkBuD,EAAO,GAG/CG,GAFAV,EAAUS,EAAehJ,EAAkBgJ,GAAgB,KAE5CA,EACnBniG,kBAAAA,IAAA,MAAA,CAAKyN,UAAU,qBAChBzN,kBAAAA,IAAA,QAAA,CACEwN,IAAKoxF,EAC4B,YAAlC+B,EAAIqB,qBAAqB5pG,aACrB4Q,EAAAm5F,EAAa3uF,4BAAO7J,YACpBR,EAAAg5F,EAAa5rF,2BAAM5M,KAEtBiK,MACiC,YAAlC+sF,EAAIqB,qBAAqB5pG,MACH,QAAlBiS,EAAA83F,EAAa3uF,aAAK,IAAAnJ,OAAA,EAAAA,EAAEiD,MAAO60F,EAAa7oG,aACxCgR,EAAA63F,EAAa5rF,2BAAMjJ,IACtBG,UAAU,gBACV0G,UAAQ,EACRlU,MAAO,CAAEW,MAAO,OAAQC,OAAQ,OAAQoQ,UAAW,aAGlD,MAEJ,OACElJ,kBAAAA,KAAA,MAAA,CACD9H,MAAO,CACL0B,SAAU,WACVf,MAAO,OACPC,OAAQ,OACRY,SAAU,SACVG,QAAS,OACTe,WAAY,UACZT,eAAgB,UACjB/F,SAAA,CAEAgmG,GACCniG,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAAEW,MAAO,OAAQC,OAAQ,OAAQe,QAAS,QAAQzF,SAC9DulG,EACC1hG,2BACD+K,KAAM22F,EACN12F,OAC6B,iBAA3Bm3F,EAAa9I,WACc,QAA1B9uF,EAAA43F,EAAa7I,qBAAa,IAAA/uF,OAAA,EAAAA,EAAES,SAAU,SACtC,QAEH/K,MAAO,CAAE8I,eAAgB,OAAQjB,MAAO,UAAWlG,QAAS,qBAE3DwgG,IACI,IAQNH,EAAO5lG,OAAS,GACf0L,kBAAAA,KAAA+H,kBAAAA,SAAA,CAAA3T,SAAA,CAED6D,kBAAAA,cACEsR,QAAS8uF,EACTuB,SAA4B,IAAlBjD,EACVz+F,MAAO,CACR0B,SAAU,WACVR,KAAM,OACNJ,IAAK,MACLuR,UAAW,mBACX+nF,WAAY,kBACZvyF,MAAO,QACP+I,OAAQ,OACRvP,aAAc,MACdV,MAAO,OACPC,OAAQ,OACR6M,OAA0B,IAAlBgxF,EAAsB,cAAgB,UAC9C1xC,QAA2B,IAAlB0xC,EAAsB,GAAM,EACrC98F,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBuG,SAAU,OACV2xF,OAAQ,IACNj+F,SAAA,MAMH6D,kBAAAA,IAAA,SAAA,CACEsR,QAAS6uF,EACTwB,SAAUjD,GAAiBuD,EAAO5lG,OAAS,EAC3C4D,MAAO,CACR0B,SAAU,WACVN,MAAO,OACPN,IAAK,MACLuR,UAAW,mBACX+nF,WAAY,kBACZvyF,MAAO,QACP+I,OAAQ,OACRvP,aAAc,MACdV,MAAO,OACPC,OAAQ,OACR6M,OAAQgxF,GAAiBuD,EAAO5lG,OAAS,EAAI,cAAgB,UAC7D2wD,QAAS0xC,GAAiBuD,EAAO5lG,OAAS,EAAI,GAAM,EACpDuF,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBuG,SAAU,OACV2xF,OAAQ,IACNj+F,SAAA,MAMH6D,kBAAAA,IAAA,MAAA,CACEC,MAAO,CACR0B,SAAU,WACVV,OAAQ,OACRE,KAAM,MACNmR,UAAW,mBACX1Q,QAAS,OACTmP,IAAK,MACLqpF,OAAQ,IACNj+F,SAEA8lG,EAAOj6F,IAAI,SAAC7C,EAAGssB,GAAU,OAC3BzxB,kBAAAA,IAAA,SAAA,CAEEsR,QAAS,WAAM,OAAA+uF,EAAiB5uE,EAAjB,EACfxxB,MAAO,CACRW,MAAO6wB,IAAUitE,EAAgB,OAAS,MAC1C79F,OAAQ4wB,IAAUitE,EAAgB,OAAS,MAC3Cp9F,aAAc,MACduP,OAAQ,OACRwpF,WAAY5oE,IAAUitE,EAAgB,QAAU,wBAChDhxF,OAAQ,UACR2E,WAAY,kBATNof,EAFoB,UAoB9B,CAGA,IASM4wE,EATe,WACtB,OAAQx6F,GACN,IAAK,MACL,IAAK,MAAO,OAAO,EACnB,IAAK,MAAO,OAAO,EACnB,QAAS,OAAOo6F,EAAO5lG,OAExB,CAEkBimG,GACZC,EAAgBN,EAAO9vF,MAAM,EAAGkwF,GAGhCG,EAAyB,CAChC5gG,QAAS,OACT8Q,oBAAqBquF,IACrBG,iBAAkBF,IAClBjwF,IAAK,MACLlQ,OAAQ,OACRY,SAAU,UAGT,OACDzB,kBAAAA,IAAA,MAAA,CAAKC,MAAOuiG,EAAwB/0F,UAAU,YAAWtR,SACtDomG,EAAcv6F,IAAI,SAACwL,EAAOie,iBACtBiwE,EAAUvI,EAAkB3lF,GAE5B4uF,EACJpiG,kBAAAA,WAAKyN,UAAU,YAAWtR,SAC3B6D,kBAAAA,IAAA,QAAA,CACEwN,IAAKoxF,EAC4B,YAAlC+B,EAAIqB,qBAAqB5pG,aACrBmH,EAAAiU,EAAMA,4BAAO7J,YACblK,EAAA+T,EAAM+C,2BAAM5M,KAEfiK,MACiC,YAAlC+sF,EAAIqB,qBAAqB5pG,MACV,QAAX8N,EAAAsN,EAAMA,aAAK,IAAAtN,OAAA,EAAAA,EAAEoH,MAAOkG,EAAMla,KAChB,QAAVuP,EAAA2K,EAAM+C,YAAI,IAAA1N,OAAA,EAAAA,EAAEyE,IAEfG,UAAU,gBACV0G,YACAlU,MAAO,CAAEW,MAAO,OAAQC,OAAQ,OAAQoQ,UAAW,aAKtD,OAAOywF,EACL1hG,kBAAAA,SAED+K,KAAM22F,EACN12F,OACsB,iBAApBwI,EAAM6lF,WACc,QAAnBrwF,EAAAwK,EAAM8lF,qBAAa,IAAAtwF,OAAA,EAAAA,EAAEgC,SAAU,SAC/B,QAEHyC,UAAU,YAAWtR,SAEpBimG,GATI3wE,GAYJzxB,kBAAAA,IAAA,MAAA,CAAiBC,MAAO,CAAEW,MAAO,OAAQC,OAAQ,iBACjDuhG,GADU3wE,EAIX,IAIH,CACA,MAEA,IAAK,eACJ,GAAIkvE,EAAI8B,wBAA0B9B,EAAI8B,uBAAuB9xF,UAAW,CACtE,IAAM+xF,EAAW/B,EAAI8B,uBAAuB9xF,UAG5C,GAAe,QAAX9I,EAAkB,CACvB,IAAM86F,EAAiBD,EAAShE,IAAkBgE,EAAS,GAE3D,OACE36F,kBAAAA,KAAA,MAAA,CACD9H,MAAO,CACL0B,SAAU,WACVf,MAAO,OACPC,OAAQ,GAAAN,OAAG5H,EAAMkI,OAAM,MACvBY,SAAU,SACVG,QAAS,OACTe,WAAY,UACZT,eAAgB,UACjB/F,SAAA,CAEAwmG,GACC3iG,kBAAAA,IAAA,MAAA,CAAKC,MAAO,CAAEW,MAAO,OAAQC,OAAQ,OAAQe,QAAS,QAAQzF,SAC/D6D,kBAAAA,IAAC6+F,EAAW,CAAC70F,QAAS24F,EAAgB96F,OAAQA,MAK9C66F,EAASrmG,OAAS,GACjB0L,kBAAAA,2CAED/H,kBAAAA,IAAA,SAAA,CACEsR,QAAS8uF,EACTuB,SAA4B,IAAlBjD,EACVz+F,MAAO,CACR0B,SAAU,WACVR,KAAM,OACNJ,IAAK,MACLuR,UAAW,mBACX+nF,WAAY,kBACZvyF,MAAO,QACP+I,OAAQ,OACRvP,aAAc,MACdV,MAAO,OACPC,OAAQ,OACR6M,OAA0B,IAAlBgxF,EAAsB,cAAgB,UAC9C1xC,QAA2B,IAAlB0xC,EAAsB,GAAM,EACrC98F,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBuG,SAAU,OACV2xF,OAAQ,IACNj+F,SAAA,MAMH6D,kBAAAA,IAAA,SAAA,CACEsR,QAAS6uF,EACTwB,SAAUjD,GAAiBgE,EAASrmG,OAAS,EAC7C4D,MAAO,CACR0B,SAAU,WACVN,MAAO,OACPN,IAAK,MACLuR,UAAW,mBACX+nF,WAAY,kBACZvyF,MAAO,QACP+I,OAAQ,OACRvP,aAAc,MACdV,MAAO,OACPC,OAAQ,OACR6M,OACEgxF,GAAiBgE,EAASrmG,OAAS,EAClC,cACA,UACH2wD,QAAS0xC,GAAiBgE,EAASrmG,OAAS,EAAI,GAAM,EACtDuF,QAAS,OACTe,WAAY,SACZT,eAAgB,SAChBuG,SAAU,OACV2xF,OAAQ,IACNj+F,SAAA,MAMH6D,kBAAAA,IAAA,MAAA,CACEC,MAAO,CACR0B,SAAU,WACVV,OAAQ,OACRE,KAAM,MACNmR,UAAW,mBACX1Q,QAAS,OACTmP,IAAK,MACLqpF,OAAQ,IACNj+F,SAEAumG,EAAS16F,IAAI,SAAC7C,EAAGssB,GAAU,OAC7BzxB,kBAAAA,IAAA,SAAA,CAEEsR,QAAS,WAAM,OAAA+uF,EAAiB5uE,EAAjB,EACfxxB,MAAO,CACRW,MAAO6wB,IAAUitE,EAAgB,OAAS,MAC1C79F,OAAQ4wB,IAAUitE,EAAgB,OAAS,MAC3Cp9F,aAAc,MACduP,OAAQ,OACRwpF,WACE5oE,IAAUitE,EACT,QACA,wBACHhxF,OAAQ,UACR2E,WAAY,kBAZNof,EAFsB,UAuB/B,CAGA,IASMmxE,EATiB,WACxB,OAAQ/6F,GACN,IAAK,MACL,IAAK,MAAO,OAAO,EACnB,IAAK,MAAO,OAAO,EACnB,QAAS,OAAO66F,EAASrmG,OAE1B,CAEoBwmG,GACdC,EAAkBJ,EAASvwF,MAAM,EAAGywF,GAGpCG,EAA2B,CAClCnhG,QAAS,OACT8Q,oBAAqBquF,IACrBG,iBAAkBF,IAClBjwF,IAAK,OACLlQ,OAAQ,OACRY,SAAU,SACVsF,QAAS,OACTpE,WAAY,WAGX,OACD3C,kBAAAA,IAAA,MAAA,CAAKC,MAAO8iG,EAAwB5mG,SACjC2mG,EAAgB96F,IAAI,SAACgC,EAASynB,GAAU,OAC1CzxB,kBAAAA,IAAA,MAAA,CAEEC,MAAO,CACRW,MAAO,OACPC,OAAQ,OACRe,QAAS,OACTe,WAAY,UACZT,eAAgB,SAChBhC,UAAW,SACT/D,SAED6D,kBAAAA,IAAC6+F,EAAW,CAAC70F,QAASA,EAASnC,OAAQA,KAVlC4pB,EAFmC,IAiB/C,CACA,MAED,QACC,OACCzxB,kBAAAA,IAAA,MAAA,CAAKC,MAAKuD,SAAAA,SAAA,CAAA,EACNy9F,IACHt+F,WAAY,SACZT,eAAgB,SAChB/B,gBAAiB,UACjBmB,aAAc,QAAKnF,SAEnB6D,kBAAAA,IAAA,IAAA,CAAGC,MAAO,CAAE6H,MAAO,UAAWI,UAAW,UAAU/L,SAAA,2BAKvD,OAAO,IACR,CAyEM6mG,CAAiBxC,EAAKhC,UAM7B,ECpoCAyE,cAAA,SAAAC,GACE,SAAAD,EAAYtqG,GACV,IAAAwqG,EAAAD,EAAK9nG,KAAAM,KAAC/C,IAAM+C,YACZynG,EAAKrpB,MAAQ,CAAEspB,UAAU,IAC3B,CAkBF,OAtB4BjgG,UAAA8/F,EAAAC,GAMnBD,EAAAI,yBAAP,SAAgCvpG,GAC9B,MAAO,CAAEspG,UAAU,EACrB,EAEAH,EAAA1kG,UAAA+kG,kBAAA,SAAkBxpG,EAAcypG,GAC9B1pG,QAAQC,MAAM,iCAAkCA,EAAOypG,EAEzD,EAEAN,EAAA1kG,UAAAlE,OAAA,WACE,OAAIqB,KAAKo+E,MAAMspB,SACNpjG,sBAAA,MAAA,CAAKC,MAAO,CAAE8G,QAAS,OAAQe,MAAO,2EAGxCpM,KAAK/C,MAAMwD,QACpB,EACF8mG,CAAA,CAtBA,CAA4B7kG,MAAMolG,WCS5BC,KAAO,SAAClkG,GAAC,IAAA+O,EAAI/O,EAAA+O,KACT7O,EAA8BmO,MAAAA,SAAiB,OAA9ClO,EAAUD,EAAA,GAAEikG,EAAajkG,EAAA,GAC3ByG,EAA8B0H,MAAAA,SAAS,CAC5ChN,MAAO,EACPC,OAAQ,IAFQqF,EAAA,GAAA,IAAEy9F,OA8BpB,OAhBA51F,MAAAA,UAAU,WACR,IAAM61F,EAAe,WACnB,IAAMhjG,EAAQoN,OAAO61F,WACfhjG,EAASmN,OAAOgnF,YACtB2O,EAAc,CAAE/iG,MAAKA,EAAEC,OAAMA,IAC7B6iG,EAbkB,SAAC9iG,GACrB,OAAIA,GAAS,IAAY,YACrBA,GAAS,IAAY,YACrBA,GAAS,KAAa,SACnB,KACT,CAQkBkjG,CAAcljG,GAC9B,EAMA,OAHAgjG,IAEA51F,OAAOwZ,iBAAiB,SAAUo8E,GAC3B,WACL51F,OAAOqa,oBAAoB,SAAUu7E,EACvC,CACF,EAAG,IAED5jG,kBAAAA,IAAA8P,kBAAAA,SAAA,CAAA3T,SACE6D,kBAAAA,IAAA,MAAA,CAAKyN,UAAU,GAAEtR,SACtB6D,sBAAA,MAAA,CAAKyN,UAAU,GAAEtR,SAEV6D,kBAAAA,IAACijG,cAAa,CAAA9mG,SACnBmS,EAAKtG,IAAI,SAAC+7F,EAAsCC,GAA2C,OAC1FhkG,kBAAAA,IAACV,aAAY,CAAgB3G,MAAOorG,EAAIprG,MAAO+G,WAAYA,EAAUvD,SAClE4nG,EAAIE,QAAQj8F,IAAI,SAACwsC,EAAK0vD,GAAa,OAClClkG,kBAAAA,IAACiG,aAAY,CAEXtN,MAAO67C,EAAI77C,MACX+G,WAAYA,EACZyG,qBAAqB,EAAIhK,SAExBq4C,EAAI2vD,WAAWn8F,IAAI,SAAC67C,EAAypBugD,GAC5qB,IAAMC,EAAsB,iBAEtB7kG,EADa,CAAC,MAAO,YAAa,YAAa,UACnBI,SAASF,GACvCA,EACA,MACF,MAAoB,mBAAjBmkD,EAAUvqD,KAAgC,QACV,QAA9BiG,EAAAi1C,EAAI77C,MAAMkH,KAAKL,UAAe,IAAAD,OAAA,EAAAA,EAAEsB,SAAU,MACjD,EAEA,IACE,OAAQgjD,EAAUvqD,MAChB,IAAK,gBACH,OAAO0G,kBAAAA,IAACoI,cAAa,CAAiBzP,MAAOkrD,EAAUlrD,OAA5ByrG,GAC7B,IAAK,gBACH,OAAOpkG,kBAAAA,IAACiL,cAAa,CAAiBtS,MAAOkrD,EAAUlrD,OAA5ByrG,GAC7B,IAAK,iBACH,OAAOpkG,sBAACqM,eAAc,CAAiB1T,MAAOkrD,EAAUlrD,MAA8B+G,WAAYA,EAAY4M,UAAW+3F,KAA7FD,GAC9B,IAAK,wBACH,OAAOpkG,kBAAAA,IAAC+P,sBAAqB,CAAiBpX,MAAOkrD,EAAUlrD,MAAqC+G,WAAYA,GAA7E0kG,GACrC,IAAK,iBACH,OAAOpkG,sBAACuT,iBAAc,CAAiB5a,MAAOkrD,EAAUlrD,MAA8B+G,WAAYA,EAAY4M,UAAW+3F,KAA7FD,GAC9B,IAAK,sBACH,OAAOpkG,kBAAAA,IAACwU,oBAAmB,CAAiB7b,MAAOkrD,EAAUlrD,MAAmC+G,WAAYA,GAA3E0kG,GACnC,IAAK,kBACH,OAAOpkG,kBAAAA,IAACm3F,gBAAe,CAAiBx+F,MAAOkrD,EAAUlrD,OAA5ByrG,GAC/B,IAAK,oBACH,OAAOpkG,kBAAAA,IAACm4F,kBAAiB,CAAiBx/F,MAAOkrD,EAAUlrD,MAAwB+G,WAAYA,GAAhE0kG,GACjC,IAAK,sBACH,OAAOpkG,kBAAAA,IAACw6F,oBAAmB,CAAiB7hG,MAAOkrD,EAAUlrD,MAA0B2T,UAAW+3F,KAAjED,GACnC,IAAK,sBACH,OAAOpkG,kBAAAA,IAAC+7F,eAAc,CAAiBpjG,MAAOkrD,EAAUlrD,MAA8B2T,UAAW+3F,KAArED,GAC9B,IAAK,yBACH,OAAOpkG,kBAAAA,IAACg9F,uBAAsB,CAAiBrkG,MAAOkrD,EAAUlrD,MAAsC+G,WAAYA,GAA9E0kG,GACtC,IAAK,sBACH,OAAOpkG,kBAAAA,IAACg+F,eAAc,CAAiBrlG,MAAOkrD,EAAUlrD,MAA8B+G,WAAYA,GAAtE0kG,GAC9B,IAAK,eACH,OAAOpkG,kBAAAA,IAACu+F,aAAY,CAAiB5lG,MAAOkrD,EAAUlrD,MAA4B+G,WAAYA,GAApE0kG,GAC5B,QACE,OAAO,KAEb,CAAE,MAAO3gF,GAEP,OADA5pB,QAAQC,MAAM,8BAAAyG,OAA8BsjD,EAAUvqD,MAAQmqB,GACvD1b,kBAAAA,KAAA,MAAA,CAAqB9H,MAAO,CAAE6H,MAAO,OAAO3L,SAAA,CAAA,6BAA6B0nD,EAAUvqD,OAAzE8qG,EACnB,CACF,IAlDKF,EAF2B,IADnBF,EADuE,UAgE9F","x_google_ignoreList":[0,1,2,4,8,16,17]}