tanya-chatbot 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.
- package/README.md +55 -0
- package/dist/tanya-chatbot.cjs.js +79 -0
- package/dist/tanya-chatbot.cjs.js.map +1 -0
- package/dist/tanya-chatbot.css +1 -0
- package/dist/tanya-chatbot.es.js +12393 -0
- package/dist/tanya-chatbot.es.js.map +1 -0
- package/package.json +83 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tanya-chatbot.es.js","sources":["../node_modules/@radix-ui/primitive/dist/index.mjs","../node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../node_modules/@radix-ui/react-context/dist/index.mjs","../node_modules/@radix-ui/react-slot/dist/index.mjs","../node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs","../node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../node_modules/@radix-ui/react-focus-guards/dist/index.mjs","../node_modules/@radix-ui/react-focus-scope/dist/index.mjs","../node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../node_modules/@radix-ui/react-id/dist/index.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../node_modules/@radix-ui/react-arrow/dist/index.mjs","../node_modules/@radix-ui/react-use-size/dist/index.mjs","../node_modules/@radix-ui/react-popper/dist/index.mjs","../node_modules/@radix-ui/react-presence/dist/index.mjs","../node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../node_modules/aria-hidden/dist/es2015/index.js","../node_modules/tslib/tslib.es6.mjs","../node_modules/react-remove-scroll-bar/dist/es2015/constants.js","../node_modules/use-callback-ref/dist/es2015/assignRef.js","../node_modules/use-callback-ref/dist/es2015/useRef.js","../node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../node_modules/use-sidecar/dist/es2015/medium.js","../node_modules/use-sidecar/dist/es2015/exports.js","../node_modules/react-remove-scroll/dist/es2015/medium.js","../node_modules/react-remove-scroll/dist/es2015/UI.js","../node_modules/get-nonce/dist/es2015/index.js","../node_modules/react-style-singleton/dist/es2015/singleton.js","../node_modules/react-style-singleton/dist/es2015/hook.js","../node_modules/react-style-singleton/dist/es2015/component.js","../node_modules/react-remove-scroll-bar/dist/es2015/utils.js","../node_modules/react-remove-scroll-bar/dist/es2015/component.js","../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../node_modules/react-remove-scroll/dist/es2015/sidecar.js","../node_modules/react-remove-scroll/dist/es2015/Combination.js","../node_modules/@radix-ui/react-popover/dist/index.mjs","../src/components/lib/utils.ts","../src/components/ui/popover.tsx","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/index.js","../src/config/api.ts","../src/components/utils/fetchTokenBmGrant.ts","../src/components/utils/fetchExistingRegisterCustomerToken.ts","../src/sfcc-apis/session/index.ts","../src/components/utils/index.ts","../__vite-browser-external","../node_modules/crypto-js/core.js","../node_modules/crypto-js/x64-core.js","../node_modules/crypto-js/lib-typedarrays.js","../node_modules/crypto-js/enc-utf16.js","../node_modules/crypto-js/enc-base64.js","../node_modules/crypto-js/enc-base64url.js","../node_modules/crypto-js/md5.js","../node_modules/crypto-js/sha1.js","../node_modules/crypto-js/sha256.js","../node_modules/crypto-js/sha224.js","../node_modules/crypto-js/sha512.js","../node_modules/crypto-js/sha384.js","../node_modules/crypto-js/sha3.js","../node_modules/crypto-js/ripemd160.js","../node_modules/crypto-js/hmac.js","../node_modules/crypto-js/pbkdf2.js","../node_modules/crypto-js/evpkdf.js","../node_modules/crypto-js/cipher-core.js","../node_modules/crypto-js/mode-cfb.js","../node_modules/crypto-js/mode-ctr.js","../node_modules/crypto-js/mode-ctr-gladman.js","../node_modules/crypto-js/mode-ofb.js","../node_modules/crypto-js/mode-ecb.js","../node_modules/crypto-js/pad-ansix923.js","../node_modules/crypto-js/pad-iso10126.js","../node_modules/crypto-js/pad-iso97971.js","../node_modules/crypto-js/pad-zeropadding.js","../node_modules/crypto-js/pad-nopadding.js","../node_modules/crypto-js/format-hex.js","../node_modules/crypto-js/aes.js","../node_modules/crypto-js/tripledes.js","../node_modules/crypto-js/rc4.js","../node_modules/crypto-js/rabbit.js","../node_modules/crypto-js/rabbit-legacy.js","../node_modules/crypto-js/blowfish.js","../node_modules/crypto-js/index.js","../src/components/utils/helper.js","../node_modules/@iconify/react/dist/iconify.js","../src/store/reducers/productReducer.ts","../src/components/carousel/ProductCarousel.tsx","../src/components/carousel/ProductDisplay.tsx","../src/components/api/api.ts","../src/config/constant.ts","../src/components/utils/localStorage.ts","../node_modules/react-toastify/dist/index.mjs","../src/components/product/ProductDisplayCard.tsx","../src/components/tanya-widget/tanya-shopping-assistent.tsx"],"sourcesContent":["// packages/core/primitive/src/primitive.tsx\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nexport {\n composeEventHandlers\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/slot.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenRef = React.isValidElement(children) ? getElementRef(children) : void 0;\n const ref = useComposedRefs(childrenRef, forwardedRef);\n if (React.isValidElement(children)) {\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = ref;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-escape-keydown/src/use-escape-keydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/focus-guards/src/focus-guards.tsx\nimport * as React from \"react\";\nvar count = 0;\nfunction FocusGuards(props) {\n useFocusGuards();\n return props.children;\n}\nfunction useFocusGuards() {\n React.useEffect(() => {\n const edgeGuards = document.querySelectorAll(\"[data-radix-focus-guard]\");\n document.body.insertAdjacentElement(\"afterbegin\", edgeGuards[0] ?? createFocusGuard());\n document.body.insertAdjacentElement(\"beforeend\", edgeGuards[1] ?? createFocusGuard());\n count++;\n return () => {\n if (count === 1) {\n document.querySelectorAll(\"[data-radix-focus-guard]\").forEach((node) => node.remove());\n }\n count--;\n };\n }, []);\n}\nfunction createFocusGuard() {\n const element = document.createElement(\"span\");\n element.setAttribute(\"data-radix-focus-guard\", \"\");\n element.tabIndex = 0;\n element.style.outline = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.pointerEvents = \"none\";\n return element;\n}\nvar Root = FocusGuards;\nexport {\n FocusGuards,\n Root,\n useFocusGuards\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-scope.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar FOCUS_SCOPE_NAME = \"FocusScope\";\nvar FocusScope = React.forwardRef((props, forwardedRef) => {\n const {\n loop = false,\n trapped = false,\n onMountAutoFocus: onMountAutoFocusProp,\n onUnmountAutoFocus: onUnmountAutoFocusProp,\n ...scopeProps\n } = props;\n const [container, setContainer] = React.useState(null);\n const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n const lastFocusedElementRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n const focusScope = React.useRef({\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n }\n }).current;\n React.useEffect(() => {\n if (trapped) {\n let handleFocusIn2 = function(event) {\n if (focusScope.paused || !container) return;\n const target = event.target;\n if (container.contains(target)) {\n lastFocusedElementRef.current = target;\n } else {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleFocusOut2 = function(event) {\n if (focusScope.paused || !container) return;\n const relatedTarget = event.relatedTarget;\n if (relatedTarget === null) return;\n if (!container.contains(relatedTarget)) {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleMutations2 = function(mutations) {\n const focusedElement = document.activeElement;\n if (focusedElement !== document.body) return;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length > 0) focus(container);\n }\n };\n var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;\n document.addEventListener(\"focusin\", handleFocusIn2);\n document.addEventListener(\"focusout\", handleFocusOut2);\n const mutationObserver = new MutationObserver(handleMutations2);\n if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n return () => {\n document.removeEventListener(\"focusin\", handleFocusIn2);\n document.removeEventListener(\"focusout\", handleFocusOut2);\n mutationObserver.disconnect();\n };\n }\n }, [trapped, container, focusScope.paused]);\n React.useEffect(() => {\n if (container) {\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = document.activeElement;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n if (document.activeElement === previouslyFocusedElement) {\n focus(container);\n }\n }\n }\n return () => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n setTimeout(() => {\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n container.dispatchEvent(unmountEvent);\n if (!unmountEvent.defaultPrevented) {\n focus(previouslyFocusedElement ?? document.body, { select: true });\n }\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n focusScopesStack.remove(focusScope);\n }, 0);\n };\n }\n }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n const handleKeyDown = React.useCallback(\n (event) => {\n if (!loop && !trapped) return;\n if (focusScope.paused) return;\n const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = document.activeElement;\n if (isTabKey && focusedElement) {\n const container2 = event.currentTarget;\n const [first, last] = getTabbableEdges(container2);\n const hasTabbableElementsInside = first && last;\n if (!hasTabbableElementsInside) {\n if (focusedElement === container2) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (loop) focus(first, { select: true });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (loop) focus(last, { select: true });\n }\n }\n }\n },\n [loop, trapped, focusScope.paused]\n );\n return /* @__PURE__ */ jsx(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });\n});\nFocusScope.displayName = FOCUS_SCOPE_NAME;\nfunction focusFirst(candidates, { select = false } = {}) {\n const previouslyFocusedElement = document.activeElement;\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (document.activeElement !== previouslyFocusedElement) return;\n }\n}\nfunction getTabbableEdges(container) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last];\n}\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nfunction findVisible(elements, container) {\n for (const element of elements) {\n if (!isHidden(element, { upTo: container })) return element;\n }\n}\nfunction isHidden(node, { upTo }) {\n if (getComputedStyle(node).visibility === \"hidden\") return true;\n while (node) {\n if (upTo !== void 0 && node === upTo) return false;\n if (getComputedStyle(node).display === \"none\") return true;\n node = node.parentElement;\n }\n return false;\n}\nfunction isSelectableInput(element) {\n return element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n if (element && element.focus) {\n const previouslyFocusedElement = document.activeElement;\n element.focus({ preventScroll: true });\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n element.select();\n }\n}\nvar focusScopesStack = createFocusScopesStack();\nfunction createFocusScopesStack() {\n let stack = [];\n return {\n add(focusScope) {\n const activeFocusScope = stack[0];\n if (focusScope !== activeFocusScope) {\n activeFocusScope?.pause();\n }\n stack = arrayRemove(stack, focusScope);\n stack.unshift(focusScope);\n },\n remove(focusScope) {\n stack = arrayRemove(stack, focusScope);\n stack[0]?.resume();\n }\n };\n}\nfunction arrayRemove(array, item) {\n const updatedArray = [...array];\n const index = updatedArray.indexOf(item);\n if (index !== -1) {\n updatedArray.splice(index, 1);\n }\n return updatedArray;\n}\nfunction removeLinks(items) {\n return items.filter((item) => item.tagName !== \"A\");\n}\nvar Root = FocusScope;\nexport {\n FocusScope,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/id/src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n const [id, setId] = React.useState(useReactId());\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n useId\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n var _overflowsData$;\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n const hasInitialMainAxisOverflow = ((_overflowsData$ = overflowsData[0]) == null ? void 0 : _overflowsData$.overflows[0]) > 0;\n if (!ignoreCrossAxisOverflow || hasInitialMainAxisOverflow) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isTopLayer(element) {\n return [':popover-open', ':modal'].some(selector => {\n try {\n return element.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return ['transform', 'translate', 'scale', 'rotate', 'perspective'].some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n if (ignoreScrollbarX === void 0) {\n ignoreScrollbarX = false;\n }\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n // RTL <body> scrollbar.\n getWindowScrollBarX(documentElement, htmlRect));\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, offset as offset$1, shift as shift$1, limitShift as limitShift$1, flip as flip$1, size as size$1, autoPlacement as autoPlacement$1, hide as hide$1, inline as inline$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect, useEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar index = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n ...offset$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n ...shift$1(options),\n options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n ...limitShift$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n ...flip$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n ...size$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n ...autoPlacement$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n ...hide$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n ...inline$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n ...arrow$1(options),\n options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","// src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n const { children, width = 10, height = 5, ...arrowProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.svg,\n {\n ...arrowProps,\n ref: forwardedRef,\n width,\n height,\n viewBox: \"0 0 30 10\",\n preserveAspectRatio: \"none\",\n children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n }\n );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n Arrow,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/popper.tsx\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n shift,\n limitShift,\n hide,\n arrow as floatingUIarrow,\n flip,\n size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n const { __scopePopper, children } = props;\n const [anchor, setAnchor] = React.useState(null);\n return /* @__PURE__ */ jsx(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopper, virtualRef, ...anchorProps } = props;\n const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n context.onAnchorChange(virtualRef?.current || ref.current);\n });\n return virtualRef ? null : /* @__PURE__ */ jsx(Primitive.div, { ...anchorProps, ref: composedRefs });\n }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopper,\n side = \"bottom\",\n sideOffset = 0,\n align = \"center\",\n alignOffset = 0,\n arrowPadding = 0,\n avoidCollisions = true,\n collisionBoundary = [],\n collisionPadding: collisionPaddingProp = 0,\n sticky = \"partial\",\n hideWhenDetached = false,\n updatePositionStrategy = \"optimized\",\n onPlaced,\n ...contentProps\n } = props;\n const context = usePopperContext(CONTENT_NAME, __scopePopper);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [arrow, setArrow] = React.useState(null);\n const arrowSize = useSize(arrow);\n const arrowWidth = arrowSize?.width ?? 0;\n const arrowHeight = arrowSize?.height ?? 0;\n const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n const hasExplicitBoundaries = boundary.length > 0;\n const detectOverflowOptions = {\n padding: collisionPadding,\n boundary: boundary.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: hasExplicitBoundaries\n };\n const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n strategy: \"fixed\",\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n animationFrame: updatePositionStrategy === \"always\"\n });\n return cleanup;\n },\n elements: {\n reference: context.anchor\n },\n middleware: [\n offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n avoidCollisions && shift({\n mainAxis: true,\n crossAxis: false,\n limiter: sticky === \"partial\" ? limitShift() : void 0,\n ...detectOverflowOptions\n }),\n avoidCollisions && flip({ ...detectOverflowOptions }),\n size({\n ...detectOverflowOptions,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n }\n }),\n arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n transformOrigin({ arrowWidth, arrowHeight }),\n hideWhenDetached && hide({ strategy: \"referenceHidden\", ...detectOverflowOptions })\n ]\n });\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const handlePlaced = useCallbackRef(onPlaced);\n useLayoutEffect(() => {\n if (isPositioned) {\n handlePlaced?.();\n }\n }, [isPositioned, handlePlaced]);\n const arrowX = middlewareData.arrow?.x;\n const arrowY = middlewareData.arrow?.y;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: refs.setFloating,\n \"data-radix-popper-content-wrapper\": \"\",\n style: {\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n // keep off the page when measuring\n minWidth: \"max-content\",\n zIndex: contentZIndex,\n [\"--radix-popper-transform-origin\"]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y\n ].join(\" \"),\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...middlewareData.hide?.referenceHidden && {\n visibility: \"hidden\",\n pointerEvents: \"none\"\n }\n },\n dir: props.dir,\n children: /* @__PURE__ */ jsx(\n PopperContentProvider,\n {\n scope: __scopePopper,\n placedSide,\n onArrowChange: setArrow,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-side\": placedSide,\n \"data-align\": placedAlign,\n ...contentProps,\n ref: composedRefs,\n style: {\n ...contentProps.style,\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? \"none\" : void 0\n }\n }\n )\n }\n )\n }\n );\n }\n);\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n top: \"bottom\",\n right: \"left\",\n bottom: \"top\",\n left: \"right\"\n};\nvar PopperArrow = React.forwardRef(function PopperArrow2(props, forwardedRef) {\n const { __scopePopper, ...arrowProps } = props;\n const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n return (\n // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n // doesn't report size as we'd expect on SVG elements.\n // it reports their bounding box which is effectively the largest path inside the SVG.\n /* @__PURE__ */ jsx(\n \"span\",\n {\n ref: contentContext.onArrowChange,\n style: {\n position: \"absolute\",\n left: contentContext.arrowX,\n top: contentContext.arrowY,\n [baseSide]: 0,\n transformOrigin: {\n top: \"\",\n right: \"0 0\",\n bottom: \"center 0\",\n left: \"100% 0\"\n }[contentContext.placedSide],\n transform: {\n top: \"translateY(100%)\",\n right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n bottom: `rotate(180deg)`,\n left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n }[contentContext.placedSide],\n visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n },\n children: /* @__PURE__ */ jsx(\n ArrowPrimitive.Root,\n {\n ...arrowProps,\n ref: forwardedRef,\n style: {\n ...arrowProps.style,\n // ensures the element can be measured correctly (mostly for if SVG)\n display: \"block\"\n }\n }\n )\n }\n )\n );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n return value !== null;\n}\nvar transformOrigin = (options) => ({\n name: \"transformOrigin\",\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n let x = \"\";\n let y = \"\";\n if (placedSide === \"bottom\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === \"top\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === \"right\") {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === \"left\") {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return { data: { x, y } };\n }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n const [side, align = \"center\"] = placement.split(\"-\");\n return [side, align];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\nexport {\n ALIGN_OPTIONS,\n Anchor,\n Arrow,\n Content,\n Popper,\n PopperAnchor,\n PopperArrow,\n PopperContent,\n Root2 as Root,\n SIDE_OPTIONS,\n createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(event.animationName);\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","var getDefaultParent = function (originalTarget) {\n if (typeof document === 'undefined') {\n return null;\n }\n var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n return targets\n .map(function (target) {\n if (parent.contains(target)) {\n return target;\n }\n var correctedTarget = unwrapHost(target);\n if (correctedTarget && parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n return null;\n })\n .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n var markerCounter = markerMap[markerName];\n var hiddenNodes = [];\n var elementsToKeep = new Set();\n var elementsToStop = new Set(targets);\n var keep = function (el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n keep(el.parentNode);\n };\n targets.forEach(keep);\n var deep = function (parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n Array.prototype.forEach.call(parent.children, function (node) {\n if (elementsToKeep.has(node)) {\n deep(node);\n }\n else {\n try {\n var attr = node.getAttribute(controlAttribute);\n var alreadyHidden = attr !== null && attr !== 'false';\n var counterValue = (counterMap.get(node) || 0) + 1;\n var markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenNodes.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledNodes.set(node, true);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, 'true');\n }\n if (!alreadyHidden) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n catch (e) {\n console.error('aria-hidden: cannot operate on ', node, e);\n }\n }\n });\n };\n deep(parentNode);\n elementsToKeep.clear();\n lockCount++;\n return function () {\n hiddenNodes.forEach(function (node) {\n var counterValue = counterMap.get(node) - 1;\n var markerValue = markerCounter.get(node) - 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n if (!counterValue) {\n if (!uncontrolledNodes.has(node)) {\n node.removeAttribute(controlAttribute);\n }\n uncontrolledNodes.delete(node);\n }\n if (!markerValue) {\n node.removeAttribute(markerName);\n }\n });\n lockCount--;\n if (!lockCount) {\n // clear\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledNodes = new WeakMap();\n markerMap = {};\n }\n };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n // we should not hide aria-live elements - https://github.com/theKashey/aria-hidden/issues/10\n // and script elements, as they have no impact on accessibility.\n targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live], script')));\n return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-inert-ed'; }\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-suppressed'; }\n return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\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);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\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;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\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]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\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; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\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);\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); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n });\n // handle refs changes - added or removed\n useIsomorphicLayoutEffect(function () {\n var oldValue = currentValues.get(callbackRef);\n if (oldValue) {\n var prevRefs_1 = new Set(oldValue);\n var nextRefs_1 = new Set(refs);\n var current_1 = callbackRef.current;\n prevRefs_1.forEach(function (ref) {\n if (!nextRefs_1.has(ref)) {\n assignRef(ref, null);\n }\n });\n nextRefs_1.forEach(function (ref) {\n if (!prevRefs_1.has(ref)) {\n assignRef(ref, current_1);\n }\n });\n }\n currentValues.set(callbackRef, refs);\n }, [refs]);\n return callbackRef;\n}\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noRelative = props.noRelative, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noRelative\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noRelative: noRelative, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","var currentNonce;\nexport var setNonce = function (nonce) {\n currentNonce = nonce;\n};\nexport var getNonce = function () {\n if (currentNonce) {\n return currentNonce;\n }\n if (typeof __webpack_nonce__ !== 'undefined') {\n return __webpack_nonce__;\n }\n return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n if (!document)\n return null;\n var tag = document.createElement('style');\n tag.type = 'text/css';\n var nonce = getNonce();\n if (nonce) {\n tag.setAttribute('nonce', nonce);\n }\n return tag;\n}\nfunction injectStyles(tag, css) {\n // @ts-ignore\n if (tag.styleSheet) {\n // @ts-ignore\n tag.styleSheet.cssText = css;\n }\n else {\n tag.appendChild(document.createTextNode(css));\n }\n}\nfunction insertStyleTag(tag) {\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n var counter = 0;\n var stylesheet = null;\n return {\n add: function (style) {\n if (counter == 0) {\n if ((stylesheet = makeStyleTag())) {\n injectStyles(stylesheet, style);\n insertStyleTag(stylesheet);\n }\n }\n counter++;\n },\n remove: function () {\n counter--;\n if (!counter && stylesheet) {\n stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n stylesheet = null;\n }\n },\n };\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n var sheet = stylesheetSingleton();\n return function (styles, isDynamic) {\n React.useEffect(function () {\n sheet.add(styles);\n return function () {\n sheet.remove();\n };\n }, [styles && isDynamic]);\n };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n var useStyle = styleHookSingleton();\n var Sheet = function (_a) {\n var styles = _a.styles, dynamic = _a.dynamic;\n useStyle(styles, dynamic);\n return null;\n };\n return Sheet;\n};\n","export var zeroGap = {\n left: 0,\n top: 0,\n right: 0,\n gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n var cs = window.getComputedStyle(document.body);\n var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n if (gapMode === void 0) { gapMode = 'margin'; }\n if (typeof window === 'undefined') {\n return zeroGap;\n }\n var offsets = getOffset(gapMode);\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n return {\n left: offsets[0],\n top: offsets[1],\n right: offsets[2],\n gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body[\").concat(lockAttribute, \"] {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body[\").concat(lockAttribute, \"] {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\nvar getCurrentUseCounter = function () {\n var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n React.useEffect(function () {\n document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n return function () {\n var newCounter = getCurrentUseCounter() - 1;\n if (newCounter <= 0) {\n document.body.removeAttribute(lockAttribute);\n }\n else {\n document.body.setAttribute(lockAttribute, newCounter.toString());\n }\n };\n }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n useLockAttribute();\n /*\n gap will be measured on every component mount\n however it will be used only by the \"first\" invocation\n due to singleton nature of <Style\n */\n var gap = React.useMemo(function () { return getGapWidth(gapMode); }, [gapMode]);\n return React.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });\n};\n","var passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n return true;\n },\n });\n // @ts-ignore\n window.addEventListener('test', options, options);\n // @ts-ignore\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n","var alwaysContainsScroll = function (node) {\n // textarea will always _contain_ scroll inside self. It only can be hidden\n return node.tagName === 'TEXTAREA';\n};\nvar elementCanBeScrolled = function (node, overflow) {\n if (!(node instanceof Element)) {\n return false;\n }\n var styles = window.getComputedStyle(node);\n return (\n // not-not-scrollable\n styles[overflow] !== 'hidden' &&\n // contains scroll inside self\n !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));\n};\nvar elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };\nvar elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };\nexport var locationCouldBeScrolled = function (axis, node) {\n var ownerDocument = node.ownerDocument;\n var current = node;\n do {\n // Skip over shadow root\n if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n current = current.host;\n }\n var isScrollable = elementCouldBeScrolled(axis, current);\n if (isScrollable) {\n var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n if (scrollHeight > clientHeight) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== ownerDocument.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n // we will \"bubble\" from ShadowDom in case we are, or just to the parent in normal case\n // this is the same logic used in focus-lock\n target = (target.parentNode.host || target.parentNode);\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n // handle epsilon around 0 (non standard zoom levels)\n if (isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(styleSingleton)[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n var shadowParent = null;\n while (node !== null) {\n if (node instanceof ShadowRoot) {\n shadowParent = node.host;\n node = node.host;\n }\n node = node.parentNode;\n }\n return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","\"use client\";\n\n// src/popover.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar POPOVER_NAME = \"Popover\";\nvar [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);\nvar Popover = (props) => {\n const {\n __scopePopover,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = false\n } = props;\n const popperScope = usePopperScope(__scopePopover);\n const triggerRef = React.useRef(null);\n const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: POPOVER_NAME\n });\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n PopoverProvider,\n {\n scope: __scopePopover,\n contentId: useId(),\n triggerRef,\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n hasCustomAnchor,\n onCustomAnchorAdd: React.useCallback(() => setHasCustomAnchor(true), []),\n onCustomAnchorRemove: React.useCallback(() => setHasCustomAnchor(false), []),\n modal,\n children\n }\n ) });\n};\nPopover.displayName = POPOVER_NAME;\nvar ANCHOR_NAME = \"PopoverAnchor\";\nvar PopoverAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...anchorProps } = props;\n const context = usePopoverContext(ANCHOR_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const { onCustomAnchorAdd, onCustomAnchorRemove } = context;\n React.useEffect(() => {\n onCustomAnchorAdd();\n return () => onCustomAnchorRemove();\n }, [onCustomAnchorAdd, onCustomAnchorRemove]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }\n);\nPopoverAnchor.displayName = ANCHOR_NAME;\nvar TRIGGER_NAME = \"PopoverTrigger\";\nvar PopoverTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...triggerProps } = props;\n const context = usePopoverContext(TRIGGER_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n const trigger = /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n return context.hasCustomAnchor ? trigger : /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: trigger });\n }\n);\nPopoverTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"PopoverPortal\";\nvar [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar PopoverPortal = (props) => {\n const { __scopePopover, forceMount, children, container } = props;\n const context = usePopoverContext(PORTAL_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopePopover, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nPopoverPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"PopoverContent\";\nvar PopoverContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopePopover);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(PopoverContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(PopoverContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nPopoverContent.displayName = CONTENT_NAME;\nvar Slot = createSlot(\"PopoverContent.RemoveScroll\");\nvar PopoverContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n const isRightClickOutsideRef = React.useRef(false);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(\n props.onPointerDownOutside,\n (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n isRightClickOutsideRef.current = isRightClick;\n },\n { checkForDefaultPrevented: false }\n ),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nvar PopoverContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar PopoverContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopover,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = usePopoverContext(CONTENT_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n useFocusGuards();\n return /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onInteractOutside,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onDismiss: () => context.onOpenChange(false),\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n \"data-state\": getState(context.open),\n role: \"dialog\",\n id: context.contentId,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-popover-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-popover-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-popover-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-popover-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-popover-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n )\n }\n )\n }\n );\n }\n);\nvar CLOSE_NAME = \"PopoverClose\";\nvar PopoverClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...closeProps } = props;\n const context = usePopoverContext(CLOSE_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nPopoverClose.displayName = CLOSE_NAME;\nvar ARROW_NAME = \"PopoverArrow\";\nvar PopoverArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopePopover);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nPopoverArrow.displayName = ARROW_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar Root2 = Popover;\nvar Anchor2 = PopoverAnchor;\nvar Trigger = PopoverTrigger;\nvar Portal = PopoverPortal;\nvar Content2 = PopoverContent;\nvar Close = PopoverClose;\nvar Arrow2 = PopoverArrow;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n Close,\n Content2 as Content,\n Popover,\n PopoverAnchor,\n PopoverArrow,\n PopoverClose,\n PopoverContent,\n PopoverPortal,\n PopoverTrigger,\n Portal,\n Root2 as Root,\n Trigger,\n createPopoverScope\n};\n//# sourceMappingURL=index.mjs.map\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport const notifySFCC = (basketId?: string) => {\n const event = new CustomEvent(\"reactCartUpdated\", {\n detail: {\n cartUpdated: true,\n basketId,\n\n // any other data SFCC needs\n },\n });\n window.dispatchEvent(event);\n};\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\r\n\r\nimport { cn } from \"../lib/utils\";\r\n\r\nfunction Popover({\r\n ...props\r\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\r\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\r\n}\r\n\r\nfunction PopoverTrigger({\r\n ...props\r\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\r\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\r\n}\r\n\r\nfunction PopoverContent({\r\n className,\r\n align = \"center\",\r\n sideOffset = 4,\r\n ...props\r\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\r\n return (\r\n <PopoverPrimitive.Portal>\r\n <PopoverPrimitive.Content\r\n data-slot=\"popover-content\"\r\n align={align}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </PopoverPrimitive.Portal>\r\n );\r\n}\r\n\r\nfunction PopoverAnchor({\r\n ...props\r\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\r\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\r\n}\r\n\r\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\r\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite)\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop , caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop , caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop , caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.9.0\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","function stringToUint8Array(str: string): Uint8Array {\n return new TextEncoder().encode(str);\n}\n\n// Helper function to convert ArrayBuffer to hex string\nfunction arrayBufferToHex(buffer: ArrayBuffer): string {\n const byteArray = new Uint8Array(buffer);\n const hexCodes = [...byteArray].map((value) => {\n const hexCode = value.toString(16);\n const paddedHexCode = hexCode.padStart(2, \"0\");\n return paddedHexCode;\n });\n return hexCodes.join(\"\");\n}\n\n// SHA256 hash using Web Crypto API\nasync function sha256(data: string): Promise<ArrayBuffer> {\n const encoder = new TextEncoder();\n return await crypto.subtle.digest(\"SHA-256\", encoder.encode(data));\n}\n\n// HMAC-SHA256 using Web Crypto API\nasync function hmacSha256(\n key: ArrayBuffer | Uint8Array,\n data: string\n): Promise<ArrayBuffer> {\n const cryptoKey = await crypto.subtle.importKey(\n \"raw\",\n key,\n { name: \"HMAC\", hash: \"SHA-256\" },\n false,\n [\"sign\"]\n );\n\n const encoder = new TextEncoder();\n return await crypto.subtle.sign(\"HMAC\", cryptoKey, encoder.encode(data));\n}\n\n// Get signing key\nasync function getSignatureKey(\n key: string,\n dateStamp: string,\n regionName: string,\n serviceName: string\n): Promise<ArrayBuffer> {\n const kDate = await hmacSha256(stringToUint8Array(\"AWS4\" + key), dateStamp);\n const kRegion = await hmacSha256(kDate, regionName);\n const kService = await hmacSha256(kRegion, serviceName);\n const kSigning = await hmacSha256(kService, \"aws4_request\");\n return kSigning;\n}\n\nexport async function createSignedHeaders(\n url: string,\n method: string,\n payload: string,\n accessKeyId: string,\n secretAccessKey: string,\n region: string,\n service: string\n): Promise<Record<string, string>> {\n const urlObj = new URL(url);\n const host = urlObj.hostname;\n const pathname = urlObj.pathname;\n const search = urlObj.search;\n\n const now = new Date();\n const amzDate = now.toISOString().replace(/[:\\-]|\\.\\d{3}/g, \"\");\n const dateStamp = amzDate.substring(0, 8);\n const payloadHash = arrayBufferToHex(await sha256(payload));\n const contentLength = new TextEncoder().encode(payload).length.toString();\n\n const canonicalHeaders =\n `content-length:${contentLength}\\n` +\n `content-type:application/json\\n` +\n `host:${host}\\n` +\n `x-amz-content-sha256:${payloadHash}\\n` +\n `x-amz-date:${amzDate}\\n`;\n\n const signedHeaders =\n \"content-length;content-type;host;x-amz-content-sha256;x-amz-date\";\n\n const canonicalRequest = [\n method,\n pathname,\n search.slice(1),\n canonicalHeaders,\n signedHeaders,\n payloadHash,\n ].join(\"\\n\");\n\n const algorithm = \"AWS4-HMAC-SHA256\";\n const credentialScope = `${dateStamp}/${region}/${service}/aws4_request`;\n const stringToSign = [\n algorithm,\n amzDate,\n credentialScope,\n arrayBufferToHex(await sha256(canonicalRequest)),\n ].join(\"\\n\");\n\n const signingKey = await getSignatureKey(\n secretAccessKey,\n dateStamp,\n region,\n service\n );\n\n const signature = arrayBufferToHex(\n await hmacSha256(signingKey, stringToSign)\n );\n\n const authorizationHeader = `${algorithm} Credential=${accessKeyId}/${credentialScope}, SignedHeaders=${signedHeaders}, Signature=${signature}`;\n\n return {\n \"Content-Type\": \"application/json\",\n \"Content-Length\": contentLength,\n \"X-Amz-Content-Sha256\": payloadHash,\n \"X-Amz-Date\": amzDate,\n Authorization: authorizationHeader,\n };\n}\n\nexport const apiConfig = () => {\n const aiConversationUrl = `https://mdv3qwfi2j.execute-api.us-east-1.amazonaws.com/dev/api/bedrock/invoke/stream`;\n const xAPIKey = \"BJBtjpPkqGatuoa3qJqdR8aHXSsHkgvGaootbubi\";\n // const serverUrl = \"https://tanya-sfcc-server.vercel.app/\";\n const serverUrl = import.meta.env.VITE_SERVER_BASE_URL;\n const basePath = import.meta.env.VITE_SCAPI_ENVIRONMENT ? \"sc-api\" : \"api\";\n\n return { aiConversationUrl, xAPIKey, serverUrl, basePath };\n};\n","import axios from \"axios\";\r\nimport { getHost, getSiteId } from \".\";\r\n\r\n// email:password:client need to be pass in encrypt form in the auth of fetchTokenBmGrant\r\n\r\n// email:password:client is different from user to user\r\nexport const fetchTokenBmGrant = async () => {\r\n const URL = `${import.meta.env.VITE_SERVER_BASE_URL}`;\r\n try {\r\n const response = await axios.post(\r\n `${URL}api/auth/token-bm-grant?baseUrl=${getHost()}&siteId=${getSiteId()}`\r\n );\r\n if (response.status === 200 && response.data.access_token) {\r\n return response.data.access_token;\r\n } else {\r\n console.error(\"Failed to fetch token:\", response.data);\r\n return null;\r\n }\r\n } catch (error) {\r\n if (axios.isAxiosError(error)) {\r\n console.error(\"Error fetching token:\", error.response || error.message);\r\n } else {\r\n console.error(\"Unexpected error:\", error);\r\n }\r\n return null;\r\n }\r\n};\r\n","import axios from \"axios\";\r\nimport { clientId, getHost, getSiteId, organisationId, shortCode } from \".\";\r\n\r\ninterface Customer {\r\n access_token: string;\r\n customerId: string;\r\n}\r\n\r\n// function getCookie(name: string): string | null {\r\n// const value = `; ${document.cookie}`;\r\n// console.log(\"parts\", value,value.includes(\"dwsid\"));\r\n// const parts = value.split(`; ${name}=`);\r\n// if (parts.length === 2) return parts.pop()?.split(\";\").shift() || null;\r\n// return null;\r\n// }\r\n\r\nexport const fetchExistingRegisterCustomerToken = async ({\r\n access_token,\r\n customerId,\r\n}: Customer) => {\r\n const URL = `${import.meta.env.VITE_SERVER_BASE_URL}`;\r\n try {\r\n const response = await axios.post(\r\n `${URL}api/auth/token-existing-register-customer/${customerId}?baseUrl=${getHost()}&siteId=${getSiteId()}&pubCfg=${clientId()}&envRef=${shortCode()}&orgRef=${organisationId()}`,\r\n {},\r\n {\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n Authorization: `Bearer ${access_token}`,\r\n },\r\n }\r\n );\r\n\r\n if (response.status === 200 && response.data) {\r\n // console.log(\"customer token res fe\", response.data)\r\n return response.data;\r\n }\r\n return null;\r\n } catch (error) {\r\n if (axios.isAxiosError(error)) {\r\n console.error(\"Error creating basket:\", error.response || error.message);\r\n } else {\r\n console.error(\"Unexpected error:\", error);\r\n }\r\n return null;\r\n }\r\n};\r\n\r\nexport const fetchExistingGuestCustomerToken = async (\r\n access_token: string,\r\n) => {\r\n const URL = `${import.meta.env.VITE_SERVER_BASE_URL}`;\r\n try {\r\n const dwsid = JSON.parse(sessionStorage.getItem(\"customerData\")|| \"{}\").dwsid // fetch cookie\r\n\r\n const response = await axios.post(\r\n `${URL}api/auth/token-existing-guest-customer?dwsid=${dwsid}&baseUrl=${getHost()}&siteId=${getSiteId()}&pubCfg=${clientId()}&envRef=${shortCode()}&orgRef=${organisationId()}`,\r\n {},\r\n {\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n Authorization: `Bearer ${access_token}`,\r\n },\r\n }\r\n );\r\n\r\n if (response.status === 200 && response.data) {\r\n return response.data;\r\n }\r\n return null;\r\n } catch (error) {\r\n if (axios.isAxiosError(error)) {\r\n console.error(\"Error creating basket:\", error.response || error.message);\r\n } else {\r\n console.error(\"Unexpected error:\", error);\r\n }\r\n return null;\r\n }\r\n};\r\n","import axios from \"axios\";\nimport { apiConfig } from \"../../config/api\";\nimport { clientId, getSiteId, organisationId, shortCode } from \"../../components/utils\";\n\nexport async function authData() {\n if (!import.meta.env.VITE_SCAPI_ENVIRONMENT) {\n return \"\";\n }\n const expires_in = localStorage.getItem(\"expires_in\");\n const access_token = localStorage.getItem(\"access_token\");\n const isGuest = JSON.parse(\n sessionStorage.getItem(\"customerData\") || \"{}\"\n ).isGuest;\n if (\n expires_in &&\n access_token &&\n new Date().getTime() < parseInt(expires_in) &&\n isGuest === JSON.parse(localStorage.getItem(\"isGuest\") || \"false\")\n ) {\n console.log(\"access token found in local storage\");\n return { access_token, expires_in };\n }\n const { serverUrl } = apiConfig();\n const dwsid = JSON.parse(\n sessionStorage.getItem(\"customerData\") || \"{}\"\n ).dwsid;\n\n const customerMail = JSON.parse(\n sessionStorage.getItem(\"customerData\") || \"{}\"\n ).usrRef;\n\n try {\n const endpoint = isGuest ? \"unregister-auth\" : \"register-auth\";\n const res = await axios.get(\n `${serverUrl}sc-api/${endpoint}?dwsid=${dwsid}&email=${customerMail}&pubCfg=${clientId()}&envRef=${shortCode()}&orgRef=${organisationId()}&siteId=${getSiteId()}`\n );\n localStorage.setItem(\"access_token\", res.data.access_token);\n localStorage.setItem(\n \"expires_in\",\n String(new Date().getTime() + res.data.expires_in * 1000)\n );\n localStorage.setItem(\"isGuest\", isGuest.toString());\n console.log(res.data);\n return res.data;\n } catch (err) {\n console.log(err);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport axios from \"axios\";\nimport { apiConfig } from \"../../config/api\";\nimport { fetchTokenBmGrant } from \"./fetchTokenBmGrant\";\nimport { fetchExistingGuestCustomerToken } from \"./fetchExistingRegisterCustomerToken\";\nimport { authData } from \"../../sfcc-apis/session\";\n\nexport const getHost = () => {\n const host = sessionStorage.getItem(\"Host\");\n return host;\n};\n\nexport const getSiteId = () => {\n const siteId = sessionStorage.getItem(\"SiteId\");\n return siteId;\n};\n\nexport const clientId = () => {\n const clientId = sessionStorage.getItem(\"pubCfg\");\n return clientId;\n};\n\nexport const shortCode = () => {\n const shortCode = sessionStorage.getItem(\"envRef\");\n return shortCode;\n};\n\nexport const organisationId = () => {\n const orgRef = sessionStorage.getItem(\"orgRef\");\n return orgRef;\n};\n\nexport const getSearchResults = async (query: string, token: string) => {\n const { serverUrl, basePath } = apiConfig();\n\n try {\n const host = getHost();\n const response = await axios.get(\n `${serverUrl}${basePath}/search-sfcc?baseUrl=${host}&query=${query}&siteId=${getSiteId()}&pubCfg=${clientId()}&envRef=${shortCode()}&orgRef=${organisationId()}`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${token}`,\n },\n }\n );\n\n return response.data.hits;\n } catch (error) {\n console.error(\"Error fetching search results:\", error);\n throw error;\n }\n};\n\nexport const getProductById = async (id: number | string) => {\n if (!id) throw new Error(\"Product ID is required\");\n const { serverUrl, basePath } = apiConfig();\n const host = getHost();\n console.log(\"calling access\");\n const { access_token } = await authData();\n console.log(access_token);\n const response = await axios.get(\n `${serverUrl}${basePath}/product-sfcc/${id}?baseUrl=${host}&siteId=${getSiteId()}&pubCfg=${clientId()}&envRef=${shortCode()}&orgRef=${organisationId()}`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${access_token}`,\n },\n }\n );\n\n return response.data;\n};\n\nexport const getInterestApi = async (customerId: any) => {\n if (!customerId) throw new Error(\"customerId is required\");\n const access_token = await fetchTokenBmGrant();\n\n const { customer_token } = await fetchExistingGuestCustomerToken(\n access_token\n );\n const { serverUrl, basePath } = apiConfig();\n const data = await authData();\n const token = data.access_token;\n\n const response = await axios.get(\n `${serverUrl}${basePath}/get-interest?baseUrl=${getHost()}&customerId=${customerId}&siteId=${getSiteId()}&pubCfg=${clientId()}&envRef=${shortCode()}&orgRef=${organisationId()}`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: import.meta.env.VITE_SCAPI_ENVIRONMENT\n ? `Bearer ${token}`\n : `${customer_token}`,\n },\n }\n );\n\n return response.data;\n};\n","export default {}",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var X32WordArray = C_lib.WordArray;\n\n\t /**\n\t * x64 namespace.\n\t */\n\t var C_x64 = C.x64 = {};\n\n\t /**\n\t * A 64-bit word.\n\t */\n\t var X64Word = C_x64.Word = Base.extend({\n\t /**\n\t * Initializes a newly created 64-bit word.\n\t *\n\t * @param {number} high The high 32 bits.\n\t * @param {number} low The low 32 bits.\n\t *\n\t * @example\n\t *\n\t * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t */\n\t init: function (high, low) {\n\t this.high = high;\n\t this.low = low;\n\t }\n\n\t /**\n\t * Bitwise NOTs this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after negating.\n\t *\n\t * @example\n\t *\n\t * var negated = x64Word.not();\n\t */\n\t // not: function () {\n\t // var high = ~this.high;\n\t // var low = ~this.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ANDs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to AND with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ANDing.\n\t *\n\t * @example\n\t *\n\t * var anded = x64Word.and(anotherX64Word);\n\t */\n\t // and: function (word) {\n\t // var high = this.high & word.high;\n\t // var low = this.low & word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to OR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ORing.\n\t *\n\t * @example\n\t *\n\t * var ored = x64Word.or(anotherX64Word);\n\t */\n\t // or: function (word) {\n\t // var high = this.high | word.high;\n\t // var low = this.low | word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise XORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to XOR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after XORing.\n\t *\n\t * @example\n\t *\n\t * var xored = x64Word.xor(anotherX64Word);\n\t */\n\t // xor: function (word) {\n\t // var high = this.high ^ word.high;\n\t // var low = this.low ^ word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftL(25);\n\t */\n\t // shiftL: function (n) {\n\t // if (n < 32) {\n\t // var high = (this.high << n) | (this.low >>> (32 - n));\n\t // var low = this.low << n;\n\t // } else {\n\t // var high = this.low << (n - 32);\n\t // var low = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftR(7);\n\t */\n\t // shiftR: function (n) {\n\t // if (n < 32) {\n\t // var low = (this.low >>> n) | (this.high << (32 - n));\n\t // var high = this.high >>> n;\n\t // } else {\n\t // var low = this.high >>> (n - 32);\n\t // var high = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotL(25);\n\t */\n\t // rotL: function (n) {\n\t // return this.shiftL(n).or(this.shiftR(64 - n));\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotR(7);\n\t */\n\t // rotR: function (n) {\n\t // return this.shiftR(n).or(this.shiftL(64 - n));\n\t // },\n\n\t /**\n\t * Adds this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to add with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after adding.\n\t *\n\t * @example\n\t *\n\t * var added = x64Word.add(anotherX64Word);\n\t */\n\t // add: function (word) {\n\t // var low = (this.low + word.low) | 0;\n\t // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t // var high = (this.high + word.high + carry) | 0;\n\n\t // return X64Word.create(high, low);\n\t // }\n\t });\n\n\t /**\n\t * An array of 64-bit words.\n\t *\n\t * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var X64WordArray = C_x64.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create();\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ]);\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ], 10);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t },\n\n\t /**\n\t * Converts this 64-bit word array to a 32-bit word array.\n\t *\n\t * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t *\n\t * @example\n\t *\n\t * var x32WordArray = x64WordArray.toX32();\n\t */\n\t toX32: function () {\n\t // Shortcuts\n\t var x64Words = this.words;\n\t var x64WordsLength = x64Words.length;\n\n\t // Convert\n\t var x32Words = [];\n\t for (var i = 0; i < x64WordsLength; i++) {\n\t var x64Word = x64Words[i];\n\t x32Words.push(x64Word.high);\n\t x32Words.push(x64Word.low);\n\t }\n\n\t return X32WordArray.create(x32Words, this.sigBytes);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {X64WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = x64WordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\n\t // Clone \"words\" array\n\t var words = clone.words = this.words.slice(0);\n\n\t // Clone each X64Word object\n\t var wordsLength = words.length;\n\t for (var i = 0; i < wordsLength; i++) {\n\t words[i] = words[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\t}());\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * UTF-16 BE encoding strategy.\n\t */\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t /**\n\t * Converts a word array to a UTF-16 BE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 BE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 BE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 BE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t /**\n\t * UTF-16 LE encoding strategy.\n\t */\n\t C_enc.Utf16LE = {\n\t /**\n\t * Converts a word array to a UTF-16 LE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 LE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 LE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 LE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t function swapEndian(word) {\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64url encoding strategy.\n\t */\n\t var Base64url = C_enc.Base64url = {\n\t /**\n\t * Converts a word array to a Base64url string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {string} The Base64url string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t */\n\t stringify: function (wordArray, urlSafe) {\n\t if (urlSafe === undefined) {\n\t urlSafe = true\n\t }\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = urlSafe ? this._safe_map : this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64url string to a word array.\n\t *\n\t * @param {string} base64Str The Base64url string.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t */\n\t parse: function (base64Str, urlSafe) {\n\t if (urlSafe === undefined) {\n\t urlSafe = true\n\t }\n\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = urlSafe ? this._safe_map : this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64url;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\n\t /**\n\t * SHA-224 hash algorithm.\n\t */\n\t var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA256._doFinalize.call(this);\n\n\t hash.sigBytes -= 4;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA224('message');\n\t * var hash = CryptoJS.SHA224(wordArray);\n\t */\n\t C.SHA224 = SHA256._createHelper(SHA224);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA224(message, key);\n\t */\n\t C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\n\t function X64Word_create() {\n\t return X64Word.create.apply(X64Word, arguments);\n\t }\n\n\t // Constants\n\t var K = [\n\t X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t ];\n\n\t // Reusable objects\n\t var W = [];\n\t (function () {\n\t for (var i = 0; i < 80; i++) {\n\t W[i] = X64Word_create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-512 hash algorithm.\n\t */\n\t var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var H0 = H[0];\n\t var H1 = H[1];\n\t var H2 = H[2];\n\t var H3 = H[3];\n\t var H4 = H[4];\n\t var H5 = H[5];\n\t var H6 = H[6];\n\t var H7 = H[7];\n\n\t var H0h = H0.high;\n\t var H0l = H0.low;\n\t var H1h = H1.high;\n\t var H1l = H1.low;\n\t var H2h = H2.high;\n\t var H2l = H2.low;\n\t var H3h = H3.high;\n\t var H3l = H3.low;\n\t var H4h = H4.high;\n\t var H4l = H4.low;\n\t var H5h = H5.high;\n\t var H5l = H5.low;\n\t var H6h = H6.high;\n\t var H6l = H6.low;\n\t var H7h = H7.high;\n\t var H7l = H7.low;\n\n\t // Working variables\n\t var ah = H0h;\n\t var al = H0l;\n\t var bh = H1h;\n\t var bl = H1l;\n\t var ch = H2h;\n\t var cl = H2l;\n\t var dh = H3h;\n\t var dl = H3l;\n\t var eh = H4h;\n\t var el = H4l;\n\t var fh = H5h;\n\t var fl = H5l;\n\t var gh = H6h;\n\t var gl = H6l;\n\t var hh = H7h;\n\t var hl = H7l;\n\n\t // Rounds\n\t for (var i = 0; i < 80; i++) {\n\t var Wil;\n\t var Wih;\n\n\t // Shortcut\n\t var Wi = W[i];\n\n\t // Extend message\n\t if (i < 16) {\n\t Wih = Wi.high = M[offset + i * 2] | 0;\n\t Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n\t } else {\n\t // Gamma0\n\t var gamma0x = W[i - 15];\n\t var gamma0xh = gamma0x.high;\n\t var gamma0xl = gamma0x.low;\n\t var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t // Gamma1\n\t var gamma1x = W[i - 2];\n\t var gamma1xh = gamma1x.high;\n\t var gamma1xl = gamma1x.low;\n\t var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t var Wi7 = W[i - 7];\n\t var Wi7h = Wi7.high;\n\t var Wi7l = Wi7.low;\n\n\t var Wi16 = W[i - 16];\n\t var Wi16h = Wi16.high;\n\t var Wi16l = Wi16.low;\n\n\t Wil = gamma0l + Wi7l;\n\t Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t Wil = Wil + gamma1l;\n\t Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t Wil = Wil + Wi16l;\n\t Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t Wi.high = Wih;\n\t Wi.low = Wil;\n\t }\n\n\t var chh = (eh & fh) ^ (~eh & gh);\n\t var chl = (el & fl) ^ (~el & gl);\n\t var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t // t1 = h + sigma1 + ch + K[i] + W[i]\n\t var Ki = K[i];\n\t var Kih = Ki.high;\n\t var Kil = Ki.low;\n\n\t var t1l = hl + sigma1l;\n\t var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t var t1l = t1l + chl;\n\t var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t var t1l = t1l + Kil;\n\t var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t var t1l = t1l + Wil;\n\t var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t // t2 = sigma0 + maj\n\t var t2l = sigma0l + majl;\n\t var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t // Update working variables\n\t hh = gh;\n\t hl = gl;\n\t gh = fh;\n\t gl = fl;\n\t fh = eh;\n\t fl = el;\n\t el = (dl + t1l) | 0;\n\t eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t dh = ch;\n\t dl = cl;\n\t ch = bh;\n\t cl = bl;\n\t bh = ah;\n\t bl = al;\n\t al = (t1l + t2l) | 0;\n\t ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H0l = H0.low = (H0l + al);\n\t H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t H1l = H1.low = (H1l + bl);\n\t H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t H2l = H2.low = (H2l + cl);\n\t H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t H3l = H3.low = (H3l + dl);\n\t H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t H4l = H4.low = (H4l + el);\n\t H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t H5l = H5.low = (H5l + fl);\n\t H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t H6l = H6.low = (H6l + gl);\n\t H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t H7l = H7.low = (H7l + hl);\n\t H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Convert hash to 32-bit word array before returning\n\t var hash = this._hash.toX32();\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t },\n\n\t blockSize: 1024/32\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA512('message');\n\t * var hash = CryptoJS.SHA512(wordArray);\n\t */\n\t C.SHA512 = Hasher._createHelper(SHA512);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA512(message, key);\n\t */\n\t C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\t var SHA512 = C_algo.SHA512;\n\n\t /**\n\t * SHA-384 hash algorithm.\n\t */\n\t var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA512._doFinalize.call(this);\n\n\t hash.sigBytes -= 16;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA384('message');\n\t * var hash = CryptoJS.SHA384(wordArray);\n\t */\n\t C.SHA384 = SHA512._createHelper(SHA384);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA384(message, key);\n\t */\n\t C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var C_algo = C.algo;\n\n\t // Constants tables\n\t var RHO_OFFSETS = [];\n\t var PI_INDEXES = [];\n\t var ROUND_CONSTANTS = [];\n\n\t // Compute Constants\n\t (function () {\n\t // Compute rho offset constants\n\t var x = 1, y = 0;\n\t for (var t = 0; t < 24; t++) {\n\t RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t var newX = y % 5;\n\t var newY = (2 * x + 3 * y) % 5;\n\t x = newX;\n\t y = newY;\n\t }\n\n\t // Compute pi index constants\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t }\n\t }\n\n\t // Compute round constants\n\t var LFSR = 0x01;\n\t for (var i = 0; i < 24; i++) {\n\t var roundConstantMsw = 0;\n\t var roundConstantLsw = 0;\n\n\t for (var j = 0; j < 7; j++) {\n\t if (LFSR & 0x01) {\n\t var bitPosition = (1 << j) - 1;\n\t if (bitPosition < 32) {\n\t roundConstantLsw ^= 1 << bitPosition;\n\t } else /* if (bitPosition >= 32) */ {\n\t roundConstantMsw ^= 1 << (bitPosition - 32);\n\t }\n\t }\n\n\t // Compute next LFSR\n\t if (LFSR & 0x80) {\n\t // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t LFSR = (LFSR << 1) ^ 0x71;\n\t } else {\n\t LFSR <<= 1;\n\t }\n\t }\n\n\t ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t }\n\t }());\n\n\t // Reusable objects for temporary values\n\t var T = [];\n\t (function () {\n\t for (var i = 0; i < 25; i++) {\n\t T[i] = X64Word.create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-3 hash algorithm.\n\t */\n\t var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} outputLength\n\t * The desired number of bits in the output hash.\n\t * Only values permitted are: 224, 256, 384, 512.\n\t * Default: 512\n\t */\n\t cfg: Hasher.cfg.extend({\n\t outputLength: 512\n\t }),\n\n\t _doReset: function () {\n\t var state = this._state = []\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = new X64Word.init();\n\t }\n\n\t this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var state = this._state;\n\t var nBlockSizeLanes = this.blockSize / 2;\n\n\t // Absorb\n\t for (var i = 0; i < nBlockSizeLanes; i++) {\n\t // Shortcuts\n\t var M2i = M[offset + 2 * i];\n\t var M2i1 = M[offset + 2 * i + 1];\n\n\t // Swap endian\n\t M2i = (\n\t (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\n\t (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\n\t );\n\t M2i1 = (\n\t (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Absorb message into state\n\t var lane = state[i];\n\t lane.high ^= M2i1;\n\t lane.low ^= M2i;\n\t }\n\n\t // Rounds\n\t for (var round = 0; round < 24; round++) {\n\t // Theta\n\t for (var x = 0; x < 5; x++) {\n\t // Mix column lanes\n\t var tMsw = 0, tLsw = 0;\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t tMsw ^= lane.high;\n\t tLsw ^= lane.low;\n\t }\n\n\t // Temporary values\n\t var Tx = T[x];\n\t Tx.high = tMsw;\n\t Tx.low = tLsw;\n\t }\n\t for (var x = 0; x < 5; x++) {\n\t // Shortcuts\n\t var Tx4 = T[(x + 4) % 5];\n\t var Tx1 = T[(x + 1) % 5];\n\t var Tx1Msw = Tx1.high;\n\t var Tx1Lsw = Tx1.low;\n\n\t // Mix surrounding columns\n\t var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t lane.high ^= tMsw;\n\t lane.low ^= tLsw;\n\t }\n\t }\n\n\t // Rho Pi\n\t for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t var tMsw;\n\t var tLsw;\n\n\t // Shortcuts\n\t var lane = state[laneIndex];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\t var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t // Rotate lanes\n\t if (rhoOffset < 32) {\n\t tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t } else /* if (rhoOffset >= 32) */ {\n\t tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t }\n\n\t // Transpose lanes\n\t var TPiLane = T[PI_INDEXES[laneIndex]];\n\t TPiLane.high = tMsw;\n\t TPiLane.low = tLsw;\n\t }\n\n\t // Rho pi at x = y = 0\n\t var T0 = T[0];\n\t var state0 = state[0];\n\t T0.high = state0.high;\n\t T0.low = state0.low;\n\n\t // Chi\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t // Shortcuts\n\t var laneIndex = x + 5 * y;\n\t var lane = state[laneIndex];\n\t var TLane = T[laneIndex];\n\t var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t // Mix rows\n\t lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\n\t }\n\t }\n\n\t // Iota\n\t var lane = state[0];\n\t var roundConstant = ROUND_CONSTANTS[round];\n\t lane.high ^= roundConstant.high;\n\t lane.low ^= roundConstant.low;\n\t }\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\t var blockSizeBits = this.blockSize * 32;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var state = this._state;\n\t var outputLengthBytes = this.cfg.outputLength / 8;\n\t var outputLengthLanes = outputLengthBytes / 8;\n\n\t // Squeeze\n\t var hashWords = [];\n\t for (var i = 0; i < outputLengthLanes; i++) {\n\t // Shortcuts\n\t var lane = state[i];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\n\t // Swap endian\n\t laneMsw = (\n\t (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\n\t );\n\t laneLsw = (\n\t (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Squeeze state to retrieve hash\n\t hashWords.push(laneLsw);\n\t hashWords.push(laneMsw);\n\t }\n\n\t // Return final computed hash\n\t return new WordArray.init(hashWords, outputLengthBytes);\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\n\t var state = clone._state = this._state.slice(0);\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = state[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA3('message');\n\t * var hash = CryptoJS.SHA3(wordArray);\n\t */\n\t C.SHA3 = Hasher._createHelper(SHA3);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA3(message, key);\n\t */\n\t C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var _zl = WordArray.create([\n\t 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n\t var _zr = WordArray.create([\n\t 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n\t var _sl = WordArray.create([\n\t 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\n\t var _sr = WordArray.create([\n\t 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\n\n\t var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t /**\n\t * RIPEMD160 hash algorithm.\n\t */\n\t var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t // Swap\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\t // Shortcut\n\t var H = this._hash.words;\n\t var hl = _hl.words;\n\t var hr = _hr.words;\n\t var zl = _zl.words;\n\t var zr = _zr.words;\n\t var sl = _sl.words;\n\t var sr = _sr.words;\n\n\t // Working variables\n\t var al, bl, cl, dl, el;\n\t var ar, br, cr, dr, er;\n\n\t ar = al = H[0];\n\t br = bl = H[1];\n\t cr = cl = H[2];\n\t dr = dl = H[3];\n\t er = el = H[4];\n\t // Computation\n\t var t;\n\t for (var i = 0; i < 80; i += 1) {\n\t t = (al + M[offset+zl[i]])|0;\n\t if (i<16){\n\t\t t += f1(bl,cl,dl) + hl[0];\n\t } else if (i<32) {\n\t\t t += f2(bl,cl,dl) + hl[1];\n\t } else if (i<48) {\n\t\t t += f3(bl,cl,dl) + hl[2];\n\t } else if (i<64) {\n\t\t t += f4(bl,cl,dl) + hl[3];\n\t } else {// if (i<80) {\n\t\t t += f5(bl,cl,dl) + hl[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sl[i]);\n\t t = (t+el)|0;\n\t al = el;\n\t el = dl;\n\t dl = rotl(cl, 10);\n\t cl = bl;\n\t bl = t;\n\n\t t = (ar + M[offset+zr[i]])|0;\n\t if (i<16){\n\t\t t += f5(br,cr,dr) + hr[0];\n\t } else if (i<32) {\n\t\t t += f4(br,cr,dr) + hr[1];\n\t } else if (i<48) {\n\t\t t += f3(br,cr,dr) + hr[2];\n\t } else if (i<64) {\n\t\t t += f2(br,cr,dr) + hr[3];\n\t } else {// if (i<80) {\n\t\t t += f1(br,cr,dr) + hr[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sr[i]) ;\n\t t = (t+er)|0;\n\t ar = er;\n\t er = dr;\n\t dr = rotl(cr, 10);\n\t cr = br;\n\t br = t;\n\t }\n\t // Intermediate hash value\n\t t = (H[1] + cl + dr)|0;\n\t H[1] = (H[2] + dl + er)|0;\n\t H[2] = (H[3] + el + ar)|0;\n\t H[3] = (H[4] + al + br)|0;\n\t H[4] = (H[0] + bl + cr)|0;\n\t H[0] = t;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n\t );\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 5; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t // Swap\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\n\t function f1(x, y, z) {\n\t return ((x) ^ (y) ^ (z));\n\n\t }\n\n\t function f2(x, y, z) {\n\t return (((x)&(y)) | ((~x)&(z)));\n\t }\n\n\t function f3(x, y, z) {\n\t return (((x) | (~(y))) ^ (z));\n\t }\n\n\t function f4(x, y, z) {\n\t return (((x) & (z)) | ((y)&(~(z))));\n\t }\n\n\t function f5(x, y, z) {\n\t return ((x) ^ ((y) |(~(z))));\n\n\t }\n\n\t function rotl(x,n) {\n\t return (x<<n) | (x>>>(32-n));\n\t }\n\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.RIPEMD160('message');\n\t * var hash = CryptoJS.RIPEMD160(wordArray);\n\t */\n\t C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t */\n\t C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA256\n\t * @property {number} iterations The number of iterations to perform. Default: 250000\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA256,\n\t iterations: 250000\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t var block;\n\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t var block;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t var modeCreator;\n\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t var finalProcessedBlocks;\n\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t var wordArray;\n\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t var salt;\n\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt, hasher) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t if (!hasher) {\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\t } else {\n\t var key = EvpKDF.create({ keySize: keySize + ivSize, hasher: hasher }).compute(password, salt);\n\t }\n\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, cfg.salt, cfg.hasher);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt, cfg.hasher);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t CFB.Encryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t CFB.Decryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t var keystream;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t keystream = this._prevBlock;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\n\t return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = CTR.Encryptor = CTR.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t var keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Increment counter\n\t counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTR.Decryptor = Encryptor;\n\n\t return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTRGladman.Decryptor = Encryptor;\n\n\t return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = OFB.Encryptor = OFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var keystream = this._keystream;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = this._keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t OFB.Decryptor = Encryptor;\n\n\t return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t ECB.Encryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.encryptBlock(words, offset);\n\t }\n\t });\n\n\t ECB.Decryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.decryptBlock(words, offset);\n\t }\n\t });\n\n\t return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t pad: function (data, blockSize) {\n\t // Shortcuts\n\t var dataSigBytes = data.sigBytes;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t // Compute last byte position\n\t var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t // Pad\n\t data.clamp();\n\t data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t data.sigBytes += nPaddingBytes;\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Pad\n\t data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t pad: function (data, blockSize) {\n\t // Add 0x80 byte\n\t data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t // Zero pad the rest\n\t CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t },\n\n\t unpad: function (data) {\n\t // Remove zero padding\n\t CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t // Remove one more byte -- the 0x80 byte\n\t data.sigBytes--;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Pad\n\t data.clamp();\n\t data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t },\n\n\t unpad: function (data) {\n\t // Shortcut\n\t var dataWords = data.words;\n\n\t // Unpad\n\t var i = data.sigBytes - 1;\n\t for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t data.sigBytes = i + 1;\n\t break;\n\t }\n\t }\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t pad: function () {\n\t },\n\n\t unpad: function () {\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var CipherParams = C_lib.CipherParams;\n\t var C_enc = C.enc;\n\t var Hex = C_enc.Hex;\n\t var C_format = C.format;\n\n\t var HexFormatter = C_format.Hex = {\n\t /**\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The hexadecimally encoded string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t return cipherParams.ciphertext.toString(Hex);\n\t },\n\n\t /**\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t *\n\t * @param {string} input The hexadecimally encoded string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t */\n\t parse: function (input) {\n\t var ciphertext = Hex.parse(input);\n\t return CipherParams.create({ ciphertext: ciphertext });\n\t }\n\t };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t var t;\n\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t }\n\n\t // Extend the key according to the keying options defined in 3DES standard\n\t var key1 = keyWords.slice(0, 2);\n\t var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm.\n\t *\n\t * This is a legacy version that neglected to convert the key to little-endian.\n\t * This error doesn't affect the cipher's security,\n\t * but it does affect its compatibility with other implementations.\n\t */\n\t var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t const N = 16;\n\n\t //Origin pbox and sbox, derived from PI\n\t const ORIG_P = [\n\t 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344,\n\t 0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89,\n\t 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C,\n\t 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917,\n\t 0x9216D5D9, 0x8979FB1B\n\t ];\n\n\t const ORIG_S = [\n\t [ 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7,\n\t 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,\n\t 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,\n\t 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,\n\t 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,\n\t 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,\n\t 0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,\n\t 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,\n\t 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,\n\t 0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440,\n\t 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE,\n\t 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A,\n\t 0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E,\n\t 0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677,\n\t 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193,\n\t 0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032,\n\t 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88,\n\t 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,\n\t 0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E,\n\t 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0,\n\t 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3,\n\t 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98,\n\t 0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88,\n\t 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE,\n\t 0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6,\n\t 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D,\n\t 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B,\n\t 0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7,\n\t 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA,\n\t 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463,\n\t 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F,\n\t 0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09,\n\t 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3,\n\t 0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB,\n\t 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279,\n\t 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,\n\t 0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB,\n\t 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82,\n\t 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB,\n\t 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573,\n\t 0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0,\n\t 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B,\n\t 0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790,\n\t 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8,\n\t 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4,\n\t 0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0,\n\t 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7,\n\t 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C,\n\t 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD,\n\t 0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1,\n\t 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299,\n\t 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9,\n\t 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477,\n\t 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF,\n\t 0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49,\n\t 0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF,\n\t 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA,\n\t 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5,\n\t 0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41,\n\t 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915,\n\t 0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400,\n\t 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915,\n\t 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,\n\t 0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A ],\n\t [ 0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623,\n\t 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266,\n\t 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1,\n\t 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E,\n\t 0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6,\n\t 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1,\n\t 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E,\n\t 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1,\n\t 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737,\n\t 0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8,\n\t 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF,\n\t 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD,\n\t 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701,\n\t 0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7,\n\t 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41,\n\t 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331,\n\t 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF,\n\t 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,\n\t 0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E,\n\t 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87,\n\t 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C,\n\t 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2,\n\t 0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16,\n\t 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD,\n\t 0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B,\n\t 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509,\n\t 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,\n\t 0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3,\n\t 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F,\n\t 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A,\n\t 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4,\n\t 0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960,\n\t 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66,\n\t 0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28,\n\t 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802,\n\t 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84,\n\t 0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510,\n\t 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF,\n\t 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14,\n\t 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E,\n\t 0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50,\n\t 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7,\n\t 0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8,\n\t 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281,\n\t 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,\n\t 0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696,\n\t 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128,\n\t 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73,\n\t 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0,\n\t 0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0,\n\t 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105,\n\t 0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250,\n\t 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3,\n\t 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285,\n\t 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00,\n\t 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061,\n\t 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB,\n\t 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E,\n\t 0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735,\n\t 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC,\n\t 0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9,\n\t 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340,\n\t 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20,\n\t 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7 ],\n\t [ 0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934,\n\t 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068,\n\t 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF,\n\t 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840,\n\t 0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45,\n\t 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504,\n\t 0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A,\n\t 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB,\n\t 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,\n\t 0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6,\n\t 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42,\n\t 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B,\n\t 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2,\n\t 0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB,\n\t 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527,\n\t 0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B,\n\t 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33,\n\t 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,\n\t 0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3,\n\t 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC,\n\t 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17,\n\t 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564,\n\t 0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B,\n\t 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115,\n\t 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922,\n\t 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728,\n\t 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,\n\t 0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E,\n\t 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37,\n\t 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D,\n\t 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804,\n\t 0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B,\n\t 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3,\n\t 0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB,\n\t 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D,\n\t 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C,\n\t 0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350,\n\t 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9,\n\t 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A,\n\t 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE,\n\t 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D,\n\t 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC,\n\t 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F,\n\t 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61,\n\t 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,\n\t 0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9,\n\t 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2,\n\t 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C,\n\t 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E,\n\t 0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633,\n\t 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10,\n\t 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169,\n\t 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52,\n\t 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,\n\t 0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5,\n\t 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62,\n\t 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634,\n\t 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76,\n\t 0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24,\n\t 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC,\n\t 0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4,\n\t 0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C,\n\t 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837,\n\t 0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0 ],\n\t [ 0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B,\n\t 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE,\n\t 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B,\n\t 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4,\n\t 0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8,\n\t 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6,\n\t 0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304,\n\t 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22,\n\t 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,\n\t 0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6,\n\t 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9,\n\t 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59,\n\t 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593,\n\t 0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51,\n\t 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28,\n\t 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C,\n\t 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B,\n\t 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,\n\t 0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C,\n\t 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD,\n\t 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A,\n\t 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319,\n\t 0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB,\n\t 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F,\n\t 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991,\n\t 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32,\n\t 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,\n\t 0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166,\n\t 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE,\n\t 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB,\n\t 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5,\n\t 0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47,\n\t 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370,\n\t 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D,\n\t 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84,\n\t 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,\n\t 0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8,\n\t 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD,\n\t 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9,\n\t 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7,\n\t 0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38,\n\t 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F,\n\t 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C,\n\t 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525,\n\t 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,\n\t 0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442,\n\t 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964,\n\t 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E,\n\t 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8,\n\t 0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D,\n\t 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F,\n\t 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299,\n\t 0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02,\n\t 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC,\n\t 0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614,\n\t 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A,\n\t 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6,\n\t 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B,\n\t 0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0,\n\t 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060,\n\t 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E,\n\t 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9,\n\t 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,\n\t 0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6 ]\n\t ];\n\n\t var BLOWFISH_CTX = {\n\t pbox: [],\n\t sbox: []\n\t }\n\n\t function F(ctx, x){\n\t let a = (x >> 24) & 0xFF;\n\t let b = (x >> 16) & 0xFF;\n\t let c = (x >> 8) & 0xFF;\n\t let d = x & 0xFF;\n\n\t let y = ctx.sbox[0][a] + ctx.sbox[1][b];\n\t y = y ^ ctx.sbox[2][c];\n\t y = y + ctx.sbox[3][d];\n\n\t return y;\n\t }\n\n\t function BlowFish_Encrypt(ctx, left, right){\n\t let Xl = left;\n\t let Xr = right;\n\t let temp;\n\n\t for(let i = 0; i < N; ++i){\n\t Xl = Xl ^ ctx.pbox[i];\n\t Xr = F(ctx, Xl) ^ Xr;\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\t }\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\n\t Xr = Xr ^ ctx.pbox[N];\n\t Xl = Xl ^ ctx.pbox[N + 1];\n\n\t return {left: Xl, right: Xr};\n\t }\n\n\t function BlowFish_Decrypt(ctx, left, right){\n\t let Xl = left;\n\t let Xr = right;\n\t let temp;\n\n\t for(let i = N + 1; i > 1; --i){\n\t Xl = Xl ^ ctx.pbox[i];\n\t Xr = F(ctx, Xl) ^ Xr;\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\t }\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\n\t Xr = Xr ^ ctx.pbox[1];\n\t Xl = Xl ^ ctx.pbox[0];\n\n\t return {left: Xl, right: Xr};\n\t }\n\n\t /**\n\t * Initialization ctx's pbox and sbox.\n\t *\n\t * @param {Object} ctx The object has pbox and sbox.\n\t * @param {Array} key An array of 32-bit words.\n\t * @param {int} keysize The length of the key.\n\t *\n\t * @example\n\t *\n\t * BlowFishInit(BLOWFISH_CTX, key, 128/32);\n\t */\n\t function BlowFishInit(ctx, key, keysize)\n\t {\n\t for(let Row = 0; Row < 4; Row++)\n\t {\n\t ctx.sbox[Row] = [];\n\t for(let Col = 0; Col < 256; Col++)\n\t {\n\t ctx.sbox[Row][Col] = ORIG_S[Row][Col];\n\t }\n\t }\n\n\t let keyIndex = 0;\n\t for(let index = 0; index < N + 2; index++)\n\t {\n\t ctx.pbox[index] = ORIG_P[index] ^ key[keyIndex];\n\t keyIndex++;\n\t if(keyIndex >= keysize)\n\t {\n\t keyIndex = 0;\n\t }\n\t }\n\n\t let Data1 = 0;\n\t let Data2 = 0;\n\t let res = 0;\n\t for(let i = 0; i < N + 2; i += 2)\n\t {\n\t res = BlowFish_Encrypt(ctx, Data1, Data2);\n\t Data1 = res.left;\n\t Data2 = res.right;\n\t ctx.pbox[i] = Data1;\n\t ctx.pbox[i + 1] = Data2;\n\t }\n\n\t for(let i = 0; i < 4; i++)\n\t {\n\t for(let j = 0; j < 256; j += 2)\n\t {\n\t res = BlowFish_Encrypt(ctx, Data1, Data2);\n\t Data1 = res.left;\n\t Data2 = res.right;\n\t ctx.sbox[i][j] = Data1;\n\t ctx.sbox[i][j + 1] = Data2;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t /**\n\t * Blowfish block cipher algorithm.\n\t */\n\t var Blowfish = C_algo.Blowfish = BlockCipher.extend({\n\t _doReset: function () {\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t //Initialization pbox and sbox\n\t BlowFishInit(BLOWFISH_CTX, keyWords, keySize);\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t var res = BlowFish_Encrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n\t M[offset] = res.left;\n\t M[offset + 1] = res.right;\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t var res = BlowFish_Decrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n\t M[offset] = res.left;\n\t M[offset + 1] = res.right;\n\t },\n\n\t blockSize: 64/32,\n\n\t keySize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Blowfish.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Blowfish.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Blowfish = BlockCipher._createHelper(Blowfish);\n\t}());\n\n\n\treturn CryptoJS.Blowfish;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"), require(\"./blowfish\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\", \"./blowfish\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));","import CryptoJS from \"crypto-js\";\nconst SECRET_KEY = \"admin_one\";\nexport const displayData = (data) => {\n if (typeof data === \"string\") {\n return String(data);\n }\n return String(data[\"en-US\"] || data);\n};\nexport const imageUrlArray = (data) => {\n if (data?.image) {\n return [data.image];\n }\n else if (\"variants\" in data) {\n return data.variants[0].images;\n }\n return data.masterVariant.images.map((image) => image.url);\n};\nexport const currencyFormatter = (data, currencyCode) => {\n return data.toLocaleString(\"en-US\", {\n style: \"currency\",\n currency: currencyCode || \"USD\",\n });\n};\nexport const priceFormatter = (data) => {\n if (\"variants\" in data) {\n return {\n centAmount: data.variants[0]?.prices.EUR.max,\n currencyCode: \"DOL\",\n };\n }\n return {\n centAmount: data.masterVariant?.prices[0].value.centAmount,\n currencyCode: data.masterVariant?.prices[0].value.currencyCode,\n };\n};\nexport const encryptData = (data) => {\n return CryptoJS.AES.encrypt(JSON.stringify(data), SECRET_KEY).toString();\n};\nexport const decryptData = (cipherText) => {\n const bytes = CryptoJS.AES.decrypt(cipherText, SECRET_KEY);\n return JSON.parse(bytes.toString(CryptoJS.enc.Utf8));\n};\nexport const initialCapital = (text) => {\n return text.charAt(0).toUpperCase() + text.slice(1);\n};\nexport const laterDate = (day) => {\n const fiveDaysLater = new Date();\n fiveDaysLater.setDate(fiveDaysLater.getDate() + day);\n const formattedDate = fiveDaysLater.toLocaleDateString(\"en-US\", {\n day: \"numeric\",\n month: \"long\",\n });\n return formattedDate;\n};\nexport const stringReducer = (text, length) => {\n return text.length < length ? text : text.slice(0, length) + \"...\";\n};\nexport const formatStringToHtml = (str) => {\n return str\n .split(\"\\\\n\")\n .map((line, index) => {\n const numberedPoint = line.match(/^(\\d+)\\.\\s(.+)/);\n if (numberedPoint) {\n return `<p key=${index} class=\"mb-2\"><strong>${numberedPoint[1]}.</strong> ${numberedPoint[2]}</p>`;\n }\n return line.trim() ? `<p key=${index} class=\"mb-2\">${line}</p>` : \"<br/>\";\n })\n .join(\"\");\n};\n","'use client';\n\nimport { createElement, forwardRef, useState, useEffect } from 'react';\n\nconst defaultIconDimensions = Object.freeze(\n {\n left: 0,\n top: 0,\n width: 16,\n height: 16\n }\n);\nconst defaultIconTransformations = Object.freeze({\n rotate: 0,\n vFlip: false,\n hFlip: false\n});\nconst defaultIconProps = Object.freeze({\n ...defaultIconDimensions,\n ...defaultIconTransformations\n});\nconst defaultExtendedIconProps = Object.freeze({\n ...defaultIconProps,\n body: \"\",\n hidden: false\n});\n\nfunction mergeIconTransformations(obj1, obj2) {\n const result = {};\n if (!obj1.hFlip !== !obj2.hFlip) {\n result.hFlip = true;\n }\n if (!obj1.vFlip !== !obj2.vFlip) {\n result.vFlip = true;\n }\n const rotate = ((obj1.rotate || 0) + (obj2.rotate || 0)) % 4;\n if (rotate) {\n result.rotate = rotate;\n }\n return result;\n}\n\nfunction mergeIconData(parent, child) {\n const result = mergeIconTransformations(parent, child);\n for (const key in defaultExtendedIconProps) {\n if (key in defaultIconTransformations) {\n if (key in parent && !(key in result)) {\n result[key] = defaultIconTransformations[key];\n }\n } else if (key in child) {\n result[key] = child[key];\n } else if (key in parent) {\n result[key] = parent[key];\n }\n }\n return result;\n}\n\nfunction getIconsTree(data, names) {\n const icons = data.icons;\n const aliases = data.aliases || /* @__PURE__ */ Object.create(null);\n const resolved = /* @__PURE__ */ Object.create(null);\n function resolve(name) {\n if (icons[name]) {\n return resolved[name] = [];\n }\n if (!(name in resolved)) {\n resolved[name] = null;\n const parent = aliases[name] && aliases[name].parent;\n const value = parent && resolve(parent);\n if (value) {\n resolved[name] = [parent].concat(value);\n }\n }\n return resolved[name];\n }\n (Object.keys(icons).concat(Object.keys(aliases))).forEach(resolve);\n return resolved;\n}\n\nfunction internalGetIconData(data, name, tree) {\n const icons = data.icons;\n const aliases = data.aliases || /* @__PURE__ */ Object.create(null);\n let currentProps = {};\n function parse(name2) {\n currentProps = mergeIconData(\n icons[name2] || aliases[name2],\n currentProps\n );\n }\n parse(name);\n tree.forEach(parse);\n return mergeIconData(data, currentProps);\n}\n\nfunction parseIconSet(data, callback) {\n const names = [];\n if (typeof data !== \"object\" || typeof data.icons !== \"object\") {\n return names;\n }\n if (data.not_found instanceof Array) {\n data.not_found.forEach((name) => {\n callback(name, null);\n names.push(name);\n });\n }\n const tree = getIconsTree(data);\n for (const name in tree) {\n const item = tree[name];\n if (item) {\n callback(name, internalGetIconData(data, name, item));\n names.push(name);\n }\n }\n return names;\n}\n\nconst optionalPropertyDefaults = {\n provider: \"\",\n aliases: {},\n not_found: {},\n ...defaultIconDimensions\n};\nfunction checkOptionalProps(item, defaults) {\n for (const prop in defaults) {\n if (prop in item && typeof item[prop] !== typeof defaults[prop]) {\n return false;\n }\n }\n return true;\n}\nfunction quicklyValidateIconSet(obj) {\n if (typeof obj !== \"object\" || obj === null) {\n return null;\n }\n const data = obj;\n if (typeof data.prefix !== \"string\" || !obj.icons || typeof obj.icons !== \"object\") {\n return null;\n }\n if (!checkOptionalProps(obj, optionalPropertyDefaults)) {\n return null;\n }\n const icons = data.icons;\n for (const name in icons) {\n const icon = icons[name];\n if (\n // Name cannot be empty\n !name || // Must have body\n typeof icon.body !== \"string\" || // Check other props\n !checkOptionalProps(\n icon,\n defaultExtendedIconProps\n )\n ) {\n return null;\n }\n }\n const aliases = data.aliases || /* @__PURE__ */ Object.create(null);\n for (const name in aliases) {\n const icon = aliases[name];\n const parent = icon.parent;\n if (\n // Name cannot be empty\n !name || // Parent must be set and point to existing icon\n typeof parent !== \"string\" || !icons[parent] && !aliases[parent] || // Check other props\n !checkOptionalProps(\n icon,\n defaultExtendedIconProps\n )\n ) {\n return null;\n }\n }\n return data;\n}\n\nconst matchIconName = /^[a-z0-9]+(-[a-z0-9]+)*$/;\nconst stringToIcon = (value, validate, allowSimpleName, provider = \"\") => {\n const colonSeparated = value.split(\":\");\n if (value.slice(0, 1) === \"@\") {\n if (colonSeparated.length < 2 || colonSeparated.length > 3) {\n return null;\n }\n provider = colonSeparated.shift().slice(1);\n }\n if (colonSeparated.length > 3 || !colonSeparated.length) {\n return null;\n }\n if (colonSeparated.length > 1) {\n const name2 = colonSeparated.pop();\n const prefix = colonSeparated.pop();\n const result = {\n // Allow provider without '@': \"provider:prefix:name\"\n provider: colonSeparated.length > 0 ? colonSeparated[0] : provider,\n prefix,\n name: name2\n };\n return validate && !validateIconName(result) ? null : result;\n }\n const name = colonSeparated[0];\n const dashSeparated = name.split(\"-\");\n if (dashSeparated.length > 1) {\n const result = {\n provider,\n prefix: dashSeparated.shift(),\n name: dashSeparated.join(\"-\")\n };\n return validate && !validateIconName(result) ? null : result;\n }\n if (allowSimpleName && provider === \"\") {\n const result = {\n provider,\n prefix: \"\",\n name\n };\n return validate && !validateIconName(result, allowSimpleName) ? null : result;\n }\n return null;\n};\nconst validateIconName = (icon, allowSimpleName) => {\n if (!icon) {\n return false;\n }\n return !!// Check prefix: cannot be empty, unless allowSimpleName is enabled\n // Check name: cannot be empty\n ((allowSimpleName && icon.prefix === \"\" || !!icon.prefix) && !!icon.name);\n};\n\nconst dataStorage = /* @__PURE__ */ Object.create(null);\nfunction newStorage(provider, prefix) {\n return {\n provider,\n prefix,\n icons: /* @__PURE__ */ Object.create(null),\n missing: /* @__PURE__ */ new Set()\n };\n}\nfunction getStorage(provider, prefix) {\n const providerStorage = dataStorage[provider] || (dataStorage[provider] = /* @__PURE__ */ Object.create(null));\n return providerStorage[prefix] || (providerStorage[prefix] = newStorage(provider, prefix));\n}\nfunction addIconSet(storage, data) {\n if (!quicklyValidateIconSet(data)) {\n return [];\n }\n return parseIconSet(data, (name, icon) => {\n if (icon) {\n storage.icons[name] = icon;\n } else {\n storage.missing.add(name);\n }\n });\n}\nfunction addIconToStorage(storage, name, icon) {\n try {\n if (typeof icon.body === \"string\") {\n storage.icons[name] = { ...icon };\n return true;\n }\n } catch (err) {\n }\n return false;\n}\nfunction listIcons(provider, prefix) {\n let allIcons = [];\n const providers = typeof provider === \"string\" ? [provider] : Object.keys(dataStorage);\n providers.forEach((provider2) => {\n const prefixes = typeof provider2 === \"string\" && typeof prefix === \"string\" ? [prefix] : Object.keys(dataStorage[provider2] || {});\n prefixes.forEach((prefix2) => {\n const storage = getStorage(provider2, prefix2);\n allIcons = allIcons.concat(\n Object.keys(storage.icons).map(\n (name) => (provider2 !== \"\" ? \"@\" + provider2 + \":\" : \"\") + prefix2 + \":\" + name\n )\n );\n });\n });\n return allIcons;\n}\n\nlet simpleNames = false;\nfunction allowSimpleNames(allow) {\n if (typeof allow === \"boolean\") {\n simpleNames = allow;\n }\n return simpleNames;\n}\nfunction getIconData(name) {\n const icon = typeof name === \"string\" ? stringToIcon(name, true, simpleNames) : name;\n if (icon) {\n const storage = getStorage(icon.provider, icon.prefix);\n const iconName = icon.name;\n return storage.icons[iconName] || (storage.missing.has(iconName) ? null : void 0);\n }\n}\nfunction addIcon(name, data) {\n const icon = stringToIcon(name, true, simpleNames);\n if (!icon) {\n return false;\n }\n const storage = getStorage(icon.provider, icon.prefix);\n if (data) {\n return addIconToStorage(storage, icon.name, data);\n } else {\n storage.missing.add(icon.name);\n return true;\n }\n}\nfunction addCollection(data, provider) {\n if (typeof data !== \"object\") {\n return false;\n }\n if (typeof provider !== \"string\") {\n provider = data.provider || \"\";\n }\n if (simpleNames && !provider && !data.prefix) {\n let added = false;\n if (quicklyValidateIconSet(data)) {\n data.prefix = \"\";\n parseIconSet(data, (name, icon) => {\n if (addIcon(name, icon)) {\n added = true;\n }\n });\n }\n return added;\n }\n const prefix = data.prefix;\n if (!validateIconName({\n prefix,\n name: \"a\"\n })) {\n return false;\n }\n const storage = getStorage(provider, prefix);\n return !!addIconSet(storage, data);\n}\nfunction iconLoaded(name) {\n return !!getIconData(name);\n}\nfunction getIcon(name) {\n const result = getIconData(name);\n return result ? {\n ...defaultIconProps,\n ...result\n } : result;\n}\n\nconst defaultIconSizeCustomisations = Object.freeze({\n width: null,\n height: null\n});\nconst defaultIconCustomisations = Object.freeze({\n // Dimensions\n ...defaultIconSizeCustomisations,\n // Transformations\n ...defaultIconTransformations\n});\n\nconst unitsSplit = /(-?[0-9.]*[0-9]+[0-9.]*)/g;\nconst unitsTest = /^-?[0-9.]*[0-9]+[0-9.]*$/g;\nfunction calculateSize(size, ratio, precision) {\n if (ratio === 1) {\n return size;\n }\n precision = precision || 100;\n if (typeof size === \"number\") {\n return Math.ceil(size * ratio * precision) / precision;\n }\n if (typeof size !== \"string\") {\n return size;\n }\n const oldParts = size.split(unitsSplit);\n if (oldParts === null || !oldParts.length) {\n return size;\n }\n const newParts = [];\n let code = oldParts.shift();\n let isNumber = unitsTest.test(code);\n while (true) {\n if (isNumber) {\n const num = parseFloat(code);\n if (isNaN(num)) {\n newParts.push(code);\n } else {\n newParts.push(Math.ceil(num * ratio * precision) / precision);\n }\n } else {\n newParts.push(code);\n }\n code = oldParts.shift();\n if (code === void 0) {\n return newParts.join(\"\");\n }\n isNumber = !isNumber;\n }\n}\n\nfunction splitSVGDefs(content, tag = \"defs\") {\n let defs = \"\";\n const index = content.indexOf(\"<\" + tag);\n while (index >= 0) {\n const start = content.indexOf(\">\", index);\n const end = content.indexOf(\"</\" + tag);\n if (start === -1 || end === -1) {\n break;\n }\n const endEnd = content.indexOf(\">\", end);\n if (endEnd === -1) {\n break;\n }\n defs += content.slice(start + 1, end).trim();\n content = content.slice(0, index).trim() + content.slice(endEnd + 1);\n }\n return {\n defs,\n content\n };\n}\nfunction mergeDefsAndContent(defs, content) {\n return defs ? \"<defs>\" + defs + \"</defs>\" + content : content;\n}\nfunction wrapSVGContent(body, start, end) {\n const split = splitSVGDefs(body);\n return mergeDefsAndContent(split.defs, start + split.content + end);\n}\n\nconst isUnsetKeyword = (value) => value === \"unset\" || value === \"undefined\" || value === \"none\";\nfunction iconToSVG(icon, customisations) {\n const fullIcon = {\n ...defaultIconProps,\n ...icon\n };\n const fullCustomisations = {\n ...defaultIconCustomisations,\n ...customisations\n };\n const box = {\n left: fullIcon.left,\n top: fullIcon.top,\n width: fullIcon.width,\n height: fullIcon.height\n };\n let body = fullIcon.body;\n [fullIcon, fullCustomisations].forEach((props) => {\n const transformations = [];\n const hFlip = props.hFlip;\n const vFlip = props.vFlip;\n let rotation = props.rotate;\n if (hFlip) {\n if (vFlip) {\n rotation += 2;\n } else {\n transformations.push(\n \"translate(\" + (box.width + box.left).toString() + \" \" + (0 - box.top).toString() + \")\"\n );\n transformations.push(\"scale(-1 1)\");\n box.top = box.left = 0;\n }\n } else if (vFlip) {\n transformations.push(\n \"translate(\" + (0 - box.left).toString() + \" \" + (box.height + box.top).toString() + \")\"\n );\n transformations.push(\"scale(1 -1)\");\n box.top = box.left = 0;\n }\n let tempValue;\n if (rotation < 0) {\n rotation -= Math.floor(rotation / 4) * 4;\n }\n rotation = rotation % 4;\n switch (rotation) {\n case 1:\n tempValue = box.height / 2 + box.top;\n transformations.unshift(\n \"rotate(90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\"\n );\n break;\n case 2:\n transformations.unshift(\n \"rotate(180 \" + (box.width / 2 + box.left).toString() + \" \" + (box.height / 2 + box.top).toString() + \")\"\n );\n break;\n case 3:\n tempValue = box.width / 2 + box.left;\n transformations.unshift(\n \"rotate(-90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\"\n );\n break;\n }\n if (rotation % 2 === 1) {\n if (box.left !== box.top) {\n tempValue = box.left;\n box.left = box.top;\n box.top = tempValue;\n }\n if (box.width !== box.height) {\n tempValue = box.width;\n box.width = box.height;\n box.height = tempValue;\n }\n }\n if (transformations.length) {\n body = wrapSVGContent(\n body,\n '<g transform=\"' + transformations.join(\" \") + '\">',\n \"</g>\"\n );\n }\n });\n const customisationsWidth = fullCustomisations.width;\n const customisationsHeight = fullCustomisations.height;\n const boxWidth = box.width;\n const boxHeight = box.height;\n let width;\n let height;\n if (customisationsWidth === null) {\n height = customisationsHeight === null ? \"1em\" : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n width = calculateSize(height, boxWidth / boxHeight);\n } else {\n width = customisationsWidth === \"auto\" ? boxWidth : customisationsWidth;\n height = customisationsHeight === null ? calculateSize(width, boxHeight / boxWidth) : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n }\n const attributes = {};\n const setAttr = (prop, value) => {\n if (!isUnsetKeyword(value)) {\n attributes[prop] = value.toString();\n }\n };\n setAttr(\"width\", width);\n setAttr(\"height\", height);\n const viewBox = [box.left, box.top, boxWidth, boxHeight];\n attributes.viewBox = viewBox.join(\" \");\n return {\n attributes,\n viewBox,\n body\n };\n}\n\nconst regex = /\\sid=\"(\\S+)\"/g;\nconst randomPrefix = \"IconifyId\" + Date.now().toString(16) + (Math.random() * 16777216 | 0).toString(16);\nlet counter = 0;\nfunction replaceIDs(body, prefix = randomPrefix) {\n const ids = [];\n let match;\n while (match = regex.exec(body)) {\n ids.push(match[1]);\n }\n if (!ids.length) {\n return body;\n }\n const suffix = \"suffix\" + (Math.random() * 16777216 | Date.now()).toString(16);\n ids.forEach((id) => {\n const newID = typeof prefix === \"function\" ? prefix(id) : prefix + (counter++).toString();\n const escapedID = id.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n body = body.replace(\n // Allowed characters before id: [#;\"]\n // Allowed characters after id: [)\"], .[a-z]\n new RegExp('([#;\"])(' + escapedID + ')([\")]|\\\\.[a-z])', \"g\"),\n \"$1\" + newID + suffix + \"$3\"\n );\n });\n body = body.replace(new RegExp(suffix, \"g\"), \"\");\n return body;\n}\n\nconst storage = /* @__PURE__ */ Object.create(null);\nfunction setAPIModule(provider, item) {\n storage[provider] = item;\n}\nfunction getAPIModule(provider) {\n return storage[provider] || storage[\"\"];\n}\n\nfunction createAPIConfig(source) {\n let resources;\n if (typeof source.resources === \"string\") {\n resources = [source.resources];\n } else {\n resources = source.resources;\n if (!(resources instanceof Array) || !resources.length) {\n return null;\n }\n }\n const result = {\n // API hosts\n resources,\n // Root path\n path: source.path || \"/\",\n // URL length limit\n maxURL: source.maxURL || 500,\n // Timeout before next host is used.\n rotate: source.rotate || 750,\n // Timeout before failing query.\n timeout: source.timeout || 5e3,\n // Randomise default API end point.\n random: source.random === true,\n // Start index\n index: source.index || 0,\n // Receive data after time out (used if time out kicks in first, then API module sends data anyway).\n dataAfterTimeout: source.dataAfterTimeout !== false\n };\n return result;\n}\nconst configStorage = /* @__PURE__ */ Object.create(null);\nconst fallBackAPISources = [\n \"https://api.simplesvg.com\",\n \"https://api.unisvg.com\"\n];\nconst fallBackAPI = [];\nwhile (fallBackAPISources.length > 0) {\n if (fallBackAPISources.length === 1) {\n fallBackAPI.push(fallBackAPISources.shift());\n } else {\n if (Math.random() > 0.5) {\n fallBackAPI.push(fallBackAPISources.shift());\n } else {\n fallBackAPI.push(fallBackAPISources.pop());\n }\n }\n}\nconfigStorage[\"\"] = createAPIConfig({\n resources: [\"https://api.iconify.design\"].concat(fallBackAPI)\n});\nfunction addAPIProvider(provider, customConfig) {\n const config = createAPIConfig(customConfig);\n if (config === null) {\n return false;\n }\n configStorage[provider] = config;\n return true;\n}\nfunction getAPIConfig(provider) {\n return configStorage[provider];\n}\nfunction listAPIProviders() {\n return Object.keys(configStorage);\n}\n\nconst detectFetch = () => {\n let callback;\n try {\n callback = fetch;\n if (typeof callback === \"function\") {\n return callback;\n }\n } catch (err) {\n }\n};\nlet fetchModule = detectFetch();\nfunction setFetch(fetch2) {\n fetchModule = fetch2;\n}\nfunction getFetch() {\n return fetchModule;\n}\nfunction calculateMaxLength(provider, prefix) {\n const config = getAPIConfig(provider);\n if (!config) {\n return 0;\n }\n let result;\n if (!config.maxURL) {\n result = 0;\n } else {\n let maxHostLength = 0;\n config.resources.forEach((item) => {\n const host = item;\n maxHostLength = Math.max(maxHostLength, host.length);\n });\n const url = prefix + \".json?icons=\";\n result = config.maxURL - maxHostLength - config.path.length - url.length;\n }\n return result;\n}\nfunction shouldAbort(status) {\n return status === 404;\n}\nconst prepare = (provider, prefix, icons) => {\n const results = [];\n const maxLength = calculateMaxLength(provider, prefix);\n const type = \"icons\";\n let item = {\n type,\n provider,\n prefix,\n icons: []\n };\n let length = 0;\n icons.forEach((name, index) => {\n length += name.length + 1;\n if (length >= maxLength && index > 0) {\n results.push(item);\n item = {\n type,\n provider,\n prefix,\n icons: []\n };\n length = name.length;\n }\n item.icons.push(name);\n });\n results.push(item);\n return results;\n};\nfunction getPath(provider) {\n if (typeof provider === \"string\") {\n const config = getAPIConfig(provider);\n if (config) {\n return config.path;\n }\n }\n return \"/\";\n}\nconst send = (host, params, callback) => {\n if (!fetchModule) {\n callback(\"abort\", 424);\n return;\n }\n let path = getPath(params.provider);\n switch (params.type) {\n case \"icons\": {\n const prefix = params.prefix;\n const icons = params.icons;\n const iconsList = icons.join(\",\");\n const urlParams = new URLSearchParams({\n icons: iconsList\n });\n path += prefix + \".json?\" + urlParams.toString();\n break;\n }\n case \"custom\": {\n const uri = params.uri;\n path += uri.slice(0, 1) === \"/\" ? uri.slice(1) : uri;\n break;\n }\n default:\n callback(\"abort\", 400);\n return;\n }\n let defaultError = 503;\n fetchModule(host + path).then((response) => {\n const status = response.status;\n if (status !== 200) {\n setTimeout(() => {\n callback(shouldAbort(status) ? \"abort\" : \"next\", status);\n });\n return;\n }\n defaultError = 501;\n return response.json();\n }).then((data) => {\n if (typeof data !== \"object\" || data === null) {\n setTimeout(() => {\n if (data === 404) {\n callback(\"abort\", data);\n } else {\n callback(\"next\", defaultError);\n }\n });\n return;\n }\n setTimeout(() => {\n callback(\"success\", data);\n });\n }).catch(() => {\n callback(\"next\", defaultError);\n });\n};\nconst fetchAPIModule = {\n prepare,\n send\n};\n\nfunction sortIcons(icons) {\n const result = {\n loaded: [],\n missing: [],\n pending: []\n };\n const storage = /* @__PURE__ */ Object.create(null);\n icons.sort((a, b) => {\n if (a.provider !== b.provider) {\n return a.provider.localeCompare(b.provider);\n }\n if (a.prefix !== b.prefix) {\n return a.prefix.localeCompare(b.prefix);\n }\n return a.name.localeCompare(b.name);\n });\n let lastIcon = {\n provider: \"\",\n prefix: \"\",\n name: \"\"\n };\n icons.forEach((icon) => {\n if (lastIcon.name === icon.name && lastIcon.prefix === icon.prefix && lastIcon.provider === icon.provider) {\n return;\n }\n lastIcon = icon;\n const provider = icon.provider;\n const prefix = icon.prefix;\n const name = icon.name;\n const providerStorage = storage[provider] || (storage[provider] = /* @__PURE__ */ Object.create(null));\n const localStorage = providerStorage[prefix] || (providerStorage[prefix] = getStorage(provider, prefix));\n let list;\n if (name in localStorage.icons) {\n list = result.loaded;\n } else if (prefix === \"\" || localStorage.missing.has(name)) {\n list = result.missing;\n } else {\n list = result.pending;\n }\n const item = {\n provider,\n prefix,\n name\n };\n list.push(item);\n });\n return result;\n}\n\nfunction removeCallback(storages, id) {\n storages.forEach((storage) => {\n const items = storage.loaderCallbacks;\n if (items) {\n storage.loaderCallbacks = items.filter((row) => row.id !== id);\n }\n });\n}\nfunction updateCallbacks(storage) {\n if (!storage.pendingCallbacksFlag) {\n storage.pendingCallbacksFlag = true;\n setTimeout(() => {\n storage.pendingCallbacksFlag = false;\n const items = storage.loaderCallbacks ? storage.loaderCallbacks.slice(0) : [];\n if (!items.length) {\n return;\n }\n let hasPending = false;\n const provider = storage.provider;\n const prefix = storage.prefix;\n items.forEach((item) => {\n const icons = item.icons;\n const oldLength = icons.pending.length;\n icons.pending = icons.pending.filter((icon) => {\n if (icon.prefix !== prefix) {\n return true;\n }\n const name = icon.name;\n if (storage.icons[name]) {\n icons.loaded.push({\n provider,\n prefix,\n name\n });\n } else if (storage.missing.has(name)) {\n icons.missing.push({\n provider,\n prefix,\n name\n });\n } else {\n hasPending = true;\n return true;\n }\n return false;\n });\n if (icons.pending.length !== oldLength) {\n if (!hasPending) {\n removeCallback([storage], item.id);\n }\n item.callback(\n icons.loaded.slice(0),\n icons.missing.slice(0),\n icons.pending.slice(0),\n item.abort\n );\n }\n });\n });\n }\n}\nlet idCounter = 0;\nfunction storeCallback(callback, icons, pendingSources) {\n const id = idCounter++;\n const abort = removeCallback.bind(null, pendingSources, id);\n if (!icons.pending.length) {\n return abort;\n }\n const item = {\n id,\n icons,\n callback,\n abort\n };\n pendingSources.forEach((storage) => {\n (storage.loaderCallbacks || (storage.loaderCallbacks = [])).push(item);\n });\n return abort;\n}\n\nfunction listToIcons(list, validate = true, simpleNames = false) {\n const result = [];\n list.forEach((item) => {\n const icon = typeof item === \"string\" ? stringToIcon(item, validate, simpleNames) : item;\n if (icon) {\n result.push(icon);\n }\n });\n return result;\n}\n\n// src/config.ts\nvar defaultConfig = {\n resources: [],\n index: 0,\n timeout: 2e3,\n rotate: 750,\n random: false,\n dataAfterTimeout: false\n};\n\n// src/query.ts\nfunction sendQuery(config, payload, query, done) {\n const resourcesCount = config.resources.length;\n const startIndex = config.random ? Math.floor(Math.random() * resourcesCount) : config.index;\n let resources;\n if (config.random) {\n let list = config.resources.slice(0);\n resources = [];\n while (list.length > 1) {\n const nextIndex = Math.floor(Math.random() * list.length);\n resources.push(list[nextIndex]);\n list = list.slice(0, nextIndex).concat(list.slice(nextIndex + 1));\n }\n resources = resources.concat(list);\n } else {\n resources = config.resources.slice(startIndex).concat(config.resources.slice(0, startIndex));\n }\n const startTime = Date.now();\n let status = \"pending\";\n let queriesSent = 0;\n let lastError;\n let timer = null;\n let queue = [];\n let doneCallbacks = [];\n if (typeof done === \"function\") {\n doneCallbacks.push(done);\n }\n function resetTimer() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n }\n function abort() {\n if (status === \"pending\") {\n status = \"aborted\";\n }\n resetTimer();\n queue.forEach((item) => {\n if (item.status === \"pending\") {\n item.status = \"aborted\";\n }\n });\n queue = [];\n }\n function subscribe(callback, overwrite) {\n if (overwrite) {\n doneCallbacks = [];\n }\n if (typeof callback === \"function\") {\n doneCallbacks.push(callback);\n }\n }\n function getQueryStatus() {\n return {\n startTime,\n payload,\n status,\n queriesSent,\n queriesPending: queue.length,\n subscribe,\n abort\n };\n }\n function failQuery() {\n status = \"failed\";\n doneCallbacks.forEach((callback) => {\n callback(void 0, lastError);\n });\n }\n function clearQueue() {\n queue.forEach((item) => {\n if (item.status === \"pending\") {\n item.status = \"aborted\";\n }\n });\n queue = [];\n }\n function moduleResponse(item, response, data) {\n const isError = response !== \"success\";\n queue = queue.filter((queued) => queued !== item);\n switch (status) {\n case \"pending\":\n break;\n case \"failed\":\n if (isError || !config.dataAfterTimeout) {\n return;\n }\n break;\n default:\n return;\n }\n if (response === \"abort\") {\n lastError = data;\n failQuery();\n return;\n }\n if (isError) {\n lastError = data;\n if (!queue.length) {\n if (!resources.length) {\n failQuery();\n } else {\n execNext();\n }\n }\n return;\n }\n resetTimer();\n clearQueue();\n if (!config.random) {\n const index = config.resources.indexOf(item.resource);\n if (index !== -1 && index !== config.index) {\n config.index = index;\n }\n }\n status = \"completed\";\n doneCallbacks.forEach((callback) => {\n callback(data);\n });\n }\n function execNext() {\n if (status !== \"pending\") {\n return;\n }\n resetTimer();\n const resource = resources.shift();\n if (resource === void 0) {\n if (queue.length) {\n timer = setTimeout(() => {\n resetTimer();\n if (status === \"pending\") {\n clearQueue();\n failQuery();\n }\n }, config.timeout);\n return;\n }\n failQuery();\n return;\n }\n const item = {\n status: \"pending\",\n resource,\n callback: (status2, data) => {\n moduleResponse(item, status2, data);\n }\n };\n queue.push(item);\n queriesSent++;\n timer = setTimeout(execNext, config.rotate);\n query(resource, payload, item.callback);\n }\n setTimeout(execNext);\n return getQueryStatus;\n}\n\n// src/index.ts\nfunction initRedundancy(cfg) {\n const config = {\n ...defaultConfig,\n ...cfg\n };\n let queries = [];\n function cleanup() {\n queries = queries.filter((item) => item().status === \"pending\");\n }\n function query(payload, queryCallback, doneCallback) {\n const query2 = sendQuery(\n config,\n payload,\n queryCallback,\n (data, error) => {\n cleanup();\n if (doneCallback) {\n doneCallback(data, error);\n }\n }\n );\n queries.push(query2);\n return query2;\n }\n function find(callback) {\n return queries.find((value) => {\n return callback(value);\n }) || null;\n }\n const instance = {\n query,\n find,\n setIndex: (index) => {\n config.index = index;\n },\n getIndex: () => config.index,\n cleanup\n };\n return instance;\n}\n\nfunction emptyCallback$1() {\n}\nconst redundancyCache = /* @__PURE__ */ Object.create(null);\nfunction getRedundancyCache(provider) {\n if (!redundancyCache[provider]) {\n const config = getAPIConfig(provider);\n if (!config) {\n return;\n }\n const redundancy = initRedundancy(config);\n const cachedReundancy = {\n config,\n redundancy\n };\n redundancyCache[provider] = cachedReundancy;\n }\n return redundancyCache[provider];\n}\nfunction sendAPIQuery(target, query, callback) {\n let redundancy;\n let send;\n if (typeof target === \"string\") {\n const api = getAPIModule(target);\n if (!api) {\n callback(void 0, 424);\n return emptyCallback$1;\n }\n send = api.send;\n const cached = getRedundancyCache(target);\n if (cached) {\n redundancy = cached.redundancy;\n }\n } else {\n const config = createAPIConfig(target);\n if (config) {\n redundancy = initRedundancy(config);\n const moduleKey = target.resources ? target.resources[0] : \"\";\n const api = getAPIModule(moduleKey);\n if (api) {\n send = api.send;\n }\n }\n }\n if (!redundancy || !send) {\n callback(void 0, 424);\n return emptyCallback$1;\n }\n return redundancy.query(query, send, callback)().abort;\n}\n\nfunction emptyCallback() {\n}\nfunction loadedNewIcons(storage) {\n if (!storage.iconsLoaderFlag) {\n storage.iconsLoaderFlag = true;\n setTimeout(() => {\n storage.iconsLoaderFlag = false;\n updateCallbacks(storage);\n });\n }\n}\nfunction checkIconNamesForAPI(icons) {\n const valid = [];\n const invalid = [];\n icons.forEach((name) => {\n (name.match(matchIconName) ? valid : invalid).push(name);\n });\n return {\n valid,\n invalid\n };\n}\nfunction parseLoaderResponse(storage, icons, data) {\n function checkMissing() {\n const pending = storage.pendingIcons;\n icons.forEach((name) => {\n if (pending) {\n pending.delete(name);\n }\n if (!storage.icons[name]) {\n storage.missing.add(name);\n }\n });\n }\n if (data && typeof data === \"object\") {\n try {\n const parsed = addIconSet(storage, data);\n if (!parsed.length) {\n checkMissing();\n return;\n }\n } catch (err) {\n console.error(err);\n }\n }\n checkMissing();\n loadedNewIcons(storage);\n}\nfunction parsePossiblyAsyncResponse(response, callback) {\n if (response instanceof Promise) {\n response.then((data) => {\n callback(data);\n }).catch(() => {\n callback(null);\n });\n } else {\n callback(response);\n }\n}\nfunction loadNewIcons(storage, icons) {\n if (!storage.iconsToLoad) {\n storage.iconsToLoad = icons;\n } else {\n storage.iconsToLoad = storage.iconsToLoad.concat(icons).sort();\n }\n if (!storage.iconsQueueFlag) {\n storage.iconsQueueFlag = true;\n setTimeout(() => {\n storage.iconsQueueFlag = false;\n const { provider, prefix } = storage;\n const icons2 = storage.iconsToLoad;\n delete storage.iconsToLoad;\n if (!icons2 || !icons2.length) {\n return;\n }\n const customIconLoader = storage.loadIcon;\n if (storage.loadIcons && (icons2.length > 1 || !customIconLoader)) {\n parsePossiblyAsyncResponse(\n storage.loadIcons(icons2, prefix, provider),\n (data) => {\n parseLoaderResponse(storage, icons2, data);\n }\n );\n return;\n }\n if (customIconLoader) {\n icons2.forEach((name) => {\n const response = customIconLoader(name, prefix, provider);\n parsePossiblyAsyncResponse(response, (data) => {\n const iconSet = data ? {\n prefix,\n icons: {\n [name]: data\n }\n } : null;\n parseLoaderResponse(storage, [name], iconSet);\n });\n });\n return;\n }\n const { valid, invalid } = checkIconNamesForAPI(icons2);\n if (invalid.length) {\n parseLoaderResponse(storage, invalid, null);\n }\n if (!valid.length) {\n return;\n }\n const api = prefix.match(matchIconName) ? getAPIModule(provider) : null;\n if (!api) {\n parseLoaderResponse(storage, valid, null);\n return;\n }\n const params = api.prepare(provider, prefix, valid);\n params.forEach((item) => {\n sendAPIQuery(provider, item, (data) => {\n parseLoaderResponse(storage, item.icons, data);\n });\n });\n });\n }\n}\nconst loadIcons = (icons, callback) => {\n const cleanedIcons = listToIcons(icons, true, allowSimpleNames());\n const sortedIcons = sortIcons(cleanedIcons);\n if (!sortedIcons.pending.length) {\n let callCallback = true;\n if (callback) {\n setTimeout(() => {\n if (callCallback) {\n callback(\n sortedIcons.loaded,\n sortedIcons.missing,\n sortedIcons.pending,\n emptyCallback\n );\n }\n });\n }\n return () => {\n callCallback = false;\n };\n }\n const newIcons = /* @__PURE__ */ Object.create(null);\n const sources = [];\n let lastProvider, lastPrefix;\n sortedIcons.pending.forEach((icon) => {\n const { provider, prefix } = icon;\n if (prefix === lastPrefix && provider === lastProvider) {\n return;\n }\n lastProvider = provider;\n lastPrefix = prefix;\n sources.push(getStorage(provider, prefix));\n const providerNewIcons = newIcons[provider] || (newIcons[provider] = /* @__PURE__ */ Object.create(null));\n if (!providerNewIcons[prefix]) {\n providerNewIcons[prefix] = [];\n }\n });\n sortedIcons.pending.forEach((icon) => {\n const { provider, prefix, name } = icon;\n const storage = getStorage(provider, prefix);\n const pendingQueue = storage.pendingIcons || (storage.pendingIcons = /* @__PURE__ */ new Set());\n if (!pendingQueue.has(name)) {\n pendingQueue.add(name);\n newIcons[provider][prefix].push(name);\n }\n });\n sources.forEach((storage) => {\n const list = newIcons[storage.provider][storage.prefix];\n if (list.length) {\n loadNewIcons(storage, list);\n }\n });\n return callback ? storeCallback(callback, sortedIcons, sources) : emptyCallback;\n};\nconst loadIcon = (icon) => {\n return new Promise((fulfill, reject) => {\n const iconObj = typeof icon === \"string\" ? stringToIcon(icon, true) : icon;\n if (!iconObj) {\n reject(icon);\n return;\n }\n loadIcons([iconObj || icon], (loaded) => {\n if (loaded.length && iconObj) {\n const data = getIconData(iconObj);\n if (data) {\n fulfill({\n ...defaultIconProps,\n ...data\n });\n return;\n }\n }\n reject(icon);\n });\n });\n};\n\nfunction setCustomIconsLoader(loader, prefix, provider) {\n getStorage(provider || \"\", prefix).loadIcons = loader;\n}\nfunction setCustomIconLoader(loader, prefix, provider) {\n getStorage(provider || \"\", prefix).loadIcon = loader;\n}\n\nfunction mergeCustomisations(defaults, item) {\n const result = {\n ...defaults\n };\n for (const key in item) {\n const value = item[key];\n const valueType = typeof value;\n if (key in defaultIconSizeCustomisations) {\n if (value === null || value && (valueType === \"string\" || valueType === \"number\")) {\n result[key] = value;\n }\n } else if (valueType === typeof result[key]) {\n result[key] = key === \"rotate\" ? value % 4 : value;\n }\n }\n return result;\n}\n\nconst separator = /[\\s,]+/;\nfunction flipFromString(custom, flip) {\n flip.split(separator).forEach((str) => {\n const value = str.trim();\n switch (value) {\n case \"horizontal\":\n custom.hFlip = true;\n break;\n case \"vertical\":\n custom.vFlip = true;\n break;\n }\n });\n}\n\nfunction rotateFromString(value, defaultValue = 0) {\n const units = value.replace(/^-?[0-9.]*/, \"\");\n function cleanup(value2) {\n while (value2 < 0) {\n value2 += 4;\n }\n return value2 % 4;\n }\n if (units === \"\") {\n const num = parseInt(value);\n return isNaN(num) ? 0 : cleanup(num);\n } else if (units !== value) {\n let split = 0;\n switch (units) {\n case \"%\":\n split = 25;\n break;\n case \"deg\":\n split = 90;\n }\n if (split) {\n let num = parseFloat(value.slice(0, value.length - units.length));\n if (isNaN(num)) {\n return 0;\n }\n num = num / split;\n return num % 1 === 0 ? cleanup(num) : 0;\n }\n }\n return defaultValue;\n}\n\nfunction iconToHTML(body, attributes) {\n let renderAttribsHTML = body.indexOf(\"xlink:\") === -1 ? \"\" : ' xmlns:xlink=\"http://www.w3.org/1999/xlink\"';\n for (const attr in attributes) {\n renderAttribsHTML += \" \" + attr + '=\"' + attributes[attr] + '\"';\n }\n return '<svg xmlns=\"http://www.w3.org/2000/svg\"' + renderAttribsHTML + \">\" + body + \"</svg>\";\n}\n\nfunction encodeSVGforURL(svg) {\n return svg.replace(/\"/g, \"'\").replace(/%/g, \"%25\").replace(/#/g, \"%23\").replace(/</g, \"%3C\").replace(/>/g, \"%3E\").replace(/\\s+/g, \" \");\n}\nfunction svgToData(svg) {\n return \"data:image/svg+xml,\" + encodeSVGforURL(svg);\n}\nfunction svgToURL(svg) {\n return 'url(\"' + svgToData(svg) + '\")';\n}\n\nlet policy;\nfunction createPolicy() {\n try {\n policy = window.trustedTypes.createPolicy(\"iconify\", {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n createHTML: (s) => s\n });\n } catch (err) {\n policy = null;\n }\n}\nfunction cleanUpInnerHTML(html) {\n if (policy === void 0) {\n createPolicy();\n }\n return policy ? policy.createHTML(html) : html;\n}\n\nconst defaultExtendedIconCustomisations = {\n ...defaultIconCustomisations,\n inline: false,\n};\n\n/**\n * Default SVG attributes\n */\nconst svgDefaults = {\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'xmlnsXlink': 'http://www.w3.org/1999/xlink',\n 'aria-hidden': true,\n 'role': 'img',\n};\n/**\n * Style modes\n */\nconst commonProps = {\n display: 'inline-block',\n};\nconst monotoneProps = {\n backgroundColor: 'currentColor',\n};\nconst coloredProps = {\n backgroundColor: 'transparent',\n};\n// Dynamically add common props to variables above\nconst propsToAdd = {\n Image: 'var(--svg)',\n Repeat: 'no-repeat',\n Size: '100% 100%',\n};\nconst propsToAddTo = {\n WebkitMask: monotoneProps,\n mask: monotoneProps,\n background: coloredProps,\n};\nfor (const prefix in propsToAddTo) {\n const list = propsToAddTo[prefix];\n for (const prop in propsToAdd) {\n list[prefix + prop] = propsToAdd[prop];\n }\n}\n/**\n * Default values for customisations for inline icon\n */\nconst inlineDefaults = {\n ...defaultExtendedIconCustomisations,\n inline: true,\n};\n/**\n * Fix size: add 'px' to numbers\n */\nfunction fixSize(value) {\n return value + (value.match(/^[-0-9.]+$/) ? 'px' : '');\n}\n/**\n * Render icon\n */\nconst render = (\n// Icon must be validated before calling this function\nicon, \n// Partial properties\nprops, \n// Icon name\nname) => {\n // Get default properties\n const defaultProps = props.inline\n ? inlineDefaults\n : defaultExtendedIconCustomisations;\n // Get all customisations\n const customisations = mergeCustomisations(defaultProps, props);\n // Check mode\n const mode = props.mode || 'svg';\n // Create style\n const style = {};\n const customStyle = props.style || {};\n // Create SVG component properties\n const componentProps = {\n ...(mode === 'svg' ? svgDefaults : {}),\n };\n if (name) {\n const iconName = stringToIcon(name, false, true);\n if (iconName) {\n const classNames = ['iconify'];\n const props = [\n 'provider',\n 'prefix',\n ];\n for (const prop of props) {\n if (iconName[prop]) {\n classNames.push('iconify--' + iconName[prop]);\n }\n }\n componentProps.className = classNames.join(' ');\n }\n }\n // Get element properties\n for (let key in props) {\n const value = props[key];\n if (value === void 0) {\n continue;\n }\n switch (key) {\n // Properties to ignore\n case 'icon':\n case 'style':\n case 'children':\n case 'onLoad':\n case 'mode':\n case 'ssr':\n break;\n // Forward ref\n case '_ref':\n componentProps.ref = value;\n break;\n // Merge class names\n case 'className':\n componentProps[key] =\n (componentProps[key] ? componentProps[key] + ' ' : '') +\n value;\n break;\n // Boolean attributes\n case 'inline':\n case 'hFlip':\n case 'vFlip':\n customisations[key] =\n value === true || value === 'true' || value === 1;\n break;\n // Flip as string: 'horizontal,vertical'\n case 'flip':\n if (typeof value === 'string') {\n flipFromString(customisations, value);\n }\n break;\n // Color: copy to style\n case 'color':\n style.color = value;\n break;\n // Rotation as string\n case 'rotate':\n if (typeof value === 'string') {\n customisations[key] = rotateFromString(value);\n }\n else if (typeof value === 'number') {\n customisations[key] = value;\n }\n break;\n // Remove aria-hidden\n case 'ariaHidden':\n case 'aria-hidden':\n if (value !== true && value !== 'true') {\n delete componentProps['aria-hidden'];\n }\n break;\n // Copy missing property if it does not exist in customisations\n default:\n if (defaultProps[key] === void 0) {\n componentProps[key] = value;\n }\n }\n }\n // Generate icon\n const item = iconToSVG(icon, customisations);\n const renderAttribs = item.attributes;\n // Inline display\n if (customisations.inline) {\n style.verticalAlign = '-0.125em';\n }\n if (mode === 'svg') {\n // Add style\n componentProps.style = {\n ...style,\n ...customStyle,\n };\n // Add icon stuff\n Object.assign(componentProps, renderAttribs);\n // Counter for ids based on \"id\" property to render icons consistently on server and client\n let localCounter = 0;\n let id = props.id;\n if (typeof id === 'string') {\n // Convert '-' to '_' to avoid errors in animations\n id = id.replace(/-/g, '_');\n }\n // Add icon stuff\n componentProps.dangerouslySetInnerHTML = {\n __html: cleanUpInnerHTML(replaceIDs(item.body, id ? () => id + 'ID' + localCounter++ : 'iconifyReact')),\n };\n return createElement('svg', componentProps);\n }\n // Render <span> with style\n const { body, width, height } = icon;\n const useMask = mode === 'mask' ||\n (mode === 'bg' ? false : body.indexOf('currentColor') !== -1);\n // Generate SVG\n const html = iconToHTML(body, {\n ...renderAttribs,\n width: width + '',\n height: height + '',\n });\n // Generate style\n componentProps.style = {\n ...style,\n '--svg': svgToURL(html),\n 'width': fixSize(renderAttribs.width),\n 'height': fixSize(renderAttribs.height),\n ...commonProps,\n ...(useMask ? monotoneProps : coloredProps),\n ...customStyle,\n };\n return createElement('span', componentProps);\n};\n\n/**\n * Initialise stuff\n */\n// Enable short names\nallowSimpleNames(true);\n// Set API module\nsetAPIModule('', fetchAPIModule);\n/**\n * Browser stuff\n */\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n const _window = window;\n // Load icons from global \"IconifyPreload\"\n if (_window.IconifyPreload !== void 0) {\n const preload = _window.IconifyPreload;\n const err = 'Invalid IconifyPreload syntax.';\n if (typeof preload === 'object' && preload !== null) {\n (preload instanceof Array ? preload : [preload]).forEach((item) => {\n try {\n if (\n // Check if item is an object and not null/array\n typeof item !== 'object' ||\n item === null ||\n item instanceof Array ||\n // Check for 'icons' and 'prefix'\n typeof item.icons !== 'object' ||\n typeof item.prefix !== 'string' ||\n // Add icon set\n !addCollection(item)) {\n console.error(err);\n }\n }\n catch (e) {\n console.error(err);\n }\n });\n }\n }\n // Set API from global \"IconifyProviders\"\n if (_window.IconifyProviders !== void 0) {\n const providers = _window.IconifyProviders;\n if (typeof providers === 'object' && providers !== null) {\n for (let key in providers) {\n const err = 'IconifyProviders[' + key + '] is invalid.';\n try {\n const value = providers[key];\n if (typeof value !== 'object' ||\n !value ||\n value.resources === void 0) {\n continue;\n }\n if (!addAPIProvider(key, value)) {\n console.error(err);\n }\n }\n catch (e) {\n console.error(err);\n }\n }\n }\n }\n}\nfunction IconComponent(props) {\n const [mounted, setMounted] = useState(!!props.ssr);\n const [abort, setAbort] = useState({});\n // Get initial state\n function getInitialState(mounted) {\n if (mounted) {\n const name = props.icon;\n if (typeof name === 'object') {\n // Icon as object\n return {\n name: '',\n data: name,\n };\n }\n const data = getIconData(name);\n if (data) {\n return {\n name,\n data,\n };\n }\n }\n return {\n name: '',\n };\n }\n const [state, setState] = useState(getInitialState(!!props.ssr));\n // Cancel loading\n function cleanup() {\n const callback = abort.callback;\n if (callback) {\n callback();\n setAbort({});\n }\n }\n // Change state if it is different\n function changeState(newState) {\n if (JSON.stringify(state) !== JSON.stringify(newState)) {\n cleanup();\n setState(newState);\n return true;\n }\n }\n // Update state\n function updateState() {\n var _a;\n const name = props.icon;\n if (typeof name === 'object') {\n // Icon as object\n changeState({\n name: '',\n data: name,\n });\n return;\n }\n // New icon or got icon data\n const data = getIconData(name);\n if (changeState({\n name,\n data,\n })) {\n if (data === undefined) {\n // Load icon, update state when done\n const callback = loadIcons([name], updateState);\n setAbort({\n callback,\n });\n }\n else if (data) {\n // Icon data is available: trigger onLoad callback if present\n (_a = props.onLoad) === null || _a === void 0 ? void 0 : _a.call(props, name);\n }\n }\n }\n // Mounted state, cleanup for loader\n useEffect(() => {\n setMounted(true);\n return cleanup;\n }, []);\n // Icon changed or component mounted\n useEffect(() => {\n if (mounted) {\n updateState();\n }\n }, [props.icon, mounted]);\n // Render icon\n const { name, data } = state;\n if (!data) {\n return props.children\n ? props.children\n : props.fallback\n ? props.fallback\n : createElement('span', {});\n }\n return render({\n ...defaultIconProps,\n ...data,\n }, props, name);\n}\n/**\n * Block icon\n *\n * @param props - Component properties\n */\nconst Icon = forwardRef((props, ref) => IconComponent({\n ...props,\n _ref: ref,\n}));\n/**\n * Inline icon (has negative verticalAlign that makes it behave like icon font)\n *\n * @param props - Component properties\n */\nconst InlineIcon = forwardRef((props, ref) => IconComponent({\n inline: true,\n ...props,\n _ref: ref,\n}));\n/**\n * Internal API\n */\nconst _api = {\n getAPIConfig,\n setAPIModule,\n sendAPIQuery,\n setFetch,\n getFetch,\n listAPIProviders,\n};\n\nexport { Icon, InlineIcon, _api, addAPIProvider, addCollection, addIcon, iconToSVG as buildIcon, calculateSize, getIcon, iconLoaded, listIcons, loadIcon, loadIcons, replaceIDs, setCustomIconLoader, setCustomIconsLoader };\n","import { createSlice, type PayloadAction } from \"@reduxjs/toolkit\";\nimport type { SearchProduct } from \"../../components/graphQL/queries/types\";\n\ninterface ProductState {\n product: SearchProduct | null;\n}\n\nconst initialState: ProductState = {\n product: null,\n};\n\nexport const productSlice = createSlice({\n name: \"product\",\n initialState,\n reducers: {\n setProduct: (state, action: PayloadAction<SearchProduct | null>) => {\n state.product = action.payload;\n },\n },\n});\n\nexport const { setProduct } = productSlice.actions;\n\nexport default productSlice.reducer;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useDispatch } from \"react-redux\";\nimport type { SearchProduct } from \"../graphQL/queries/types\";\nimport {\n stringReducer,\n priceFormatter,\n currencyFormatter,\n displayData,\n imageUrlArray,\n} from \"../utils/helper\";\nimport { Icon } from \"@iconify/react/dist/iconify.js\";\nimport { useEffect, useState } from \"react\";\nimport { setProduct } from \"../../store/reducers/productReducer\";\nimport { getProductById } from \"../utils\";\n\nfunction useResponsiveProductsPerPage() {\n const getProductsPerPage = () => {\n if (window.innerWidth < 425) return 1; // Below Mobile-L\n if (window.innerWidth < 768) return 2; // Mobile-L to md\n return 4; // md and above\n };\n\n const [productsPerPage, setProductsPerPage] = useState(getProductsPerPage);\n\n useEffect(() => {\n const handleResize = () => setProductsPerPage(getProductsPerPage());\n window.addEventListener(\"resize\", handleResize);\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n\n return productsPerPage;\n}\n\nconst ProductCarousel = ({\n product,\n}: // storeDetails,\n{\n product: SearchProduct[];\n storeDetails: any;\n}) => {\n const dispatch = useDispatch();\n // const selectedProduct = useSelector((state: any) => state.product.product);\n const productsPerPage = useResponsiveProductsPerPage();\n const [startIndex, setStartIndex] = useState(0);\n\n const nextProducts = () => {\n setStartIndex((prevIndex) =>\n prevIndex + productsPerPage >= product.length\n ? 0\n : prevIndex + productsPerPage\n );\n };\n\n const prevProducts = () => {\n setStartIndex((prevIndex) =>\n prevIndex - productsPerPage < 0\n ? product.length - (product.length % productsPerPage || productsPerPage)\n : prevIndex - productsPerPage\n );\n };\n\n const getProduct = async (id: number | string) => {\n const product = await getProductById(id);\n dispatch(setProduct(product));\n };\n\n return (\n <div className=\"mt-2 overflow-x-hidden\">\n <div className=\"flex items-center justify-center gap-4 relative\">\n {product?.length > productsPerPage && (\n <button\n onClick={prevProducts}\n className=\"absolute z-50 left-0 text-[#000000] bg-[#ffffff] rounded-full p-2 flex items-center h-fit\"\n // style={{ color: storeDetails.tanyaThemeColor }}\n >\n <Icon icon=\"mdi:chevron-left\" width=\"25\" />\n </button>\n )}\n\n <div className=\"flex gap-5 justify-center flex-1 overflow-hidden\">\n {product\n .slice(startIndex, startIndex + productsPerPage)\n .map((prod) => (\n <div\n key={prod.productId}\n className=\"flex-shrink-0 flex flex-col w-[150px] h-[200px] p-2 items-center justify-between cursor-pointer bg-[#FFFFFF] rounded-[10px] shadow-[0px_2px_2px_0px_#9292BC40]\"\n onClick={() => {\n getProduct(prod.product_id ?? prod.productId);\n }}\n >\n {/* Image */}\n <div className=\"w-full p-2 flex items-center justify-center bg-white\">\n <img\n src={\n imageUrlArray(prod)[0]?.link ||\n imageUrlArray(prod)[0] || // fallback if it's a string\n \"https://via.placeholder.com/120\"\n }\n alt={prod?.productName ? prod.productName : \"Product\"}\n className=\"w-28 h-28 rounded-[10px] transition-transform duration-300 hover:scale-125 object-cover\"\n />\n </div>\n\n {/* Price & Name */}\n <div\n className=\"text-white w-full p-2 text-[12px] text-center h-[60px]\"\n // style={{ background: storeDetails.tanyaThemeColor }}\n >\n <div className=\"relative inline-block group\">\n <div className=\"w-full line-clamp-1 overflow-hidden text-ellipsis text-[#000000] font-medium font-nunitoSans\">\n {prod?.productName\n ? prod.productName\n : prod?.product_name\n ? prod.product_name\n : stringReducer(\n displayData(prod?.name?.[\"en-US\"]),\n 60\n ) || \"Product\"}\n </div>\n\n {/* Tooltip */}\n <div\n className=\"absolute left-0 top-full mt-1 w-max max-w-[200px] p-2 bg-white shadow-lg text-black text-xs rounded opacity-0 transition-opacity duration-300 group-hover:opacity-100 z-50 pointer-events-auto\"\n style={{\n position: \"absolute\",\n top: \"-100%\",\n left: \"0\",\n marginBottom: \"5px\",\n zIndex: 50,\n }}\n >\n {prod?.productName\n ? prod.productName\n : prod?.product_name\n ? prod.product_name\n : stringReducer(\n displayData(prod?.name?.[\"en-US\"]),\n 60\n ) || \"Product\"}\n </div>\n </div>\n <div className=\" flex text-center items-center gap-2 text-[14px] text-[#14121F] font-bold font-nunitoSans text-base mb-1\">\n <p>\n {currencyFormatter(\n prod?.price\n ? Number(prod?.price)\n : priceFormatter(prod).centAmount || 0,\n priceFormatter(prod)?.currencyCode\n )}\n </p>\n <p className=\"text-[#14121F] font-normal line-through text-sm font-nunitoSans truncate\">\n ${Number(prod?.price).toFixed(2) ?? 0 + 5}\n </p>\n </div>\n </div>\n </div>\n ))}\n </div>\n\n {product?.length > productsPerPage && (\n <button\n onClick={nextProducts}\n className=\"absolute z-50 right-0 text-[#000000] bg-[#ffffff] rounded-full p-2 flex items-center h-fit\"\n // style={{ color: storeDetails.tanyaThemeColor }}\n >\n <Icon icon=\"mdi:chevron-right\" width=\"25\" />\n </button>\n )}\n </div>\n </div>\n );\n};\n\nexport default ProductCarousel;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport ProductCarousel from \"./ProductCarousel\";\nimport { initialCapital } from \"../utils/helper\";\n\nconst ProductDisplay = ({ chat, storeDetails }: any) => {\n return (\n <div className=\"bg-[#FFFFFF] px-7 py-4 rounded-r-xl rounded-bl-2xl w-full\">\n {chat.map((products: any, i: number) => (\n <div\n key={i}\n className=\"mb-4 p-3 rounded-xl\"\n style={{ \n background: \"linear-gradient(109.52deg, #F0EEF5 36.91%, #F4F3EE 100.34%\",\n // backgroundColor: storeDetails.tanyaThemeColorLight \n }} // slightly darker grey // light grey section bg\n >\n <div\n className=\"font-nunitoSans font-bold text-sm text-[#494949] p-2 w-fit rounded-[20px]\"\n // style={{\n // color: storeDetails?.tanyaThemeContrastColor,\n // border: `1px solid ${storeDetails.tanyaThemeColor}`,\n // backgroundColor: storeDetails.tanyaThemeColor,\n // }}\n >\n {initialCapital(products.keyword) || \"No keyword\"}\n </div>\n\n <ProductCarousel\n product={products.items}\n storeDetails={storeDetails}\n />\n </div>\n ))}\n </div>\n );\n};\n\nexport default ProductDisplay;\n","import { apiConfig } from \"../../config/api\";\nimport { clientId, getHost, getSiteId, organisationId, shortCode } from \"../utils\";\nimport { getAccessToken } from \"../utils/getAccessToken\";\nimport axios from \"axios\";\n\nexport const fetchStoreConfig = async (storeCode: string) => {\n try {\n const token = await getAccessToken();\n const { serverUrl } = apiConfig();\n const response = await axios.get(\n `${serverUrl}api/logo?storeCode=${storeCode}`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${token}`,\n },\n }\n );\n return response.data;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n return error;\n // console.error(\"Error fetching logo details:\", error);\n }\n};\n\ninterface Product {\n product_id: string;\n quantity: number;\n}\n\nexport const createBasket = async (customer_token: string, data?: any) => {\n const { serverUrl, basePath } = apiConfig();\n const URL = `${serverUrl}`;\n console.log(\"customer_token \\n\", customer_token);\n try {\n const response = await axios.post(\n `${URL}${basePath}/basket/create?baseUrl=${getHost()}&siteId=${getSiteId()}&pubCfg=${clientId()}&envRef=${shortCode()}&orgRef=${organisationId()}`,\n data,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: customer_token,\n },\n }\n );\n\n return response.data;\n } catch (error) {\n if (axios.isAxiosError(error)) {\n console.error(\"Error creating basket:\", error.response || error.message);\n } else {\n console.error(\"Unexpected error:\", error);\n }\n return null;\n }\n};\n\nexport const addProductToBasket = async (\n basketId: string,\n products: Product[],\n customer_token: string\n) => {\n const { serverUrl, basePath } = apiConfig();\n const URL = `${serverUrl}`;\n try {\n const response = await axios.post(\n `${URL}${basePath}/basket/add-product/${basketId}?baseUrl=${getHost()}&siteId=${getSiteId()}&pubCfg=${clientId()}&envRef=${shortCode()}&orgRef=${organisationId()}`,\n products,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: customer_token,\n },\n }\n );\n\n if (response.status === 200 && response.data) {\n return response.data;\n }\n return null;\n } catch (error) {\n if (axios.isAxiosError(error)) {\n console.error(\n \"Error adding products to basket:\",\n error.response || error.message\n );\n } else {\n console.error(\"Unexpected error:\", error);\n }\n return null;\n }\n};\n\nexport const fetchBasket = async ({\n basketId,\n customer_token,\n}: {\n basketId: string;\n customer_token: string;\n}) => {\n const { serverUrl, basePath } = apiConfig();\n const URL = `${serverUrl}`;\n try {\n const response = await axios.get(\n `${URL}${basePath}/basket/${basketId}?baseUrl=${getHost()}&siteId=${getSiteId()}&pubCfg=${clientId()}&envRef=${shortCode()}&orgRef=${organisationId()}`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: customer_token,\n },\n }\n );\n return { status: response.status, data: response.data };\n } catch (error) {\n if (axios.isAxiosError(error)) {\n return { status: error.response?.status, data: null };\n } else {\n return { status: null, data: null };\n }\n }\n};\n","export const BASKET_ID_KEY = \"sfcc_basket_id\";\r\nexport const TOKEN_KEY = \"sfcc_customer_token\";\r\nexport const TOKEN_EXPIRY_KEY = \"sfcc_token_expiry\";\r\n\r\nexport const EXPIRY_TIME = 5 * 60 * 1000; // 5 minutes in milliseconds\r\nexport const BUFFER_TIME = 10 * 1000; // 10 seconds buffer before expiry\r\nexport const VERSION = \"1.0.0\";","import {\r\n BASKET_ID_KEY,\r\n EXPIRY_TIME,\r\n TOKEN_EXPIRY_KEY,\r\n TOKEN_KEY,\r\n} from \"../../config/constant\";\r\n\r\nexport const getStoredBasketId = (): string | null => {\r\n try {\r\n return localStorage.getItem(BASKET_ID_KEY);\r\n } catch (error) {\r\n console.error(\"Error reading basket ID from storage:\", error);\r\n return null;\r\n }\r\n};\r\n\r\nexport const setStoredBasketId = (basketId: string | null): void => {\r\n try {\r\n if (basketId) {\r\n localStorage.setItem(BASKET_ID_KEY, basketId);\r\n } else {\r\n localStorage.removeItem(BASKET_ID_KEY);\r\n }\r\n } catch (error) {\r\n console.error(\"Error saving basket ID to storage:\", error);\r\n }\r\n};\r\n\r\nexport const clearBasketStorage = (): void => {\r\n try {\r\n localStorage.removeItem(BASKET_ID_KEY);\r\n } catch (error) {\r\n console.error(\"Error clearing basket storage:\", error);\r\n }\r\n};\r\n\r\nexport const getStoredToken = (): string | null => {\r\n try {\r\n return localStorage.getItem(TOKEN_KEY);\r\n } catch (error) {\r\n console.error(\"Error reading token:\", error);\r\n return null;\r\n }\r\n};\r\n\r\nexport const setStoredToken = (token: string | null): void => {\r\n try {\r\n if (token) {\r\n localStorage.setItem(TOKEN_KEY, token);\r\n const expiryTime = Date.now() + EXPIRY_TIME;\r\n localStorage.setItem(TOKEN_EXPIRY_KEY, expiryTime.toString());\r\n } else {\r\n localStorage.removeItem(TOKEN_KEY);\r\n }\r\n } catch (error) {\r\n console.error(\"Error storing token:\", error);\r\n }\r\n};\r\n","\"use client\";\nfunction Mt(t){if(!t||typeof document==\"undefined\")return;let o=document.head||document.getElementsByTagName(\"head\")[0],e=document.createElement(\"style\");e.type=\"text/css\",o.firstChild?o.insertBefore(e,o.firstChild):o.appendChild(e),e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}Mt(`:root{--toastify-color-light: #fff;--toastify-color-dark: #121212;--toastify-color-info: #3498db;--toastify-color-success: #07bc0c;--toastify-color-warning: #f1c40f;--toastify-color-error: hsl(6, 78%, 57%);--toastify-color-transparent: rgba(255, 255, 255, .7);--toastify-icon-color-info: var(--toastify-color-info);--toastify-icon-color-success: var(--toastify-color-success);--toastify-icon-color-warning: var(--toastify-color-warning);--toastify-icon-color-error: var(--toastify-color-error);--toastify-container-width: fit-content;--toastify-toast-width: 320px;--toastify-toast-offset: 16px;--toastify-toast-top: max(var(--toastify-toast-offset), env(safe-area-inset-top));--toastify-toast-right: max(var(--toastify-toast-offset), env(safe-area-inset-right));--toastify-toast-left: max(var(--toastify-toast-offset), env(safe-area-inset-left));--toastify-toast-bottom: max(var(--toastify-toast-offset), env(safe-area-inset-bottom));--toastify-toast-background: #fff;--toastify-toast-padding: 14px;--toastify-toast-min-height: 64px;--toastify-toast-max-height: 800px;--toastify-toast-bd-radius: 6px;--toastify-toast-shadow: 0px 4px 12px rgba(0, 0, 0, .1);--toastify-font-family: sans-serif;--toastify-z-index: 9999;--toastify-text-color-light: #757575;--toastify-text-color-dark: #fff;--toastify-text-color-info: #fff;--toastify-text-color-success: #fff;--toastify-text-color-warning: #fff;--toastify-text-color-error: #fff;--toastify-spinner-color: #616161;--toastify-spinner-color-empty-area: #e0e0e0;--toastify-color-progress-light: linear-gradient(to right, #4cd964, #5ac8fa, #007aff, #34aadc, #5856d6, #ff2d55);--toastify-color-progress-dark: #bb86fc;--toastify-color-progress-info: var(--toastify-color-info);--toastify-color-progress-success: var(--toastify-color-success);--toastify-color-progress-warning: var(--toastify-color-warning);--toastify-color-progress-error: var(--toastify-color-error);--toastify-color-progress-bgo: .2}.Toastify__toast-container{z-index:var(--toastify-z-index);-webkit-transform:translate3d(0,0,var(--toastify-z-index));position:fixed;width:var(--toastify-container-width);box-sizing:border-box;color:#fff;display:flex;flex-direction:column}.Toastify__toast-container--top-left{top:var(--toastify-toast-top);left:var(--toastify-toast-left)}.Toastify__toast-container--top-center{top:var(--toastify-toast-top);left:50%;transform:translate(-50%);align-items:center}.Toastify__toast-container--top-right{top:var(--toastify-toast-top);right:var(--toastify-toast-right);align-items:end}.Toastify__toast-container--bottom-left{bottom:var(--toastify-toast-bottom);left:var(--toastify-toast-left)}.Toastify__toast-container--bottom-center{bottom:var(--toastify-toast-bottom);left:50%;transform:translate(-50%);align-items:center}.Toastify__toast-container--bottom-right{bottom:var(--toastify-toast-bottom);right:var(--toastify-toast-right);align-items:end}.Toastify__toast{--y: 0;position:relative;touch-action:none;width:var(--toastify-toast-width);min-height:var(--toastify-toast-min-height);box-sizing:border-box;margin-bottom:1rem;padding:var(--toastify-toast-padding);border-radius:var(--toastify-toast-bd-radius);box-shadow:var(--toastify-toast-shadow);max-height:var(--toastify-toast-max-height);font-family:var(--toastify-font-family);z-index:0;display:flex;flex:1 auto;align-items:center;word-break:break-word}@media only screen and (max-width: 480px){.Toastify__toast-container{width:100vw;left:env(safe-area-inset-left);margin:0}.Toastify__toast-container--top-left,.Toastify__toast-container--top-center,.Toastify__toast-container--top-right{top:env(safe-area-inset-top);transform:translate(0)}.Toastify__toast-container--bottom-left,.Toastify__toast-container--bottom-center,.Toastify__toast-container--bottom-right{bottom:env(safe-area-inset-bottom);transform:translate(0)}.Toastify__toast-container--rtl{right:env(safe-area-inset-right);left:initial}.Toastify__toast{--toastify-toast-width: 100%;margin-bottom:0;border-radius:0}}.Toastify__toast-container[data-stacked=true]{width:var(--toastify-toast-width)}.Toastify__toast--stacked{position:absolute;width:100%;transform:translate3d(0,var(--y),0) scale(var(--s));transition:transform .3s}.Toastify__toast--stacked[data-collapsed] .Toastify__toast-body,.Toastify__toast--stacked[data-collapsed] .Toastify__close-button{transition:opacity .1s}.Toastify__toast--stacked[data-collapsed=false]{overflow:visible}.Toastify__toast--stacked[data-collapsed=true]:not(:last-child)>*{opacity:0}.Toastify__toast--stacked:after{content:\"\";position:absolute;left:0;right:0;height:calc(var(--g) * 1px);bottom:100%}.Toastify__toast--stacked[data-pos=top]{top:0}.Toastify__toast--stacked[data-pos=bot]{bottom:0}.Toastify__toast--stacked[data-pos=bot].Toastify__toast--stacked:before{transform-origin:top}.Toastify__toast--stacked[data-pos=top].Toastify__toast--stacked:before{transform-origin:bottom}.Toastify__toast--stacked:before{content:\"\";position:absolute;left:0;right:0;bottom:0;height:100%;transform:scaleY(3);z-index:-1}.Toastify__toast--rtl{direction:rtl}.Toastify__toast--close-on-click{cursor:pointer}.Toastify__toast-icon{margin-inline-end:10px;width:22px;flex-shrink:0;display:flex}.Toastify--animate{animation-fill-mode:both;animation-duration:.5s}.Toastify--animate-icon{animation-fill-mode:both;animation-duration:.3s}.Toastify__toast-theme--dark{background:var(--toastify-color-dark);color:var(--toastify-text-color-dark)}.Toastify__toast-theme--light,.Toastify__toast-theme--colored.Toastify__toast--default{background:var(--toastify-color-light);color:var(--toastify-text-color-light)}.Toastify__toast-theme--colored.Toastify__toast--info{color:var(--toastify-text-color-info);background:var(--toastify-color-info)}.Toastify__toast-theme--colored.Toastify__toast--success{color:var(--toastify-text-color-success);background:var(--toastify-color-success)}.Toastify__toast-theme--colored.Toastify__toast--warning{color:var(--toastify-text-color-warning);background:var(--toastify-color-warning)}.Toastify__toast-theme--colored.Toastify__toast--error{color:var(--toastify-text-color-error);background:var(--toastify-color-error)}.Toastify__progress-bar-theme--light{background:var(--toastify-color-progress-light)}.Toastify__progress-bar-theme--dark{background:var(--toastify-color-progress-dark)}.Toastify__progress-bar--info{background:var(--toastify-color-progress-info)}.Toastify__progress-bar--success{background:var(--toastify-color-progress-success)}.Toastify__progress-bar--warning{background:var(--toastify-color-progress-warning)}.Toastify__progress-bar--error{background:var(--toastify-color-progress-error)}.Toastify__progress-bar-theme--colored.Toastify__progress-bar--info,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--success,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--warning,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--error{background:var(--toastify-color-transparent)}.Toastify__close-button{color:#fff;position:absolute;top:6px;right:6px;background:transparent;outline:none;border:none;padding:0;cursor:pointer;opacity:.7;transition:.3s ease;z-index:1}.Toastify__toast--rtl .Toastify__close-button{left:6px;right:unset}.Toastify__close-button--light{color:#000;opacity:.3}.Toastify__close-button>svg{fill:currentColor;height:16px;width:14px}.Toastify__close-button:hover,.Toastify__close-button:focus{opacity:1}@keyframes Toastify__trackProgress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.Toastify__progress-bar{position:absolute;bottom:0;left:0;width:100%;height:100%;z-index:1;opacity:.7;transform-origin:left}.Toastify__progress-bar--animated{animation:Toastify__trackProgress linear 1 forwards}.Toastify__progress-bar--controlled{transition:transform .2s}.Toastify__progress-bar--rtl{right:0;left:initial;transform-origin:right;border-bottom-left-radius:initial}.Toastify__progress-bar--wrp{position:absolute;overflow:hidden;bottom:0;left:0;width:100%;height:5px;border-bottom-left-radius:var(--toastify-toast-bd-radius);border-bottom-right-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--wrp[data-hidden=true]{opacity:0}.Toastify__progress-bar--bg{opacity:var(--toastify-color-progress-bgo);width:100%;height:100%}.Toastify__spinner{width:20px;height:20px;box-sizing:border-box;border:2px solid;border-radius:100%;border-color:var(--toastify-spinner-color-empty-area);border-right-color:var(--toastify-spinner-color);animation:Toastify__spin .65s linear infinite}@keyframes Toastify__bounceInRight{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutRight{20%{opacity:1;transform:translate3d(-20px,var(--y),0)}to{opacity:0;transform:translate3d(2000px,var(--y),0)}}@keyframes Toastify__bounceInLeft{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutLeft{20%{opacity:1;transform:translate3d(20px,var(--y),0)}to{opacity:0;transform:translate3d(-2000px,var(--y),0)}}@keyframes Toastify__bounceInUp{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes Toastify__bounceOutUp{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes Toastify__bounceInDown{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes Toastify__bounceOutDown{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,2000px,0)}}.Toastify__bounce-enter--top-left,.Toastify__bounce-enter--bottom-left{animation-name:Toastify__bounceInLeft}.Toastify__bounce-enter--top-right,.Toastify__bounce-enter--bottom-right{animation-name:Toastify__bounceInRight}.Toastify__bounce-enter--top-center{animation-name:Toastify__bounceInDown}.Toastify__bounce-enter--bottom-center{animation-name:Toastify__bounceInUp}.Toastify__bounce-exit--top-left,.Toastify__bounce-exit--bottom-left{animation-name:Toastify__bounceOutLeft}.Toastify__bounce-exit--top-right,.Toastify__bounce-exit--bottom-right{animation-name:Toastify__bounceOutRight}.Toastify__bounce-exit--top-center{animation-name:Toastify__bounceOutUp}.Toastify__bounce-exit--bottom-center{animation-name:Toastify__bounceOutDown}@keyframes Toastify__zoomIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes Toastify__zoomOut{0%{opacity:1}50%{opacity:0;transform:translate3d(0,var(--y),0) scale3d(.3,.3,.3)}to{opacity:0}}.Toastify__zoom-enter{animation-name:Toastify__zoomIn}.Toastify__zoom-exit{animation-name:Toastify__zoomOut}@keyframes Toastify__flipIn{0%{transform:perspective(400px) rotateX(90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}@keyframes Toastify__flipOut{0%{transform:translate3d(0,var(--y),0) perspective(400px)}30%{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(-20deg);opacity:1}to{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(90deg);opacity:0}}.Toastify__flip-enter{animation-name:Toastify__flipIn}.Toastify__flip-exit{animation-name:Toastify__flipOut}@keyframes Toastify__slideInRight{0%{transform:translate3d(110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInLeft{0%{transform:translate3d(-110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInUp{0%{transform:translate3d(0,110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInDown{0%{transform:translate3d(0,-110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideOutRight{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(110%,var(--y),0)}}@keyframes Toastify__slideOutLeft{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(-110%,var(--y),0)}}@keyframes Toastify__slideOutDown{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,500px,0)}}@keyframes Toastify__slideOutUp{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,-500px,0)}}.Toastify__slide-enter--top-left,.Toastify__slide-enter--bottom-left{animation-name:Toastify__slideInLeft}.Toastify__slide-enter--top-right,.Toastify__slide-enter--bottom-right{animation-name:Toastify__slideInRight}.Toastify__slide-enter--top-center{animation-name:Toastify__slideInDown}.Toastify__slide-enter--bottom-center{animation-name:Toastify__slideInUp}.Toastify__slide-exit--top-left,.Toastify__slide-exit--bottom-left{animation-name:Toastify__slideOutLeft;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--top-right,.Toastify__slide-exit--bottom-right{animation-name:Toastify__slideOutRight;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--top-center{animation-name:Toastify__slideOutUp;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--bottom-center{animation-name:Toastify__slideOutDown;animation-timing-function:ease-in;animation-duration:.3s}@keyframes Toastify__spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n`);import{isValidElement as $t}from\"react\";var L=t=>typeof t==\"number\"&&!isNaN(t),N=t=>typeof t==\"string\",P=t=>typeof t==\"function\",mt=t=>N(t)||L(t),B=t=>N(t)||P(t)?t:null,pt=(t,o)=>t===!1||L(t)&&t>0?t:o,z=t=>$t(t)||N(t)||P(t)||L(t);import ut,{useEffect as Rt,useLayoutEffect as Bt,useRef as zt}from\"react\";function Z(t,o,e=300){let{scrollHeight:r,style:s}=t;requestAnimationFrame(()=>{s.minHeight=\"initial\",s.height=r+\"px\",s.transition=`all ${e}ms`,requestAnimationFrame(()=>{s.height=\"0\",s.padding=\"0\",s.margin=\"0\",setTimeout(o,e)})})}function $({enter:t,exit:o,appendPosition:e=!1,collapse:r=!0,collapseDuration:s=300}){return function({children:a,position:d,preventExitTransition:c,done:T,nodeRef:g,isIn:v,playToast:x}){let C=e?`${t}--${d}`:t,S=e?`${o}--${d}`:o,E=zt(0);return Bt(()=>{let f=g.current,p=C.split(\" \"),b=n=>{n.target===g.current&&(x(),f.removeEventListener(\"animationend\",b),f.removeEventListener(\"animationcancel\",b),E.current===0&&n.type!==\"animationcancel\"&&f.classList.remove(...p))};(()=>{f.classList.add(...p),f.addEventListener(\"animationend\",b),f.addEventListener(\"animationcancel\",b)})()},[]),Rt(()=>{let f=g.current,p=()=>{f.removeEventListener(\"animationend\",p),r?Z(f,T,s):T()};v||(c?p():(()=>{E.current=1,f.className+=` ${S}`,f.addEventListener(\"animationend\",p)})())},[v]),ut.createElement(ut.Fragment,null,a)}}import{cloneElement as Ft,isValidElement as Ut}from\"react\";function J(t,o){return{content:tt(t.content,t.props),containerId:t.props.containerId,id:t.props.toastId,theme:t.props.theme,type:t.props.type,data:t.props.data||{},isLoading:t.props.isLoading,icon:t.props.icon,reason:t.removalReason,status:o}}function tt(t,o,e=!1){return Ut(t)&&!N(t.type)?Ft(t,{closeToast:o.closeToast,toastProps:o,data:o.data,isPaused:e}):P(t)?t({closeToast:o.closeToast,toastProps:o,data:o.data,isPaused:e}):t}import ot from\"react\";function yt({closeToast:t,theme:o,ariaLabel:e=\"close\"}){return ot.createElement(\"button\",{className:`Toastify__close-button Toastify__close-button--${o}`,type:\"button\",onClick:r=>{r.stopPropagation(),t(!0)},\"aria-label\":e},ot.createElement(\"svg\",{\"aria-hidden\":\"true\",viewBox:\"0 0 14 16\"},ot.createElement(\"path\",{fillRule:\"evenodd\",d:\"M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z\"})))}import et from\"react\";import Tt from\"clsx\";function gt({delay:t,isRunning:o,closeToast:e,type:r=\"default\",hide:s,className:l,controlledProgress:a,progress:d,rtl:c,isIn:T,theme:g}){let v=s||a&&d===0,x={animationDuration:`${t}ms`,animationPlayState:o?\"running\":\"paused\"};a&&(x.transform=`scaleX(${d})`);let C=Tt(\"Toastify__progress-bar\",a?\"Toastify__progress-bar--controlled\":\"Toastify__progress-bar--animated\",`Toastify__progress-bar-theme--${g}`,`Toastify__progress-bar--${r}`,{[\"Toastify__progress-bar--rtl\"]:c}),S=P(l)?l({rtl:c,type:r,defaultClassName:C}):Tt(C,l),E={[a&&d>=1?\"onTransitionEnd\":\"onAnimationEnd\"]:a&&d<1?null:()=>{T&&e()}};return et.createElement(\"div\",{className:\"Toastify__progress-bar--wrp\",\"data-hidden\":v},et.createElement(\"div\",{className:`Toastify__progress-bar--bg Toastify__progress-bar-theme--${g} Toastify__progress-bar--${r}`}),et.createElement(\"div\",{role:\"progressbar\",\"aria-hidden\":v?\"true\":\"false\",\"aria-label\":\"notification timer\",className:S,style:x,...E}))}import Dt from\"clsx\";import ct,{useEffect as yo,useRef as To,useState as go}from\"react\";var Xt=1,at=()=>`${Xt++}`;function _t(t,o,e){let r=1,s=0,l=[],a=[],d=o,c=new Map,T=new Set,g=i=>(T.add(i),()=>T.delete(i)),v=()=>{a=Array.from(c.values()),T.forEach(i=>i())},x=({containerId:i,toastId:n,updateId:u})=>{let h=i?i!==t:t!==1,m=c.has(n)&&u==null;return h||m},C=(i,n)=>{c.forEach(u=>{var h;(n==null||n===u.props.toastId)&&((h=u.toggle)==null||h.call(u,i))})},S=i=>{var n,u;(u=(n=i.props)==null?void 0:n.onClose)==null||u.call(n,i.removalReason),i.isActive=!1},E=i=>{if(i==null)c.forEach(S);else{let n=c.get(i);n&&S(n)}v()},f=()=>{s-=l.length,l=[]},p=i=>{var m,_;let{toastId:n,updateId:u}=i.props,h=u==null;i.staleId&&c.delete(i.staleId),i.isActive=!0,c.set(n,i),v(),e(J(i,h?\"added\":\"updated\")),h&&((_=(m=i.props).onOpen)==null||_.call(m))};return{id:t,props:d,observe:g,toggle:C,removeToast:E,toasts:c,clearQueue:f,buildToast:(i,n)=>{if(x(n))return;let{toastId:u,updateId:h,data:m,staleId:_,delay:k}=n,M=h==null;M&&s++;let A={...d,style:d.toastStyle,key:r++,...Object.fromEntries(Object.entries(n).filter(([D,Y])=>Y!=null)),toastId:u,updateId:h,data:m,isIn:!1,className:B(n.className||d.toastClassName),progressClassName:B(n.progressClassName||d.progressClassName),autoClose:n.isLoading?!1:pt(n.autoClose,d.autoClose),closeToast(D){c.get(u).removalReason=D,E(u)},deleteToast(){let D=c.get(u);if(D!=null){if(e(J(D,\"removed\")),c.delete(u),s--,s<0&&(s=0),l.length>0){p(l.shift());return}v()}}};A.closeButton=d.closeButton,n.closeButton===!1||z(n.closeButton)?A.closeButton=n.closeButton:n.closeButton===!0&&(A.closeButton=z(d.closeButton)?d.closeButton:!0);let R={content:i,props:A,staleId:_};d.limit&&d.limit>0&&s>d.limit&&M?l.push(R):L(k)?setTimeout(()=>{p(R)},k):p(R)},setProps(i){d=i},setToggle:(i,n)=>{let u=c.get(i);u&&(u.toggle=n)},isToastActive:i=>{var n;return(n=c.get(i))==null?void 0:n.isActive},getSnapshot:()=>a}}var I=new Map,F=[],st=new Set,Vt=t=>st.forEach(o=>o(t)),bt=()=>I.size>0;function Qt(){F.forEach(t=>nt(t.content,t.options)),F=[]}var vt=(t,{containerId:o})=>{var e;return(e=I.get(o||1))==null?void 0:e.toasts.get(t)};function X(t,o){var r;if(o)return!!((r=I.get(o))!=null&&r.isToastActive(t));let e=!1;return I.forEach(s=>{s.isToastActive(t)&&(e=!0)}),e}function ht(t){if(!bt()){F=F.filter(o=>t!=null&&o.options.toastId!==t);return}if(t==null||mt(t))I.forEach(o=>{o.removeToast(t)});else if(t&&(\"containerId\"in t||\"id\"in t)){let o=I.get(t.containerId);o?o.removeToast(t.id):I.forEach(e=>{e.removeToast(t.id)})}}var Ct=(t={})=>{I.forEach(o=>{o.props.limit&&(!t.containerId||o.id===t.containerId)&&o.clearQueue()})};function nt(t,o){z(t)&&(bt()||F.push({content:t,options:o}),I.forEach(e=>{e.buildToast(t,o)}))}function xt(t){var o;(o=I.get(t.containerId||1))==null||o.setToggle(t.id,t.fn)}function rt(t,o){I.forEach(e=>{(o==null||!(o!=null&&o.containerId)||(o==null?void 0:o.containerId)===e.id)&&e.toggle(t,o==null?void 0:o.id)})}function Et(t){let o=t.containerId||1;return{subscribe(e){let r=_t(o,t,Vt);I.set(o,r);let s=r.observe(e);return Qt(),()=>{s(),I.delete(o)}},setProps(e){var r;(r=I.get(o))==null||r.setProps(e)},getSnapshot(){var e;return(e=I.get(o))==null?void 0:e.getSnapshot()}}}function Pt(t){return st.add(t),()=>{st.delete(t)}}function Wt(t){return t&&(N(t.toastId)||L(t.toastId))?t.toastId:at()}function U(t,o){return nt(t,o),o.toastId}function V(t,o){return{...o,type:o&&o.type||t,toastId:Wt(o)}}function Q(t){return(o,e)=>U(o,V(t,e))}function y(t,o){return U(t,V(\"default\",o))}y.loading=(t,o)=>U(t,V(\"default\",{isLoading:!0,autoClose:!1,closeOnClick:!1,closeButton:!1,draggable:!1,...o}));function Gt(t,{pending:o,error:e,success:r},s){let l;o&&(l=N(o)?y.loading(o,s):y.loading(o.render,{...s,...o}));let a={isLoading:null,autoClose:null,closeOnClick:null,closeButton:null,draggable:null},d=(T,g,v)=>{if(g==null){y.dismiss(l);return}let x={type:T,...a,...s,data:v},C=N(g)?{render:g}:g;return l?y.update(l,{...x,...C}):y(C.render,{...x,...C}),v},c=P(t)?t():t;return c.then(T=>d(\"success\",r,T)).catch(T=>d(\"error\",e,T)),c}y.promise=Gt;y.success=Q(\"success\");y.info=Q(\"info\");y.error=Q(\"error\");y.warning=Q(\"warning\");y.warn=y.warning;y.dark=(t,o)=>U(t,V(\"default\",{theme:\"dark\",...o}));function qt(t){ht(t)}y.dismiss=qt;y.clearWaitingQueue=Ct;y.isActive=X;y.update=(t,o={})=>{let e=vt(t,o);if(e){let{props:r,content:s}=e,l={delay:100,...r,...o,toastId:o.toastId||t,updateId:at()};l.toastId!==t&&(l.staleId=t);let a=l.render||s;delete l.render,U(a,l)}};y.done=t=>{y.update(t,{progress:1})};y.onChange=Pt;y.play=t=>rt(!0,t);y.pause=t=>rt(!1,t);import{useRef as Kt,useSyncExternalStore as Yt}from\"react\";function It(t){var a;let{subscribe:o,getSnapshot:e,setProps:r}=Kt(Et(t)).current;r(t);let s=(a=Yt(o,e,e))==null?void 0:a.slice();function l(d){if(!s)return[];let c=new Map;return t.newestOnTop&&s.reverse(),s.forEach(T=>{let{position:g}=T.props;c.has(g)||c.set(g,[]),c.get(g).push(T)}),Array.from(c,T=>d(T[0],T[1]))}return{getToastToRender:l,isToastActive:X,count:s==null?void 0:s.length}}import{useEffect as Zt,useRef as St,useState as kt}from\"react\";function At(t){let[o,e]=kt(!1),[r,s]=kt(!1),l=St(null),a=St({start:0,delta:0,removalDistance:0,canCloseOnClick:!0,canDrag:!1,didMove:!1}).current,{autoClose:d,pauseOnHover:c,closeToast:T,onClick:g,closeOnClick:v}=t;xt({id:t.toastId,containerId:t.containerId,fn:e}),Zt(()=>{if(t.pauseOnFocusLoss)return x(),()=>{C()}},[t.pauseOnFocusLoss]);function x(){document.hasFocus()||p(),window.addEventListener(\"focus\",f),window.addEventListener(\"blur\",p)}function C(){window.removeEventListener(\"focus\",f),window.removeEventListener(\"blur\",p)}function S(m){if(t.draggable===!0||t.draggable===m.pointerType){b();let _=l.current;a.canCloseOnClick=!0,a.canDrag=!0,_.style.transition=\"none\",t.draggableDirection===\"x\"?(a.start=m.clientX,a.removalDistance=_.offsetWidth*(t.draggablePercent/100)):(a.start=m.clientY,a.removalDistance=_.offsetHeight*(t.draggablePercent===80?t.draggablePercent*1.5:t.draggablePercent)/100)}}function E(m){let{top:_,bottom:k,left:M,right:A}=l.current.getBoundingClientRect();m.nativeEvent.type!==\"touchend\"&&t.pauseOnHover&&m.clientX>=M&&m.clientX<=A&&m.clientY>=_&&m.clientY<=k?p():f()}function f(){e(!0)}function p(){e(!1)}function b(){a.didMove=!1,document.addEventListener(\"pointermove\",n),document.addEventListener(\"pointerup\",u)}function i(){document.removeEventListener(\"pointermove\",n),document.removeEventListener(\"pointerup\",u)}function n(m){let _=l.current;if(a.canDrag&&_){a.didMove=!0,o&&p(),t.draggableDirection===\"x\"?a.delta=m.clientX-a.start:a.delta=m.clientY-a.start,a.start!==m.clientX&&(a.canCloseOnClick=!1);let k=t.draggableDirection===\"x\"?`${a.delta}px, var(--y)`:`0, calc(${a.delta}px + var(--y))`;_.style.transform=`translate3d(${k},0)`,_.style.opacity=`${1-Math.abs(a.delta/a.removalDistance)}`}}function u(){i();let m=l.current;if(a.canDrag&&a.didMove&&m){if(a.canDrag=!1,Math.abs(a.delta)>a.removalDistance){s(!0),t.closeToast(!0),t.collapseAll();return}m.style.transition=\"transform 0.2s, opacity 0.2s\",m.style.removeProperty(\"transform\"),m.style.removeProperty(\"opacity\")}}let h={onPointerDown:S,onPointerUp:E};return d&&c&&(h.onMouseEnter=p,t.stacked||(h.onMouseLeave=f)),v&&(h.onClick=m=>{g&&g(m),a.canCloseOnClick&&T(!0)}),{playToast:f,pauseToast:p,isRunning:o,preventExitTransition:r,toastRef:l,eventHandlers:h}}import{useEffect as Jt,useLayoutEffect as to}from\"react\";var Ot=typeof window!=\"undefined\"?to:Jt;import it from\"clsx\";import q,{cloneElement as co,isValidElement as fo}from\"react\";import O,{cloneElement as oo,isValidElement as eo}from\"react\";var G=({theme:t,type:o,isLoading:e,...r})=>O.createElement(\"svg\",{viewBox:\"0 0 24 24\",width:\"100%\",height:\"100%\",fill:t===\"colored\"?\"currentColor\":`var(--toastify-icon-color-${o})`,...r});function ao(t){return O.createElement(G,{...t},O.createElement(\"path\",{d:\"M23.32 17.191L15.438 2.184C14.728.833 13.416 0 11.996 0c-1.42 0-2.733.833-3.443 2.184L.533 17.448a4.744 4.744 0 000 4.368C1.243 23.167 2.555 24 3.975 24h16.05C22.22 24 24 22.044 24 19.632c0-.904-.251-1.746-.68-2.44zm-9.622 1.46c0 1.033-.724 1.823-1.698 1.823s-1.698-.79-1.698-1.822v-.043c0-1.028.724-1.822 1.698-1.822s1.698.79 1.698 1.822v.043zm.039-12.285l-.84 8.06c-.057.581-.408.943-.897.943-.49 0-.84-.367-.896-.942l-.84-8.065c-.057-.624.25-1.095.779-1.095h1.91c.528.005.84.476.784 1.1z\"}))}function so(t){return O.createElement(G,{...t},O.createElement(\"path\",{d:\"M12 0a12 12 0 1012 12A12.013 12.013 0 0012 0zm.25 5a1.5 1.5 0 11-1.5 1.5 1.5 1.5 0 011.5-1.5zm2.25 13.5h-4a1 1 0 010-2h.75a.25.25 0 00.25-.25v-4.5a.25.25 0 00-.25-.25h-.75a1 1 0 010-2h1a2 2 0 012 2v4.75a.25.25 0 00.25.25h.75a1 1 0 110 2z\"}))}function no(t){return O.createElement(G,{...t},O.createElement(\"path\",{d:\"M12 0a12 12 0 1012 12A12.014 12.014 0 0012 0zm6.927 8.2l-6.845 9.289a1.011 1.011 0 01-1.43.188l-4.888-3.908a1 1 0 111.25-1.562l4.076 3.261 6.227-8.451a1 1 0 111.61 1.183z\"}))}function ro(t){return O.createElement(G,{...t},O.createElement(\"path\",{d:\"M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z\"}))}function io(){return O.createElement(\"div\",{className:\"Toastify__spinner\"})}var W={info:so,warning:ao,success:no,error:ro,spinner:io},lo=t=>t in W;function Nt({theme:t,type:o,isLoading:e,icon:r}){let s=null,l={theme:t,type:o};return r===!1||(P(r)?s=r({...l,isLoading:e}):eo(r)?s=oo(r,l):e?s=W.spinner():lo(o)&&(s=W[o](l))),s}var wt=t=>{let{isRunning:o,preventExitTransition:e,toastRef:r,eventHandlers:s,playToast:l}=At(t),{closeButton:a,children:d,autoClose:c,onClick:T,type:g,hideProgressBar:v,closeToast:x,transition:C,position:S,className:E,style:f,progressClassName:p,updateId:b,role:i,progress:n,rtl:u,toastId:h,deleteToast:m,isIn:_,isLoading:k,closeOnClick:M,theme:A,ariaLabel:R}=t,D=it(\"Toastify__toast\",`Toastify__toast-theme--${A}`,`Toastify__toast--${g}`,{[\"Toastify__toast--rtl\"]:u},{[\"Toastify__toast--close-on-click\"]:M}),Y=P(E)?E({rtl:u,position:S,type:g,defaultClassName:D}):it(D,E),ft=Nt(t),dt=!!n||!c,j={closeToast:x,type:g,theme:A},H=null;return a===!1||(P(a)?H=a(j):fo(a)?H=co(a,j):H=yt(j)),q.createElement(C,{isIn:_,done:m,position:S,preventExitTransition:e,nodeRef:r,playToast:l},q.createElement(\"div\",{id:h,tabIndex:0,onClick:T,\"data-in\":_,className:Y,...s,style:f,ref:r,..._&&{role:i,\"aria-label\":R}},ft!=null&&q.createElement(\"div\",{className:it(\"Toastify__toast-icon\",{[\"Toastify--animate-icon Toastify__zoom-enter\"]:!k})},ft),tt(d,t,!o),H,!t.customProgressBar&&q.createElement(gt,{...b&&!dt?{key:`p-${b}`}:{},rtl:u,theme:A,delay:c,isRunning:o,isIn:_,closeToast:x,hide:v,type:g,className:p,controlledProgress:dt,progress:n||0})))};var K=(t,o=!1)=>({enter:`Toastify--animate Toastify__${t}-enter`,exit:`Toastify--animate Toastify__${t}-exit`,appendPosition:o}),lt=$(K(\"bounce\",!0)),mo=$(K(\"slide\",!0)),po=$(K(\"zoom\")),uo=$(K(\"flip\"));var _o={position:\"top-right\",transition:lt,autoClose:5e3,closeButton:!0,pauseOnHover:!0,pauseOnFocusLoss:!0,draggable:\"touch\",draggablePercent:80,draggableDirection:\"x\",role:\"alert\",theme:\"light\",\"aria-label\":\"Notifications Alt+T\",hotKeys:t=>t.altKey&&t.code===\"KeyT\"};function Lt(t){let o={..._o,...t},e=t.stacked,[r,s]=go(!0),l=To(null),{getToastToRender:a,isToastActive:d,count:c}=It(o),{className:T,style:g,rtl:v,containerId:x,hotKeys:C}=o;function S(f){let p=Dt(\"Toastify__toast-container\",`Toastify__toast-container--${f}`,{[\"Toastify__toast-container--rtl\"]:v});return P(T)?T({position:f,rtl:v,defaultClassName:p}):Dt(p,B(T))}function E(){e&&(s(!0),y.play())}return Ot(()=>{var f;if(e){let p=l.current.querySelectorAll('[data-in=\"true\"]'),b=12,i=(f=o.position)==null?void 0:f.includes(\"top\"),n=0,u=0;Array.from(p).reverse().forEach((h,m)=>{let _=h;_.classList.add(\"Toastify__toast--stacked\"),m>0&&(_.dataset.collapsed=`${r}`),_.dataset.pos||(_.dataset.pos=i?\"top\":\"bot\");let k=n*(r?.2:1)+(r?0:b*m);_.style.setProperty(\"--y\",`${i?k:k*-1}px`),_.style.setProperty(\"--g\",`${b}`),_.style.setProperty(\"--s\",`${1-(r?u:0)}`),n+=_.offsetHeight,u+=.025})}},[r,c,e]),yo(()=>{function f(p){var i;let b=l.current;C(p)&&((i=b.querySelector('[tabIndex=\"0\"]'))==null||i.focus(),s(!1),y.pause()),p.key===\"Escape\"&&(document.activeElement===b||b!=null&&b.contains(document.activeElement))&&(s(!0),y.play())}return document.addEventListener(\"keydown\",f),()=>{document.removeEventListener(\"keydown\",f)}},[C]),ct.createElement(\"section\",{ref:l,className:\"Toastify\",id:x,onMouseEnter:()=>{e&&(s(!1),y.pause())},onMouseLeave:E,\"aria-live\":\"polite\",\"aria-atomic\":\"false\",\"aria-relevant\":\"additions text\",\"aria-label\":o[\"aria-label\"]},a((f,p)=>{let b=p.length?{...g}:{...g,pointerEvents:\"none\"};return ct.createElement(\"div\",{tabIndex:-1,className:S(f),\"data-stacked\":e,style:b,key:`c-${f}`},p.map(({content:i,props:n})=>ct.createElement(wt,{...n,stacked:e,collapseAll:E,isIn:d(n.toastId,n.containerId),key:`t-${n.key}`},i)))}))}export{lt as Bounce,uo as Flip,W as Icons,mo as Slide,Lt as ToastContainer,po as Zoom,Z as collapseToast,$ as cssTransition,y as toast};\n//# sourceMappingURL=index.mjs.map","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { useEffect, useState } from \"react\"; // Add useMemo here when uncomment the color, size, width code\r\n// import { useEffect, useMemo, useState } from \"react\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { Icon } from \"@iconify/react\";\r\nimport { setProduct } from \"../../store/reducers/productReducer\";\r\nimport { addProductToBasket, createBasket, fetchBasket } from \"../api/api\";\r\n// import { fetchTokenSFCC } from \"../utils/fetchTokenSFCC\";\r\nimport {\r\n getStoredBasketId,\r\n // getStoredToken,\r\n setStoredBasketId,\r\n setStoredToken,\r\n} from \"../utils/localStorage\";\r\nimport { toast } from \"react-toastify\";\r\nimport { TOKEN_EXPIRY_KEY } from \"../../config/constant\";\r\nimport { fetchTokenBmGrant } from \"../utils/fetchTokenBmGrant\";\r\nimport {\r\n // fetchExistingRegisterCustomerToken,\r\n fetchExistingGuestCustomerToken,\r\n} from \"../utils/fetchExistingRegisterCustomerToken\";\r\nimport { notifySFCC } from \"../lib/utils\";\r\nimport { authData } from \"../../sfcc-apis/session\";\r\n\r\nconst ANIMATION_DURATION = 300; // ms\r\n\r\nconst ProductDisplayCard = () => {\r\n const dispatch = useDispatch();\r\n const product = useSelector((state: any) => state.product.product);\r\n const storeDetails = useSelector((s: any) => s.store.store);\r\n const [show, setShow] = useState(!!product);\r\n\r\n useEffect(() => {\r\n setShow(!!product);\r\n }, [product]);\r\n\r\n if (!product) return null;\r\n\r\n // const { sizeAttr, colorAttr, widthAttr } = attributes;\r\n\r\n const addToCart = async () => {\r\n console.log(product, \"the prod\");\r\n try {\r\n // Check if product and variants exist\r\n\r\n if (\r\n !product?.variants?.[0]?.product_id &&\r\n !(product.type.item || product.type.bundle) &&\r\n !product?.variants?.[0]?.productId\r\n ) {\r\n toast.error(\"Variants not available\", {\r\n position: \"bottom-right\",\r\n autoClose: 1000,\r\n });\r\n console.error(\"No product variant found\");\r\n return;\r\n }\r\n\r\n const productData = [\r\n {\r\n product_id:\r\n product.variants?.[0].product_id ||\r\n product.variants?.[0].productId ||\r\n product?.id,\r\n quantity: 1,\r\n },\r\n ];\r\n console.log(productData, \"the product data\");\r\n // for getting customer id\r\n const customerData = JSON.parse(\r\n sessionStorage.getItem(\"customerData\") || \"{}\"\r\n );\r\n const basketIdFromCustomer = customerData?.basketId;\r\n const customer_token = false;\r\n const tokenExpiry = localStorage.getItem(TOKEN_EXPIRY_KEY);\r\n const currentTime = Date.now();\r\n\r\n // If no token, get a new one\r\n if (\r\n !customer_token ||\r\n !tokenExpiry ||\r\n currentTime >= parseInt(tokenExpiry)\r\n ) {\r\n let customer_token = \"\";\r\n if (import.meta.env.VITE_SCAPI_ENVIRONMENT) {\r\n const authDetails = await authData();\r\n console.log(\"token from auth data\");\r\n customer_token = \"Bearer \" + authDetails.access_token;\r\n } else {\r\n console.log(\"token from bm grant\");\r\n const access_token = await fetchTokenBmGrant();\r\n const customerTokenData = await fetchExistingGuestCustomerToken(\r\n access_token\r\n );\r\n customer_token = customerTokenData.customer_token;\r\n }\r\n if (!customer_token) {\r\n console.error(\"Failed to get customer_token\");\r\n return;\r\n }\r\n const newExpiryTime = currentTime + 5 * 60 * 1000;\r\n setStoredToken(customer_token);\r\n localStorage.setItem(TOKEN_EXPIRY_KEY, newExpiryTime.toString());\r\n\r\n // 1. Try basketId from customerData\r\n if (basketIdFromCustomer) {\r\n const fetchBasketResponse = await fetchBasket({\r\n basketId: basketIdFromCustomer,\r\n customer_token,\r\n });\r\n console.log(basketIdFromCustomer, \"basket id from customer\");\r\n if (fetchBasketResponse.status === 200 && fetchBasketResponse) {\r\n // Use this basketId to add product\r\n\r\n const response = await addProductToBasket(\r\n basketIdFromCustomer,\r\n productData,\r\n customer_token\r\n );\r\n if (\r\n response?.product_items?.length > 0 ||\r\n response?.productItems?.length > 0\r\n ) {\r\n // const addedProduct = response.product_items.at(-1);\r\n toast.success(`Added to cart`, {\r\n position: \"bottom-right\",\r\n autoClose: 3000,\r\n hideProgressBar: false,\r\n closeOnClick: true,\r\n pauseOnHover: true,\r\n draggable: true,\r\n });\r\n notifySFCC(basketIdFromCustomer);\r\n // window.location.reload();\r\n }\r\n return; // Skip basket creation\r\n }\r\n }\r\n\r\n // 2. If not valid, create new basket and store its ID in localStorage\r\n const data = {\r\n productItems: [\r\n {\r\n productId:\r\n product.variants?.[0].product_id ||\r\n product.variants?.[0].productId ||\r\n product?.id,\r\n quantity: 1,\r\n },\r\n ],\r\n };\r\n console.log(\"before create basket\");\r\n const basketResponse = await createBasket(customer_token, data);\r\n console.log(\r\n basketResponse,\r\n basketResponse?.basket_id,\r\n basketResponse?.basketId,\r\n \"the basket response\"\r\n );\r\n if (!basketResponse?.basket_id && !basketResponse?.basketId) {\r\n console.error(\"Failed to create basket\");\r\n return;\r\n }\r\n console.log(\r\n \"setting stored id\",\r\n basketResponse?.basket_id || basketResponse?.basketId\r\n );\r\n // else if (basketResponse?.basketId) {\r\n // toast.success(`Added to cart`, {\r\n // position: \"bottom-right\",\r\n // autoClose: 3000,\r\n // hideProgressBar: false,\r\n // closeOnClick: true,\r\n // pauseOnHover: true,\r\n // draggable: true,\r\n // });\r\n // }\r\n setStoredBasketId(\r\n basketResponse?.basket_id || basketResponse?.basketId\r\n );\r\n // Add product to new basket\r\n // if (!import.meta.env.VITE_SCAPI_ENVIRONMENT) {\r\n console.log(\"adding product to basket\");\r\n const response = await addProductToBasket(\r\n basketResponse?.basket_id || basketResponse?.basketId,\r\n productData,\r\n customer_token\r\n );\r\n console.log(\"object added to basket\");\r\n if (\r\n response?.product_items?.length > 0 ||\r\n response?.productItems?.length > 0\r\n ) {\r\n toast.success(`Added to cart`, {\r\n position: \"bottom-right\",\r\n autoClose: 3000,\r\n hideProgressBar: false,\r\n closeOnClick: true,\r\n pauseOnHover: true,\r\n draggable: true,\r\n });\r\n }\r\n notifySFCC(basketResponse.basket_id || basketResponse?.basketId);\r\n // }\r\n } else {\r\n // Use existing customer_token and basket ID\r\n const basketId = getStoredBasketId();\r\n if (!basketId) {\r\n console.error(\"No basket ID found\");\r\n return;\r\n }\r\n\r\n const response = await addProductToBasket(\r\n basketId,\r\n productData,\r\n customer_token\r\n );\r\n if (response?.product_items?.length > 0) {\r\n toast.success(`Added to cart`, {\r\n position: \"bottom-right\",\r\n autoClose: 3000,\r\n hideProgressBar: false,\r\n closeOnClick: true,\r\n pauseOnHover: true,\r\n draggable: true,\r\n });\r\n notifySFCC(basketId);\r\n }\r\n }\r\n } catch (error: any) {\r\n console.error(\"Error adding to cart:\", error);\r\n toast.error(\"Failed to add product to cart\", {\r\n position: \"bottom-right\",\r\n autoClose: 3000,\r\n });\r\n\r\n if (\r\n error?.response?.status === 404 || // Basket not found\r\n error?.response?.status === 401 // Unauthorized/expired\r\n ) {\r\n // Clear only basket ID for 404\r\n if (error?.response?.status === 404) {\r\n setStoredBasketId(null);\r\n }\r\n // Clear both for 401\r\n if (error?.response?.status === 401) {\r\n setStoredBasketId(null);\r\n setStoredToken(null);\r\n }\r\n } else {\r\n console.error(\"Failed to add product to basket:\", error.message);\r\n toast.error(\"Failed to add product to cart\", {\r\n position: \"bottom-right\",\r\n autoClose: 3000,\r\n });\r\n }\r\n } finally {\r\n notifySFCC();\r\n }\r\n };\r\n\r\n // Function to generate and redirect to the product detail page\r\n const viewMore = () => {\r\n if (!product) return;\r\n\r\n window.location.href = product.c_pdpUrl; //redirect to sfcc product details url\r\n };\r\n console.log(product, \"the prod\");\r\n return (\r\n <>\r\n <div\r\n className=\"fixed inset-0 z-40 bg-black/30\"\r\n onClick={() => {\r\n setShow(false);\r\n setTimeout(() => dispatch(setProduct(null)), ANIMATION_DURATION);\r\n }}\r\n />\r\n <div\r\n className={`\r\n flex flex-col gap-2 items-center h-[90vh] absolute right-0 bottom-0 z-50 w-full md:w-1/2 md:h-[100vh] lg:w-1/2 lg:h-[100vh] shadow-xl p-2 border-l-2 bg-white border-gray-200 overflow-y-scroll\r\n transition-all duration-300\r\n ${\r\n show\r\n ? \"translate-y-0 md:translate-y-0 md:translate-x-0 opacity-100\"\r\n : \"translate-y-full md:translate-y-0 md:translate-x-full opacity-0 pointer-events-none\"\r\n }\r\n `}\r\n style={{ willChange: \"transform, opacity\" }}\r\n // Prevent click inside card from closing\r\n onClick={(e) => e.stopPropagation()}\r\n >\r\n {/* name and close button */}\r\n <div className=\"mt-3 flex flex-row justify-between w-full \">\r\n <div>\r\n <p className=\"text-[#000000] font-bold font-nunitoSans\">\r\n {product.name}\r\n </p>\r\n </div>\r\n <div>\r\n <Icon\r\n icon=\"mdi:close\"\r\n className=\"text-[#555555] w-6 h-6 cursor-pointer\"\r\n onClick={() => {\r\n setShow(false);\r\n setTimeout(\r\n () => dispatch(setProduct(null)),\r\n ANIMATION_DURATION\r\n );\r\n }}\r\n />\r\n </div>\r\n </div>\r\n {/* image and variants */}\r\n <div className=\"flex flex-row gap-2 items-center flex-wrap\">\r\n <div className=\"flex flex-row items-center justify-center w-[120px] h-[120px] my-5\">\r\n <img\r\n src={\r\n import.meta.env.VITE_SCAPI_ENVIRONMENT\r\n ? product.imageGroups?.[0]?.images?.[0]?.link\r\n : product.image_groups?.[0]?.images?.[0]?.link ||\r\n \"https://via.placeholder.com/120\"\r\n }\r\n alt={product.name}\r\n className=\"rounded-[10px]\"\r\n />\r\n </div>\r\n <div className=\"flex flex-col items-center gap-2\">\r\n {(import.meta.env.VITE_SCAPI_ENVIRONMENT\r\n ? product.imageGroups\r\n : product.image_groups\r\n )\r\n .slice(1, 2)\r\n .map((group: any) =>\r\n group.images.slice(1, 2).map((image: any) => (\r\n <img\r\n key={image.link}\r\n src={image.link}\r\n alt={product.name}\r\n className=\"rounded-[10px] w-[60px] h-[60px]\"\r\n />\r\n ))\r\n )}\r\n </div>\r\n </div>\r\n {/* price and discount */}\r\n <div className=\"flex flex-row items-center justify-between w-full\">\r\n <div className=\"flex flex-row items-center gap-2\">\r\n <p className=\"text-[#14121F] font-bold font-nunitoSans\">\r\n {\" \"}\r\n ${product.price.toFixed(2)}\r\n </p>{\" \"}\r\n <p className=\"text-[#14121F] font-normal line-through text-sm font-nunitoSans\">\r\n {\" \"}\r\n ${(product.price + 5).toFixed(2)}\r\n </p>\r\n </div>\r\n <div>\r\n <p className=\"text-[#EC5050] font-bold font-nunitoSans\">\r\n {product.discount}\r\n </p>\r\n </div>\r\n </div>\r\n {/* horizontal line */}\r\n <div className=\"mt-2 w-full border-t-2 border-gray-200\"></div>\r\n <div className=\"w-full text-left\">\r\n <div className=\"text-[#323135] font-bold font-nunitoSans mt-3 text-[14px]\">\r\n Product Details\r\n </div>\r\n <div\r\n className=\"text-[#68656E] font-normal font-nunitoSans text-xs pl-2 mt-3\"\r\n dangerouslySetInnerHTML={{ __html: product.short_description || product.longDescription }}\r\n ></div>\r\n </div>\r\n {/* rating and reviews */}\r\n <div className=\"mt-4 flex flex-col gap-2 w-full p-2\">\r\n <div className=\"flex flex-row items-center gap-2\">\r\n <div className=\"flex items-center gap-2 text-left font-nunitoSans\">\r\n <div className=\"text-[#323135] font-bold\">\r\n {product?.rating?.rate || 0} /{\" \"}\r\n <span className=\"text-[#68656E]\">5</span>\r\n </div>\r\n <div className=\"text-[#323135] font-semibold text-sm\">\r\n Overall Rating\r\n </div>\r\n <div className=\"text-[#68656E] font-semibold text-sm\">\r\n {product?.rating?.count || 0} ratings\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"mt-2 flex flex-row items-center gap-2\">\r\n {Array.from({ length: 5 }).map((_, index) => (\r\n <Icon\r\n key={index}\r\n icon=\"mdi:star\"\r\n width=\"20\"\r\n height=\"20\"\r\n className={`text-yellow-500 \r\n ${\r\n product?.rating?.rate > index\r\n ? \"text-yellow-500\"\r\n : \"text-gray-300\"\r\n }\r\n `}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n\r\n <div\r\n className=\"flex flex-col items-center justify-between font-nunitoSans font-semibold w-5/6 text-black gap-2\"\r\n style={{ marginTop: \"150px\" }}\r\n >\r\n <button\r\n className=\"rounded-[5px] shadow-sm text-[#FBFBFC] bg-[#6851C6] p-2 w-full text-center cursor-pointer\"\r\n style={{ backgroundColor: storeDetails.tanyaThemeColor }}\r\n onClick={addToCart}\r\n >\r\n Add to Cart\r\n </button>\r\n <button\r\n className=\"rounded-[5px] shadow-sm text-[#FBFBFC] bg-[#6851C6] p-2 w-full text-center cursor-pointer mb-16\"\r\n style={{ backgroundColor: storeDetails.tanyaThemeColor }}\r\n onClick={viewMore}\r\n >\r\n View more\r\n </button>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default ProductDisplayCard;\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { useState, useRef, useEffect } from \"react\";\r\nimport { Popover, PopoverTrigger } from \"../ui/popover\";\r\n// import tanyaChatBotIcon from \"@/assets/tanya-chatbot/chat-with-tanya.png\";\r\n// import { getAccessToken } from \"../utils/getAccessToken\";\r\nimport { getInterestApi, getProductById, getSearchResults } from \"../utils\";\r\nimport type { SearchProduct } from \"../graphQL/queries/types\";\r\nimport {\r\n // decryptData,\r\n // currencyFormatter,\r\n formatStringToHtml,\r\n // priceFormatter,\r\n} from \"../utils/helper\";\r\nimport { useSearchParams } from \"react-router-dom\";\r\nimport ProductDisplay from \"../carousel/ProductDisplay\";\r\nimport { useSelector } from \"react-redux\";\r\nimport ProductDisplayCard from \"../product/ProductDisplayCard\";\r\nimport { toast } from \"react-toastify\";\r\nimport { notifySFCC } from \"../lib/utils\";\r\nimport { addProductToBasket, createBasket, fetchBasket } from \"../api/api\";\r\nimport { fetchTokenBmGrant } from \"../utils/fetchTokenBmGrant\";\r\nimport { fetchExistingGuestCustomerToken } from \"../utils/fetchExistingRegisterCustomerToken\";\r\nimport { TOKEN_EXPIRY_KEY, VERSION } from \"../../config/constant\";\r\nimport {\r\n getStoredBasketId,\r\n setStoredBasketId,\r\n setStoredToken,\r\n} from \"../utils/localStorage\";\r\nimport { authData } from \"../../sfcc-apis/session\";\r\n\r\ntype ProductSnapshot = {\r\n id: string;\r\n name: string;\r\n image: string | null;\r\n price: number | null;\r\n points: number;\r\n quantity: number;\r\n};\r\n\r\nconst TanyaShoppingAssistantStream = () => {\r\n // Shopping options\r\n const shoppingOptions = [\r\n \"Myself\",\r\n \"My Child\",\r\n \"My Grandchild\",\r\n \"Niece/Nephew\",\r\n \"My Friends\",\r\n \"Others\",\r\n ];\r\n\r\n const payloadMapping: Record<string, string> = {\r\n Myself: \"himself/herself\",\r\n \"My Child\": \"his/her child\",\r\n \"My Grandchild\": \"his/her grandchild\",\r\n \"Niece/Nephew\": \"his/her niece/nephew\",\r\n \"My Friends\": \"his/her friends\",\r\n Others: \"others\",\r\n };\r\n const productName = useRef<string | null>(null);\r\n const productId = useRef<number | null>(null);\r\n const productImage = useRef<string | null>(null);\r\n const productPrice = useRef<number | null>(null);\r\n const [authDetails, setAuthDetails] = useState<any>(null);\r\n\r\n const [searchParams] = useSearchParams();\r\n const [isOpen, setIsOpen] = useState(\r\n searchParams.get(\"shoppingassist\") === \"true\"\r\n );\r\n const [isAnimating, setIsAnimating] = useState(false);\r\n const [isVisible, setIsVisible] = useState(false);\r\n const [adding, setAdding] = useState<boolean>(false);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [productLoading, setProductLoading] = useState(false);\r\n const [inputText, setInputText] = useState(\"\");\r\n const [whom, setWhom] = useState(\"\");\r\n const mapSnapshotToProduct = (snap: ProductSnapshot): any => ({\r\n id: snap.id,\r\n title: snap.name,\r\n image: snap.image ?? \"\",\r\n price: snap.price ?? 0,\r\n });\r\n // const dispatch = useDispatch();\r\n\r\n const [chatHistory, setChatHistory] = useState<\r\n {\r\n query: string;\r\n response: string;\r\n potentialQuestions: string;\r\n products?: { keyword: string; items: SearchProduct[] }[];\r\n keywords: string;\r\n noResults?: boolean;\r\n secondaryResponse?: string;\r\n secondaryLoading?: boolean;\r\n productSnapshot?: ProductSnapshot; // NEW\r\n }[]\r\n >([]);\r\n const scrollRef = useRef<HTMLDivElement>(null);\r\n // const storeCode =\r\n // searchParams.get(\"storeCode\") || localStorage.getItem(\"storeCode\");\r\n const storeDetails = useSelector((s: any) => s.store.store);\r\n const product = useSelector((s: any) => s.product.product);\r\n\r\n const openPanel = () => {\r\n setIsVisible(true);\r\n setTimeout(() => setIsAnimating(true), 10); // trigger opening animation\r\n };\r\n\r\n const closePanel = () => {\r\n setIsAnimating(false);\r\n setTimeout(() => setIsVisible(false), 300); // // wait for exit animation\r\n };\r\n\r\n useEffect(() => {\r\n if (isOpen) openPanel();\r\n else closePanel();\r\n }, [isOpen]);\r\n\r\n const handleWhomSelection = (selected: string) => {\r\n setWhom(payloadMapping[selected]);\r\n };\r\n\r\n useEffect(() => {\r\n if (scrollRef.current) {\r\n scrollRef.current.scrollTop += 150; // Scrolls down by 50px\r\n }\r\n }, [chatHistory]);\r\n\r\n let cachedToken: any = null;\r\n let tokenExpiry: any = null;\r\n\r\n const getJWTToken = async () => {\r\n if (cachedToken && tokenExpiry && Date.now() < tokenExpiry) {\r\n return cachedToken;\r\n }\r\n\r\n try {\r\n const tokenUrl =\r\n \"https://us-east-1lsr29ln3u.auth.us-east-1.amazoncognito.com/oauth2/token\";\r\n\r\n const tokenPayload = new URLSearchParams({\r\n grant_type: \"client_credentials\",\r\n client_id: \"4i8rd70sgt961tc4dhskgf08c\",\r\n client_secret: \"bnsfq1220loh2cn2cm2ttn8fdhdpt0u8m1fgj8vfk2rn61aurjg\",\r\n scope: \"default-m2m-resource-server-8xzfzo/read\",\r\n });\r\n\r\n const tokenResponse = await fetch(tokenUrl, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/x-www-form-urlencoded\",\r\n },\r\n body: tokenPayload,\r\n });\r\n\r\n if (!tokenResponse.ok) {\r\n throw new Error(\r\n `Token request failed! status: ${tokenResponse.status}`\r\n );\r\n }\r\n\r\n const tokenData = await tokenResponse.json();\r\n\r\n // Cache the token\r\n cachedToken = tokenData.access_token;\r\n const expiresIn = tokenData.expires_in || 3600; // Default to 1 hour\r\n tokenExpiry = Date.now() + (expiresIn - 60) * 1000; // Refresh 1 minute before expiry\r\n\r\n return cachedToken;\r\n } catch (error) {\r\n console.error(\"Error obtaining JWT token:\", error);\r\n // Clear cache on error\r\n cachedToken = null;\r\n tokenExpiry = null;\r\n return null;\r\n }\r\n };\r\n\r\n const getAuthDetails = async () => {\r\n const data = await authData(); // <- calls your async function\r\n if (data == null) return;\r\n setAuthDetails(data); // <- saves the result in state\r\n };\r\n\r\n useEffect(() => {\r\n if (import.meta.env.VITE_SCAPI_ENVIRONMENT) {\r\n getAuthDetails();\r\n console.log(\"scapi environment v1\");\r\n } else {\r\n console.log(\"ocapi environment\");\r\n }\r\n }, []);\r\n\r\n const getInterests = async () => {\r\n const customer_id = JSON.parse(\r\n sessionStorage.getItem(\"customerData\") || \"{}\"\r\n ).customerId;\r\n const res = await getInterestApi(customer_id || \"\");\r\n return res.c_interests;\r\n };\r\n\r\n const runSecondaryFlow = async (productTitle: string, points: number) => {\r\n console.log(\"in secondary flow\", VERSION);\r\n const interests = await getInterests();\r\n console.log(interests, \"interests of customer\", VERSION);\r\n if (!interests) return;\r\n try {\r\n // surprise animation\r\n setChatHistory((prev) =>\r\n prev.map((msg, idx) =>\r\n idx === prev.length - 1 ? { ...msg, secondaryLoading: true } : msg\r\n )\r\n );\r\n\r\n const accessToken = await getJWTToken();\r\n if (!accessToken) throw new Error(\"Failed to fetch token\");\r\n\r\n const user = localStorage.getItem(\"customerNumber\");\r\n const isLoggedIn = localStorage.getItem(\"isLoggedIn\");\r\n const queryParams = new URLSearchParams({\r\n registered: String(isLoggedIn || false),\r\n userId: String(user || new Date().getTime()),\r\n });\r\n const invokeUrl = `https://tanya.aspiresystems.com/api/bedrock/invoke/stream?${queryParams.toString()}`;\r\n\r\n const payload = JSON.stringify({\r\n flowId: \"Q166PR519W\",\r\n flowAliasId: \"HKFUVLWVH2\",\r\n input: {\r\n loyaltyPoints: \"\",\r\n productName: productTitle,\r\n productPoints: String(points || 0),\r\n interests: interests,\r\n },\r\n });\r\n\r\n const response = await fetch(invokeUrl, {\r\n signal: AbortSignal.timeout(30000),\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n Authorization: `Bearer ${accessToken}`,\r\n },\r\n body: payload,\r\n });\r\n\r\n if (!response.body) throw new Error(\"Readable stream not supported\");\r\n\r\n const reader = response.body.getReader();\r\n const decoder = new TextDecoder();\r\n let buffer = \"\";\r\n\r\n while (true) {\r\n const { done, value } = await reader.read();\r\n if (done) break;\r\n buffer += decoder.decode(value, { stream: true });\r\n const lines = buffer.split(\"\\n\");\r\n buffer = lines.pop() || \"\";\r\n\r\n for (const line of lines) {\r\n if (line.startsWith(\"data:\")) {\r\n const jsonData = line.slice(5).trim();\r\n try {\r\n const parsedData = JSON.parse(jsonData);\r\n\r\n if (parsedData.index === 0) {\r\n // attach response & stop animation\r\n setChatHistory((prev) =>\r\n prev.map((msg, idx) =>\r\n idx === prev.length - 1\r\n ? {\r\n ...msg,\r\n secondaryResponse: parsedData.data,\r\n secondaryLoading: false,\r\n }\r\n : msg\r\n )\r\n );\r\n }\r\n // ignore 1/2/3\r\n } catch (e) {\r\n // stop animation on parse error too\r\n setChatHistory((prev) =>\r\n prev.map((msg, idx) =>\r\n idx === prev.length - 1\r\n ? { ...msg, secondaryLoading: false }\r\n : msg\r\n )\r\n );\r\n console.error(\"Secondary flow JSON parse error:\", e);\r\n }\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n console.error(\"Secondary flow error:\", e);\r\n }\r\n };\r\n\r\n const handleSendMessage = async (question?: string) => {\r\n const newQuery = question || inputText.trim();\r\n if (!newQuery) return;\r\n\r\n setIsLoading(true);\r\n setInputText(\"\");\r\n\r\n productName.current = null;\r\n productId.current = null;\r\n productImage.current = null;\r\n productPrice.current = null;\r\n\r\n setChatHistory((prev) => [\r\n ...prev,\r\n {\r\n query: newQuery,\r\n response: \"Thinking for what suits you best...\",\r\n potentialQuestions: \"\",\r\n products: [],\r\n keywords: \"Thinking for best products...\",\r\n },\r\n ]);\r\n\r\n try {\r\n const sanitizedWhom = whom;\r\n const user = localStorage.getItem(\"customerNumber\");\r\n const isLoggedIn = localStorage.getItem(\"isLoggedIn\");\r\n\r\n // Get JWT access token\r\n const accessToken = await getJWTToken();\r\n if (!accessToken) {\r\n throw new Error(\"Failed to obtain access token\");\r\n }\r\n\r\n // Build the invoke flow URL\r\n const queryParams = new URLSearchParams({\r\n registered: String(isLoggedIn || false),\r\n userId: String(user || new Date().getTime()),\r\n });\r\n\r\n const invokeUrl = `https://tanya.aspiresystems.com/api/bedrock/invoke/stream?${queryParams.toString()}`;\r\n\r\n const payload = JSON.stringify({\r\n flowId: \"MMHQKYI1NE\",\r\n flowAliasId: \"SZF9ZK1ATE\",\r\n input: {\r\n userPrompt: newQuery,\r\n whom: sanitizedWhom,\r\n },\r\n });\r\n\r\n const response = await fetch(invokeUrl, {\r\n signal: AbortSignal.timeout(30000),\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n Authorization: `Bearer ${accessToken}`,\r\n },\r\n body: payload,\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`);\r\n }\r\n\r\n if (!response.body) throw new Error(\"Readable stream not supported\");\r\n\r\n const reader = response.body.getReader();\r\n const decoder = new TextDecoder();\r\n let buffer = \"\";\r\n let keywords = \"\";\r\n\r\n while (true) {\r\n setProductLoading(true);\r\n const { done, value } = await reader.read();\r\n if (done) break;\r\n\r\n buffer += decoder.decode(value, { stream: true });\r\n const lines = buffer.split(\"\\n\");\r\n buffer = lines.pop() || \"\";\r\n\r\n for (const line of lines) {\r\n if (line.startsWith(\"data:\")) {\r\n const jsonData = line.slice(5).trim();\r\n try {\r\n const parsedData = JSON.parse(jsonData);\r\n if (parsedData.index == 1) keywords = parsedData.data;\r\n\r\n setChatHistory((prev) =>\r\n prev.map((msg, idx) =>\r\n idx === prev.length - 1\r\n ? {\r\n ...msg,\r\n [parsedData.index == 0\r\n ? \"response\"\r\n : parsedData.index == 1\r\n ? \"keywords\"\r\n : parsedData.index == 2\r\n ? \"potentialQuestions\"\r\n : \"end\"]: parsedData.data,\r\n }\r\n : msg\r\n )\r\n );\r\n } catch (error) {\r\n console.error(\"Error parsing JSON:\", error);\r\n }\r\n }\r\n }\r\n }\r\n getKeywords(sanitizeKeywords(keywords));\r\n } catch (error) {\r\n console.error(\"Error sending message to Tanya:\", error);\r\n } finally {\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n const sanitizeKeywords = (response: string) => {\r\n const keywordMatch = response.match(\r\n /top five relevant product or category names are: (.*)/i\r\n );\r\n const keywordsString = keywordMatch ? keywordMatch[1] : response;\r\n const keywordsArray = keywordsString.split(\", \");\r\n const sanitizedKeywords = keywordsArray.map((keyword) => {\r\n return keyword.replace(/\\s*(Toys|Bags|Miniature|etc\\.*)\\s*/gi, \"\").trim();\r\n });\r\n const uniqueKeywords = [...new Set(sanitizedKeywords)].filter(Boolean);\r\n return uniqueKeywords.join(\",\");\r\n };\r\n\r\n const getKeywords = async (keywords: string[] | string) => {\r\n console.log(authDetails?.access_token, \"access_token\");\r\n if (typeof keywords === \"string\") {\r\n console.log(keywords, \"keywords\");\r\n const splitedKeywords = keywords.split(\",\");\r\n for (const keyword of splitedKeywords) {\r\n const results = await getSearchResults(\r\n keyword,\r\n authDetails?.access_token\r\n );\r\n setProductLoading(false);\r\n if (results?.length > 0) {\r\n setChatHistory((prev) =>\r\n prev.map((msg, idx) =>\r\n idx === prev.length - 1\r\n ? {\r\n ...msg,\r\n products: [\r\n ...(msg.products || []),\r\n { keyword: keyword, items: results, loading: false },\r\n ],\r\n }\r\n : msg\r\n )\r\n );\r\n if (!productName.current || productId.current == null) {\r\n const first = results[0] as any;\r\n productName.current = String(first?.product_name ?? \"\");\r\n productImage.current = first.image.link;\r\n productId.current = first.product_id;\r\n\r\n // price\r\n const priceVal =\r\n typeof first?.price === \"number\" ? first.price : undefined;\r\n\r\n productPrice.current =\r\n typeof priceVal === \"number\" && Number.isFinite(priceVal)\r\n ? priceVal\r\n : null;\r\n }\r\n }\r\n }\r\n } else {\r\n for (const keyword of keywords) {\r\n const results = await getSearchResults(\r\n keyword,\r\n authDetails?.access_token\r\n );\r\n setProductLoading(false);\r\n if (results?.length > 0) {\r\n setChatHistory((prev) =>\r\n prev.map((msg, idx) =>\r\n idx === prev.length - 1\r\n ? {\r\n ...msg,\r\n products: [\r\n ...(msg.products || []),\r\n { keyword: keyword, items: results, loading: false },\r\n ],\r\n }\r\n : msg\r\n )\r\n );\r\n }\r\n }\r\n }\r\n if (productName.current) {\r\n setChatHistory((prev: any) =>\r\n prev.map((msg: any, idx: number) =>\r\n idx === prev.length - 1\r\n ? {\r\n ...msg,\r\n productSnapshot: {\r\n id: productId.current,\r\n name: productName.current,\r\n image: productImage.current,\r\n price: productPrice.current ?? null,\r\n points: 0,\r\n quantity: 1,\r\n },\r\n }\r\n : msg\r\n )\r\n );\r\n const customerData = JSON.parse(\r\n sessionStorage.getItem(\"customerData\") || \"{}\"\r\n );\r\n if (customerData?.isGuest == false) {\r\n console.log(\"running secondary flow\", VERSION);\r\n runSecondaryFlow(productName.current, 0);\r\n } else {\r\n console.log(\"not running secondary flow\", VERSION);\r\n }\r\n }\r\n setProductLoading(false);\r\n };\r\n\r\n const handleAddToCart = async (productToBeAdded: any, quantity: number) => {\r\n setAdding(true);\r\n try {\r\n const product = await getProductById(productToBeAdded.id);\r\n if (\r\n !(\r\n product?.variants?.[0]?.product_id ||\r\n product?.variants?.[0]?.productId\r\n ) &&\r\n !(product.type.item || product.type.bundle)\r\n ) {\r\n setAdding(false);\r\n toast.error(\"Variants not found\", {\r\n position: \"bottom-right\",\r\n autoClose: 1000,\r\n });\r\n console.error(\"No product variant found\");\r\n return;\r\n }\r\n\r\n const productData = [\r\n {\r\n product_id:\r\n product.variants?.[0].product_id ||\r\n product.variants?.[0].productId ||\r\n product?.id,\r\n quantity: quantity,\r\n },\r\n ];\r\n console.log(productData, \"product data\", \"app version\", VERSION);\r\n // for getting customer id\r\n const customerData = JSON.parse(\r\n sessionStorage.getItem(\"customerData\") || \"{}\"\r\n );\r\n const basketIdFromCustomer = customerData?.basketId;\r\n const customer_token = false;\r\n const tokenExpiry = localStorage.getItem(TOKEN_EXPIRY_KEY);\r\n const currentTime = Date.now();\r\n\r\n // If no token, get a new one\r\n if (\r\n !customer_token ||\r\n !tokenExpiry ||\r\n currentTime >= parseInt(tokenExpiry)\r\n ) {\r\n const access_token = await fetchTokenBmGrant();\r\n\r\n let { customer_token } = await fetchExistingGuestCustomerToken(\r\n access_token\r\n );\r\n if (import.meta.env.VITE_SCAPI_ENVIRONMENT) {\r\n customer_token = \"Bearer \" + authDetails.access_token;\r\n }\r\n if (!customer_token) {\r\n console.error(\"Failed to get customer_token\");\r\n return;\r\n }\r\n const newExpiryTime = currentTime + 5 * 60 * 1000;\r\n setStoredToken(customer_token);\r\n localStorage.setItem(TOKEN_EXPIRY_KEY, newExpiryTime.toString());\r\n\r\n // 1. Try basketId from customerData\r\n if (basketIdFromCustomer) {\r\n const fetchBasketResponse = await fetchBasket({\r\n basketId: basketIdFromCustomer,\r\n customer_token,\r\n });\r\n if (fetchBasketResponse.status === 200 && fetchBasketResponse) {\r\n // Use this basketId to add product\r\n\r\n const response = await addProductToBasket(\r\n basketIdFromCustomer,\r\n productData,\r\n customer_token\r\n );\r\n if (response?.product_items?.length > 0) {\r\n // const addedProduct = response.product_items.at(-1);\r\n toast.success(`Added to cart`, {\r\n position: \"bottom-right\",\r\n autoClose: 3000,\r\n hideProgressBar: false,\r\n closeOnClick: true,\r\n pauseOnHover: true,\r\n draggable: true,\r\n });\r\n notifySFCC(basketIdFromCustomer);\r\n setAdding(false);\r\n // window.location.reload();\r\n }\r\n return; // Skip basket creation\r\n }\r\n }\r\n\r\n // 2. If not valid, create new basket and store its ID in localStorage\r\n const data = {\r\n productItems: [\r\n {\r\n productId:\r\n product.variants?.[0].product_id ||\r\n product.variants?.[0].productId ||\r\n product?.id,\r\n quantity: 1,\r\n },\r\n ],\r\n };\r\n const basketResponse = await createBasket(customer_token, data);\r\n console.log(\r\n basketResponse,\r\n basketResponse?.basket_id,\r\n basketResponse?.basketId,\r\n \"the basket response\"\r\n );\r\n if (!(basketResponse?.basket_id || !basketResponse?.basketId)) {\r\n setAdding(false);\r\n console.error(\"Failed to create basket\");\r\n return;\r\n }\r\n // else if (basketResponse?.basketId) {\r\n // toast.success(`Added to cart`, {\r\n // position: \"bottom-right\",\r\n // autoClose: 3000,\r\n // hideProgressBar: false,\r\n // closeOnClick: true,\r\n // pauseOnHover: true,\r\n // draggable: true,\r\n // });\r\n // }\r\n\r\n // Store new basket ID\r\n setStoredBasketId(\r\n basketResponse?.basket_id || basketResponse?.basketId\r\n );\r\n // Add product to new basket\r\n // if (!import.meta.env.VITE_SCAPI_ENVIRONMENT) {\r\n const response = await addProductToBasket(\r\n basketResponse?.basket_id || basketResponse?.basketId,\r\n productData,\r\n customer_token\r\n );\r\n if (\r\n response?.product_items?.length > 0 ||\r\n response?.productItems?.length > 0\r\n ) {\r\n toast.success(`Added to cart`, {\r\n position: \"bottom-right\",\r\n autoClose: 3000,\r\n hideProgressBar: false,\r\n closeOnClick: true,\r\n pauseOnHover: true,\r\n draggable: true,\r\n });\r\n }\r\n notifySFCC(basketResponse.basket_id || basketResponse?.basketId);\r\n // }\r\n } else {\r\n // Use existing customer_token and basket ID\r\n const basketId = getStoredBasketId();\r\n if (!basketId) {\r\n console.error(\"No basket ID found\");\r\n setAdding(false);\r\n return;\r\n }\r\n\r\n const response = await addProductToBasket(\r\n basketId,\r\n productData,\r\n customer_token\r\n );\r\n if (response?.product_items?.length > 0) {\r\n toast.success(`Added to cart`, {\r\n position: \"bottom-right\",\r\n autoClose: 3000,\r\n hideProgressBar: false,\r\n closeOnClick: true,\r\n pauseOnHover: true,\r\n draggable: true,\r\n });\r\n setAdding(false);\r\n notifySFCC(basketId);\r\n }\r\n }\r\n } catch (error: any) {\r\n setAdding(false);\r\n console.error(\"Error adding to cart:\", error);\r\n toast.error(\"Failed to add product to cart\", {\r\n position: \"bottom-right\",\r\n autoClose: 3000,\r\n });\r\n\r\n if (\r\n error?.response?.status === 404 || // Basket not found\r\n error?.response?.status === 401 // Unauthorized/expired\r\n ) {\r\n // Clear only basket ID for 404\r\n if (error?.response?.status === 404) {\r\n setStoredBasketId(null);\r\n }\r\n // Clear both for 401\r\n if (error?.response?.status === 401) {\r\n setStoredBasketId(null);\r\n setStoredToken(null);\r\n }\r\n } else {\r\n console.error(\"Failed to add product to basket:\", error.message);\r\n toast.error(\"Failed to add product to cart\", {\r\n position: \"bottom-right\",\r\n autoClose: 3000,\r\n });\r\n }\r\n } finally {\r\n notifySFCC();\r\n }\r\n setAdding(false);\r\n };\r\n\r\n // Update the main container div's className\r\n return (\r\n <div className=\"relative flex justify-center\">\r\n <Popover open={isOpen} onOpenChange={setIsOpen}>\r\n <PopoverTrigger\r\n onClick={() => setIsOpen(true)}\r\n style={\r\n {\r\n // background: storeDetails.tanyaThemeColor,\r\n }\r\n }\r\n className=\"flex items-center rounded-lg cursor-pointer hover:opacity-90 transition-opacity\"\r\n >\r\n <div className=\"flex flex-col p-[5px]\">\r\n <svg\r\n width=\"40\"\r\n height=\"40\"\r\n viewBox=\"0 0 40 40\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <g clipPath=\"url(#clip0_958_585)\">\r\n <path\r\n d=\"M30.0002 5C31.7683 5 33.464 5.70238 34.7142 6.95262C35.9644 8.20286 36.6668 9.89856 36.6668 11.6667V25C36.6668 26.7681 35.9644 28.4638 34.7142 29.714C33.464 30.9643 31.7683 31.6667 30.0002 31.6667H25.6902L21.1785 36.1783C20.8915 36.4653 20.5097 36.6377 20.1046 36.6631C19.6996 36.6886 19.2992 36.5654 18.9785 36.3167L18.8218 36.1783L14.3085 31.6667H10.0002C8.28976 31.6667 6.64478 31.0093 5.40548 29.8305C4.16617 28.6516 3.42735 27.0416 3.34183 25.3333L3.3335 25V11.6667C3.3335 9.89856 4.03588 8.20286 5.28612 6.95262C6.53636 5.70238 8.23205 5 10.0002 5H30.0002Z\"\r\n fill=\"url(#paint0_linear_958_585)\"\r\n />\r\n <path\r\n d=\"M28.3335 15.6511V11.6667C28.3335 11.6667 22.2774 12.6042 20.1148 15.4167C17.9521 18.2292 18.6644 26.6667 18.6644 26.6667H22.5321C22.5321 26.6667 22.0614 18.9323 23.4989 17.2917C24.9364 15.6511 28.3335 15.6511 28.3335 15.6511Z\"\r\n fill=\"white\"\r\n />\r\n <path\r\n d=\"M13.3335 11.6667H19.6184V15.4167H13.3335V11.6667Z\"\r\n fill=\"white\"\r\n />\r\n </g>\r\n <defs>\r\n <linearGradient\r\n id=\"paint0_linear_958_585\"\r\n x1=\"20.0002\"\r\n y1=\"5\"\r\n x2=\"35.0002\"\r\n y2=\"30\"\r\n gradientUnits=\"userSpaceOnUse\"\r\n >\r\n <stop stopColor=\"#452697\" />\r\n <stop offset=\"1\" stopColor=\"#7C5BFF\" />\r\n </linearGradient>\r\n <clipPath id=\"clip0_958_585\">\r\n <rect width=\"40\" height=\"40\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </div>\r\n </PopoverTrigger>\r\n\r\n {/* Absolute Positioned PopoverContent and Custom Sidebar Panel */}\r\n {isVisible && (\r\n <>\r\n {/* Overlay For closing tanya popup by clicking on side or background */}\r\n <div\r\n className=\"fixed inset-0 z-40 bg-black/30\"\r\n onClick={() => setIsOpen(false)}\r\n />\r\n <div\r\n className={`\r\n fixed z-50 h-screen w-[100vw] sm:w-[80vw] md:w-[770px] border-0 bg-white lg:rounded-l-xl overflow-hidden flex flex-col shadow-[0px_4px_10px_0px_#5F499840]\r\n top-0 right-0\r\n transition-transform duration-300 ease-in-out\r\n lg:transform\r\n ${isAnimating ? \"lg:translate-x-0\" : \"lg:translate-x-full\"}\r\n // For mobile: animate from bottom\r\n ${isAnimating ? \"translate-y-0\" : \"translate-y-full\"}\r\n lg:translate-y-0\r\n `}\r\n style={{\r\n background:\r\n \"linear-gradient(170.1deg, #FFFFFF 60.03%, #E3DEEF 99.59%)\",\r\n }}\r\n >\r\n {/* Header */}\r\n <div\r\n className={`flex justify-between p-3 bg-[#FFFFFF] border border-b-1 border-[#E5E5E5] `} //lg:rounded-tl-xl lg:rounded-bl-xl\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n color: storeDetails.tanyaThemeContrastColor,\r\n alignItems: \"center\",\r\n gap: \"0.5rem\",\r\n }}\r\n >\r\n <div className=\"flex flex-col gap-1\">\r\n <div\r\n className=\"flex gap-2 w-28 h-12 text-center items-center p-2 border rounded-l-[20px] rounded-tr-[20px]\"\r\n style={{\r\n background:\r\n \"linear-gradient(265.62deg, #6851C6 5.24%, #8668FF 98.49%)\",\r\n }}\r\n >\r\n <svg\r\n width=\"20\"\r\n height=\"20\"\r\n viewBox=\"0 0 15 16\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M15 4.48438V0.5C15 0.5 8.94395 1.4375 6.78127 4.25C4.61859 7.0625 5.33095 15.5 5.33095 15.5H9.19857C9.19857 15.5 8.72793 7.76562 10.1654 6.125C11.6029 4.48438 15 4.48438 15 4.48438Z\"\r\n fill=\"white\"\r\n />\r\n <path d=\"M0 0.5H6.28488V4.25H0V0.5Z\" fill=\"white\" />\r\n </svg>\r\n\r\n <p className=\"text-[#FFFFFF] font-nunitoSans font-semibold\">\r\n TANYA\r\n </p>\r\n </div>\r\n <p\r\n className=\"text-[#5B5B5B] font-nunitoSans font-semibold\"\r\n style={{ fontStyle: \"italic\" }}\r\n >\r\n {\" \"}\r\n Your AI shopping assistant !{\" \"}\r\n </p>\r\n </div>\r\n </div>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"1.25rem\",\r\n margin: \"0.75rem\",\r\n }}\r\n >\r\n {/* close icon */}\r\n <button onClick={() => setIsOpen(false)}>\r\n <svg\r\n width=\"24\"\r\n height=\"25\"\r\n viewBox=\"0 0 24 25\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <g clipPath=\"url(#clip0_501_6036)\">\r\n <path\r\n d=\"M18 6.5L6 18.5\"\r\n stroke=\"#555555\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n <path\r\n d=\"M6 6.5L18 18.5\"\r\n stroke=\"#555555\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_501_6036\">\r\n <rect\r\n width=\"24\"\r\n height=\"24\"\r\n fill=\"white\"\r\n transform=\"translate(0 0.5)\"\r\n />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n {/* Chat Container */}\r\n <div className={`flex h-full md:flex-row lg:flex-row`}>\r\n <div\r\n className={`flex flex-col h-full ${\r\n product ? \"lg:w-2/3 w-full\" : \"w-full\"\r\n }`}\r\n >\r\n {/* Chat Body - Scrollable */}\r\n <div\r\n ref={scrollRef}\r\n className=\"overflow-y-auto pr-5 pb-2 space-y-4 hide-scrollbar flex-grow mb-24\"\r\n >\r\n {/* Shopping Options */}\r\n {storeDetails?.whomRequired && (\r\n <div\r\n className=\"mx-3 p-3 rounded-2xl bg-[#FFFFFF]\"\r\n // style={{\r\n // color: storeDetails?.tanyaThemeContrastColor,\r\n // backgroundColor: storeDetails.tanyaThemeColor, //need to comment\r\n // width: \"fit-content\",\r\n // }}\r\n >\r\n <div className=\"flex gap-2 bg-[#FFFFFF]\">\r\n {/* <Icon\r\n icon=\"mdi:shopping\"\r\n color=\"white\"\r\n width=\"22\"\r\n height=\"22\"\r\n /> */}\r\n <p className=\"font-bold font-nunitoSans text-[#494949]\">\r\n Is this for you or someone else?\r\n </p>\r\n </div>\r\n\r\n <div className=\"flex flex-wrap gap-2 mt-2\">\r\n {shoppingOptions.map((option) => (\r\n <button\r\n key={option}\r\n onClick={() => handleWhomSelection(option)}\r\n className=\"px-2 py-2 font-semibold text-xs text-[#18181B] bg-[#F3F3F3] rounded-2xl\"\r\n style={{\r\n backgroundColor:\r\n whom === payloadMapping[option]\r\n ? \"#FFFFFF\"\r\n : \"#F3F3F3\",\r\n borderColor:\r\n whom === payloadMapping[option]\r\n ? \"#BBB3DD\"\r\n : \"\",\r\n }}\r\n >\r\n {option}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n {/* Chat History */}\r\n {chatHistory.map((chat, index) => (\r\n <div key={index}>\r\n <div className=\"flex justify-end\">\r\n <p className=\"text-sm font-nunitoSans font-bold text-[#000000] bg-[#E2DBFF] border border-[#C9C2DE] rounded-l-xl p-2 m-3 mb-4 rounded-br-xl max-w-[75%]\">\r\n {chat.query}\r\n </p>\r\n </div>\r\n {chat.response && chat.response.includes(\"Thinking\") ? (\r\n <div>\r\n <div\r\n className=\"font-nunitoSans animate-pulse font-bold text-sm text-[#494949] bg-[#FFFFFF] px-7 py-1 rounded-r-xl rounded-bl-2xl w-full\"\r\n dangerouslySetInnerHTML={{\r\n __html: formatStringToHtml(chat.response),\r\n }}\r\n />\r\n </div>\r\n ) : (\r\n <div>\r\n <div\r\n className=\"font-nunitoSans font-bold text-sm text-[#494949] bg-[#FFFFFF] px-7 py-1 rounded-r-xl rounded-bl-2xl w-full\"\r\n dangerouslySetInnerHTML={{\r\n __html: formatStringToHtml(chat.response),\r\n }}\r\n />\r\n </div>\r\n )}\r\n {productLoading &&\r\n !chat.response.includes(\"Thinking\") &&\r\n chat.products?.length == 0 && (\r\n <div>\r\n <p className=\"text-sm animate-pulse font-nunitoSans font-bold text-[#000000] bg-[#E2DBFF] border border-[#C9C2DE] rounded-l-xl p-2 m-3 mb-4 rounded-br-xl max-w-[75%]\">\r\n Finding best products for you\r\n </p>\r\n </div>\r\n )}\r\n {chat?.products && chat?.products?.length > 0 && (\r\n <ProductDisplay\r\n chat={chat.products}\r\n storeDetails={storeDetails}\r\n />\r\n )}\r\n\r\n {/* Potential Questions */}\r\n {chat.potentialQuestions.length > 0 && (\r\n <div className=\"my-2 px-4 text-sm text-gray-700\">\r\n <p\r\n className=\"font-nunitoSans font-bold text-sm text-[#494949]\"\r\n style={{ color: storeDetails.themeDarkColor }}\r\n >\r\n Why not explore these inquiries...\r\n </p>\r\n {chat.potentialQuestions\r\n .split(\",\")\r\n .map((question, idx) => (\r\n <button\r\n key={idx}\r\n className={`cursor-pointer font-nunitoSans font-semibold text-[#232323] border bg-[#804C9E0D] border-${storeDetails.themeDarkColor} m-1 rounded-xl px-2 py-1`}\r\n onClick={() => handleSendMessage(question)}\r\n style={{\r\n backgroundColor:\r\n storeDetails.tanyaThemeColorLight,\r\n }}\r\n >\r\n {question}\r\n </button>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {chat.secondaryLoading && (\r\n <div className=\"mt-3 mb-4 px-4\">\r\n <div\r\n className=\"tanya-surprise-wrapper bg-indigo-300 text-sm px-7 py-4 rounded-r-xl rounded-bl-2xl w-full relative overflow-hidden\"\r\n style={{\r\n margin: \"0.75rem\",\r\n }}\r\n >\r\n <div className=\"flex gap-1\">\r\n <div className=\"tanya-sparkle tanya-sparkle-1\">\r\n ✨\r\n </div>\r\n <div className=\"tanya-sparkle tanya-sparkle-2\">\r\n ✨\r\n </div>\r\n <div className=\"tanya-sparkle tanya-sparkle-3\">\r\n ✨\r\n </div>\r\n </div>\r\n <div className=\"tanya-shimmer\" />\r\n <p\r\n className=\"font-semibold tanya-pulse\"\r\n style={{ color: storeDetails.themeDarkColor }}\r\n >\r\n I’ve found a special surprise crafted just for\r\n you… hang on a sec!\r\n </p>\r\n <p\r\n className=\"tanya-dots mt-1\"\r\n style={{ color: storeDetails.themeDarkColor }}\r\n >\r\n • • •\r\n </p>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* Secondary Response (from secondary flow) */}\r\n {chat.secondaryResponse && (\r\n <>\r\n <div className=\"mt-3 mb-8 px-4 bg-indigo-300 rounded-tr-[5px]\">\r\n {/* Chat Response */}\r\n <div\r\n className=\"text-sm text-[#232323] bg-[#FFFFFF] px-7 py-4 rounded-br-xl rounded-bl-2xl w-full\"\r\n style={{\r\n backgroundColor:\r\n storeDetails.tanyaThemeColorLight,\r\n }}\r\n dangerouslySetInnerHTML={{\r\n __html: formatStringToHtml(\r\n chat.secondaryResponse\r\n ),\r\n }}\r\n />\r\n {chat.productSnapshot && (\r\n // chat.productSnapshot.points > 0 &&\r\n <div className=\"mt-4 w-full\">\r\n <div\r\n className=\"flex gap-4 items-stretch rounded-2xl p-4\"\r\n style={{\r\n backgroundColor:\r\n storeDetails.tanyaThemeColorLight,\r\n }}\r\n >\r\n <div\r\n className=\"flex-shrink-0 rounded-xl overflow-hidden border\"\r\n style={{\r\n width: 112,\r\n height: 112,\r\n borderColor: \"#eee\",\r\n }}\r\n >\r\n {chat.productSnapshot.image ? (\r\n <img\r\n src={chat.productSnapshot.image}\r\n alt={chat.productSnapshot.name}\r\n className=\"w-full h-full object-cover\"\r\n />\r\n ) : (\r\n <div className=\"w-full h-full flex items-center justify-center text-xs text-gray-500\">\r\n No Image\r\n </div>\r\n )}\r\n </div>\r\n\r\n <div className=\"flex flex-col flex-1 justify-between\">\r\n <div>\r\n <p className=\"font-semibold text-[15px] leading-snug\">\r\n {chat.productSnapshot.name}\r\n </p>\r\n <p className=\"mt-1 text-[14px] font-medium\">\r\n {chat.productSnapshot.price != null\r\n ? new Intl.NumberFormat(undefined, {\r\n style: \"currency\",\r\n currency:\r\n storeDetails?.currency ||\r\n \"USD\",\r\n }).format(\r\n chat.productSnapshot.price\r\n )\r\n : \"\"}\r\n </p>\r\n\r\n {chat.productSnapshot.points > 0 && (\r\n <p className=\"mt-1 text-xs opacity-80\">\r\n You will earn{\" \"}\r\n <strong>\r\n {chat.productSnapshot.points}{\" \"}\r\n points\r\n </strong>\r\n </p>\r\n )}\r\n </div>\r\n\r\n <div className=\"mt-3 flex items-center gap-3\">\r\n <div className=\"flex items-center border rounded-full overflow-hidden\">\r\n <button\r\n className=\"px-3 py-1 text-sm\"\r\n onClick={() =>\r\n setChatHistory((prev) =>\r\n prev.map((m, i) =>\r\n i === index &&\r\n m.productSnapshot\r\n ? {\r\n ...m,\r\n productSnapshot: {\r\n ...m.productSnapshot,\r\n quantity: Math.max(\r\n 1,\r\n m.productSnapshot\r\n .quantity - 1\r\n ),\r\n },\r\n }\r\n : m\r\n )\r\n )\r\n }\r\n style={{\r\n background: \"transparent\",\r\n color:\r\n storeDetails.themeDarkColor,\r\n }}\r\n >\r\n −\r\n </button>\r\n <div className=\"px-3 py-1 text-sm select-none\">\r\n {chat.productSnapshot.quantity}\r\n </div>\r\n <button\r\n className=\"px-3 py-1 text-sm\"\r\n onClick={() =>\r\n setChatHistory((prev) =>\r\n prev.map((m, i) =>\r\n i === index &&\r\n m.productSnapshot\r\n ? {\r\n ...m,\r\n productSnapshot: {\r\n ...m.productSnapshot,\r\n quantity:\r\n m.productSnapshot\r\n .quantity + 1,\r\n },\r\n }\r\n : m\r\n )\r\n )\r\n }\r\n style={{\r\n background: \"transparent\",\r\n color:\r\n storeDetails.themeDarkColor,\r\n }}\r\n >\r\n +\r\n </button>\r\n </div>\r\n <button\r\n onClick={() => {\r\n handleAddToCart(\r\n mapSnapshotToProduct(\r\n chat.productSnapshot!\r\n ),\r\n chat.productSnapshot!.quantity\r\n );\r\n }}\r\n disabled={adding}\r\n className=\"px-4 py-2 rounded-full font-medium\"\r\n style={{\r\n background:\r\n storeDetails.tanyaThemeColor,\r\n color:\r\n storeDetails?.tanyaThemeContrastColor ||\r\n \"#fff\",\r\n opacity: adding ? 0.8 : 1,\r\n }}\r\n >\r\n {adding ? \"Adding...\" : \"Add to cart\"}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </>\r\n )}\r\n <div className=\"mb-20\"></div>\r\n </div>\r\n ))}\r\n </div>\r\n\r\n {/* Sticky Bottom Input Bar */}\r\n <div className=\"flex flex-col gap-2 sticky bottom-0 left-0 right-0 bg-[#E3DEEF] z-50 px-4 py-2\">\r\n {/* Gradient Border Wrapper */}\r\n <div\r\n className=\"p-[1px] rounded-xl\"\r\n style={{\r\n background:\r\n \"linear-gradient(180deg, #B09FFF 0%, #8D79F6 100%)\",\r\n }}\r\n >\r\n {/* Input + Mic + Submit */}\r\n <div className=\"flex items-center bg-[#FFFFFF] flex-1 rounded-xl px-2 py-1\">\r\n <input\r\n className=\"flex-1 bg-[#FFFFFF] text-[#232323] outline-none border-none px-2 py-2 text-sm\"\r\n placeholder=\"How can I help you...\"\r\n value={inputText}\r\n autoFocus\r\n onChange={(e) => setInputText(e.target.value)}\r\n onKeyDown={(e) => {\r\n if (e.key === \"Enter\" && !isLoading)\r\n handleSendMessage();\r\n }}\r\n />\r\n {/* Mic Icon */}\r\n {/* <button\r\n type=\"button\"\r\n className=\"p-2 text-[#959595] hover:text-[#6952C7]\"\r\n >\r\n <svg\r\n width=\"20\"\r\n height=\"20\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <g clipPath=\"url(#clip0_501_6086)\">\r\n <path\r\n d=\"M7.5 4.16663C7.5 3.50358 7.76339 2.8677 8.23223 2.39886C8.70107 1.93002 9.33696 1.66663 10 1.66663C10.663 1.66663 11.2989 1.93002 11.7678 2.39886C12.2366 2.8677 12.5 3.50358 12.5 4.16663V8.33329C12.5 8.99633 12.2366 9.63222 11.7678 10.1011C11.2989 10.5699 10.663 10.8333 10 10.8333C9.33696 10.8333 8.70107 10.5699 8.23223 10.1011C7.76339 9.63222 7.5 8.99633 7.5 8.33329V4.16663Z\"\r\n stroke=\"#959595\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n <path\r\n d=\"M4.1665 8.33337C4.1665 9.88047 4.78109 11.3642 5.87505 12.4582C6.96901 13.5521 8.45274 14.1667 9.99984 14.1667C11.5469 14.1667 13.0307 13.5521 14.1246 12.4582C15.2186 11.3642 15.8332 9.88047 15.8332 8.33337\"\r\n stroke=\"#959595\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n <path\r\n d=\"M6.6665 17.5H13.3332\"\r\n stroke=\"#959595\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n <path\r\n d=\"M10 14.1666V17.5\"\r\n stroke=\"#959595\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_501_6086\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </button> */}\r\n {/* Submit Button */}\r\n <button\r\n type=\"submit\"\r\n disabled={isLoading}\r\n className=\"p-3\"\r\n onClick={() => handleSendMessage()}\r\n >\r\n {isLoading ? (\r\n <div\r\n className=\"p-3 animate-spin rounded-full h-3 w-3 border-b-2\"\r\n style={{\r\n borderBottom: \"2px solid\",\r\n color: storeDetails.tanyaThemeColor,\r\n }}\r\n />\r\n ) : (\r\n <svg\r\n width=\"20\"\r\n height=\"20\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M16.6357 13.6701L18.3521 8.5208C19.8516 4.02242 20.6013 1.77322 19.414 0.585948C18.2268 -0.601312 15.9776 0.148418 11.4792 1.64788L6.32987 3.36432C2.69923 4.57453 0.883923 5.17964 0.368062 6.06698C-0.122688 6.91112 -0.122688 7.95369 0.368062 8.7978C0.883923 9.6852 2.69923 10.2903 6.32987 11.5005C6.77981 11.6505 7.28601 11.5434 7.62294 11.2096L13.1286 5.75495C13.4383 5.44808 13.9382 5.45041 14.245 5.76015C14.5519 6.06989 14.5496 6.56975 14.2398 6.87662L8.8231 12.2432C8.4518 12.6111 8.3342 13.1742 8.4995 13.6701C9.7097 17.3007 10.3148 19.1161 11.2022 19.6319C12.0463 20.1227 13.0889 20.1227 13.933 19.6319C14.8204 19.1161 15.4255 17.3008 16.6357 13.6701Z\"\r\n fill=\"#6952C7\"\r\n />\r\n </svg>\r\n )}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ProductDisplayCard />\r\n </div>\r\n {/* </PopoverContent> */}\r\n </div>\r\n </>\r\n )}\r\n </Popover>\r\n </div>\r\n );\r\n};\r\n\r\nexport default TanyaShoppingAssistantStream;\r\n\r\n// ${import.meta.env.VITE_SERVER_BASE_URL}api/web-bff/assistantStream\r\n"],"names":["composeEventHandlers","originalEventHandler","ourEventHandler","checkForDefaultPrevented","event","setRef","ref","value","composeRefs","refs","node","hasCleanup","cleanups","cleanup","i","useComposedRefs","React","createContextScope","scopeName","createContextScopeDeps","defaultContexts","createContext3","rootComponentName","defaultContext","BaseContext","index","Provider","props","scope","children","context","Context","_a","jsx","useContext2","consumerName","createScope","scopeContexts","contexts","composeContextScopes","scopes","baseScope","scopeHooks","createScope2","overrideScopes","nextScopes","nextScopes2","useScope","currentScope","createSlot","ownerName","SlotClone","createSlotClone","Slot2","forwardedRef","slotProps","childrenArray","slottable","isSlottable","newElement","newChildren","child","childrenRef","getElementRef","props2","mergeProps","SLOTTABLE_IDENTIFIER","childProps","overrideProps","propName","slotPropValue","childPropValue","args","result","element","getter","mayWarn","_b","NODES","Primitive","primitive","Slot","Node","asChild","primitiveProps","Comp","dispatchDiscreteCustomEvent","target","ReactDOM","useCallbackRef","callback","callbackRef","useEscapeKeydown","onEscapeKeyDownProp","ownerDocument","onEscapeKeyDown","handleKeyDown","DISMISSABLE_LAYER_NAME","CONTEXT_UPDATE","POINTER_DOWN_OUTSIDE","FOCUS_OUTSIDE","originalBodyPointerEvents","DismissableLayerContext","DismissableLayer","disableOutsidePointerEvents","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","layerProps","setNode","force","composedRefs","node2","layers","highestLayerWithOutsidePointerEventsDisabled","highestLayerWithOutsidePointerEventsDisabledIndex","isBodyPointerEventsDisabled","isPointerEventsEnabled","pointerDownOutside","usePointerDownOutside","isPointerDownOnBranch","branch","focusOutside","useFocusOutside","dispatchUpdate","handleUpdate","BRANCH_NAME","DismissableLayerBranch","handlePointerDownOutside","isPointerInsideReactTreeRef","handleClickRef","handlePointerDown","handleAndDispatchPointerDownOutsideEvent2","handleAndDispatchCustomEvent","eventDetail","timerId","handleFocusOutside","isFocusInsideReactTreeRef","handleFocus","name","handler","detail","discrete","count","useFocusGuards","edgeGuards","createFocusGuard","AUTOFOCUS_ON_MOUNT","AUTOFOCUS_ON_UNMOUNT","EVENT_OPTIONS","FOCUS_SCOPE_NAME","FocusScope","loop","trapped","onMountAutoFocusProp","onUnmountAutoFocusProp","scopeProps","container","setContainer","onMountAutoFocus","onUnmountAutoFocus","lastFocusedElementRef","focusScope","handleFocusIn2","focus","handleFocusOut2","relatedTarget","handleMutations2","mutations","mutation","mutationObserver","focusScopesStack","previouslyFocusedElement","mountEvent","focusFirst","removeLinks","getTabbableCandidates","unmountEvent","isTabKey","focusedElement","container2","first","last","getTabbableEdges","candidates","select","candidate","findVisible","nodes","walker","isHiddenInput","elements","isHidden","upTo","isSelectableInput","createFocusScopesStack","stack","activeFocusScope","arrayRemove","array","item","updatedArray","items","useLayoutEffect2","useReactId","useId","deterministicId","id","setId","useLayoutEffect","reactId","sides","min","max","round","floor","createCoords","v","oppositeSideMap","oppositeAlignmentMap","clamp","start","end","evaluate","param","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","length","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","getSideList","side","isStart","lr","rl","tb","bt","getOppositeAxisPlacements","flipAlignment","direction","list","expandPaddingObject","padding","getPaddingObject","rectToClientRect","rect","x","y","width","height","computeCoordsFromPlacement","_ref","reference","floating","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","computePosition","config","strategy","middleware","platform","validMiddleware","statefulPlacement","middlewareData","resetCount","fn","nextX","nextY","data","reset","detectOverflow","state","options","_await$platform$isEle","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","offsetParent","offsetScale","elementClientRect","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","offset","shouldAddOffset","alignmentOffset","flip","_middlewareData$arrow","_middlewareData$flip","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","detectOverflowOptions","initialSideAxis","isBasePlacement","fallbackPlacements","hasFallbackAxisSideDirection","placements","overflow","overflows","overflowsData","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","_overflowsData$","ignoreCrossAxisOverflow","hasInitialMainAxisOverflow","resetPlacement","d","a","b","_overflowsData$filter2","currentSideAxis","acc","getSideOffsets","isAnySideFullyClipped","hide","offsets","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","_middlewareData$offse","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","minSide","maxSide","limitedCoords","limitShift","rawOffset","computedOffset","len","limitMin","limitMax","_middlewareData$offse2","isOriginSide","size","_state$middlewareData","_state$middlewareData2","apply","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","noShift","availableHeight","availableWidth","xMin","xMax","yMin","yMax","nextDimensions","hasWindow","getNodeName","isNode","getWindow","_node$ownerDocument","getDocumentElement","isElement","isHTMLElement","isShadowRoot","isOverflowElement","overflowX","overflowY","display","getComputedStyle","isTableElement","isTopLayer","selector","isContainingBlock","elementOrCss","webkit","isWebKit","css","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","getNodeScroll","getNearestOverflowAncestor","parentNode","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","getCssDimensions","hasOffset","offsetWidth","offsetHeight","shouldFallback","unwrapElement","getScale","domElement","$","noOffsets","getVisualOffsets","shouldAddVisualOffsets","isFixed","floatingOffsetParent","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","left","top","getWindowScrollBarX","leftScroll","getHTMLOffset","documentElement","scroll","ignoreScrollbarX","htmlRect","convertOffsetParentRelativeRectToViewportRelativeRect","topLayer","isOffsetParentAnElement","offsetRect","htmlOffset","getClientRects","getDocumentRect","html","body","getViewportRect","visualViewport","visualViewportBased","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","getClippingElementAncestors","cache","cachedResult","el","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingRect","clippingAncestors","firstClippingAncestor","clippingRect","accRect","getDimensions","getRectRelativeToOffsetParent","setLeftRTLScrollbarOffset","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","getOffsetParent","svgOffsetParent","getElementRects","getOffsetParentFn","getDimensionsFn","floatingDimensions","isRTL","rectsAreEqual","observeMove","onMove","io","timeoutId","root","_io","refresh","skip","threshold","elementRectForRootMargin","insetTop","insetRight","insetBottom","insetLeft","isFirstUpdate","handleObserve","entries","ratio","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","layoutShift","animationFrame","referenceEl","ancestors","cleanupIo","reobserveFrame","resizeObserver","firstEntry","_resizeObserver","frameId","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","offset$1","shift$1","flip$1","size$1","hide$1","arrow$1","limitShift$1","mergedOptions","platformWithCache","computePosition$1","useEffect","deepEqual","keys","key","getDPR","roundByDPR","dpr","useLatestRef","useFloating","externalReference","externalFloating","transform","whileElementsMounted","open","setData","latestMiddleware","setLatestMiddleware","_reference","_setReference","_floating","_setFloating","setReference","referenceRef","setFloating","floatingRef","floatingEl","dataRef","hasWhileElementsMounted","whileElementsMountedRef","platformRef","openRef","fullData","isMountedRef","floatingStyles","initialStyles","isRef","arrow$2","deps","NAME","Arrow","arrowProps","Root","useSize","setSize","entry","borderSizeEntry","borderSize","POPPER_NAME","createPopperContext","createPopperScope","PopperProvider","usePopperContext","Popper","__scopePopper","anchor","setAnchor","ANCHOR_NAME","PopperAnchor","virtualRef","anchorProps","CONTENT_NAME","PopperContentProvider","useContentContext","PopperContent","sideOffset","align","alignOffset","arrowPadding","avoidCollisions","collisionBoundary","collisionPaddingProp","sticky","hideWhenDetached","updatePositionStrategy","onPlaced","contentProps","content","setContent","setArrow","arrowSize","arrowWidth","arrowHeight","desiredPlacement","collisionPadding","hasExplicitBoundaries","isNotNull","isPositioned","anchorWidth","anchorHeight","contentStyle","floatingUIarrow","transformOrigin","placedSide","placedAlign","getSideAndAlignFromPlacement","handlePlaced","arrowX","arrowY","cannotCenterArrow","_c","contentZIndex","setContentZIndex","_d","_e","_f","ARROW_NAME","OPPOSITE_SIDE","PopperArrow","contentContext","baseSide","ArrowPrimitive.Root","isArrowHidden","noArrowAlign","arrowXCenter","arrowYCenter","Root2","Anchor","Content","useStateMachine","initialState","machine","Presence","present","presence","usePresence","React2","stylesRef","prevPresentRef","prevAnimationNameRef","send","currentAnimationName","getAnimationName","styles","wasPresent","prevAnimationName","ownerWindow","handleAnimationEnd","isCurrentAnimation","currentFillMode","handleAnimationStart","useInsertionEffect","useControllableState","prop","defaultProp","onChange","caller","uncontrolledProp","setUncontrolledProp","onChangeRef","useUncontrolledState","isControlled","isControlledRef","wasControlled","setValue","nextValue","value2","isFunction","prevValueRef","getDefaultParent","originalTarget","sampleTarget","counterMap","uncontrolledNodes","markerMap","lockCount","unwrapHost","correctTargets","parent","targets","correctedTarget","applyAttributeToOthers","markerName","controlAttribute","markerCounter","hiddenNodes","elementsToKeep","elementsToStop","keep","deep","attr","alreadyHidden","counterValue","markerValue","e","hideOthers","activeParentNode","__assign","s","n","p","__rest","t","__spreadArray","to","from","pack","l","ar","zeroRightClassName","fullWidthClassName","noScrollbarsClassName","removedBarSizeVariable","assignRef","initialValue","useState","useIsomorphicLayoutEffect","currentValues","useMergeRefs","defaultValue","newValue","oldValue","prevRefs_1","nextRefs_1","current_1","ItoI","innerCreateMedium","defaults","buffer","assigned","medium","cb","cbs","pendingQueue","executeQueue","cycle","filter","createSidecarMedium","SideCar","sideCar","rest","Target","exportSidecar","exported","effectCar","nothing","RemoveScroll","parentRef","callbacks","setCallbacks","forwardProps","className","removeScrollBar","enabled","shards","noRelative","noIsolation","inert","allowPinchZoom","Container","gapMode","containerRef","containerProps","getNonce","makeStyleTag","tag","nonce","injectStyles","insertStyleTag","head","stylesheetSingleton","counter","stylesheet","style","styleHookSingleton","sheet","isDynamic","styleSingleton","useStyle","Sheet","dynamic","zeroGap","parse","getOffset","cs","right","getGapWidth","documentWidth","windowWidth","Style","lockAttribute","getStyles","allowRelative","important","gap","getCurrentUseCounter","useLockAttribute","newCounter","RemoveScrollBar","noImportant","passiveSupported","nonPassive","alwaysContainsScroll","elementCanBeScrolled","elementCouldBeVScrolled","elementCouldBeHScrolled","locationCouldBeScrolled","current","isScrollable","elementCouldBeScrolled","getScrollVariables","scrollHeight","clientHeight","getVScrollVariables","scrollTop","getHScrollVariables","scrollLeft","scrollWidth","clientWidth","getDirectionFactor","handleScroll","endTarget","sourceDelta","noOverscroll","directionFactor","delta","targetInLock","shouldCancelScroll","isDeltaPositive","availableScroll","availableScrollTop","position","scroll_1","capacity","elementScroll","getTouchXY","getDeltaXY","extractRef","deltaCompare","generateStyle","idCounter","lockStack","RemoveScrollSideCar","shouldPreventQueue","touchStartRef","activeAxis","lastProps","allow_1","shouldCancelEvent","touch","touchStart","deltaX","deltaY","currentAxis","moveDirection","canBeScrolledInMainDirection","cancelingAxis","shouldPrevent","_event","sourceEvent","shardNodes","shouldStop","shouldCancel","should","getOutermostShadowParent","scrollTouchStart","scrollWheel","scrollTouchMove","inst","shadowParent","ReactRemoveScroll","POPOVER_NAME","createPopoverContext","createPopoverScope","usePopperScope","PopoverProvider","usePopoverContext","Popover","__scopePopover","openProp","defaultOpen","onOpenChange","modal","popperScope","triggerRef","hasCustomAnchor","setHasCustomAnchor","setOpen","PopperPrimitive.Root","prevOpen","PopoverAnchor","onCustomAnchorAdd","onCustomAnchorRemove","PopperPrimitive.Anchor","TRIGGER_NAME","PopoverTrigger","triggerProps","composedTriggerRef","trigger","getState","PORTAL_NAME","PortalProvider","usePortalContext","PopoverContent","portalContext","forceMount","PopoverContentModal","PopoverContentNonModal","contentRef","isRightClickOutsideRef","PopoverContentImpl","originalEvent","ctrlLeftClick","isRightClick","hasInteractedOutsideRef","hasPointerDownOutsideRef","trapFocus","onOpenAutoFocus","onCloseAutoFocus","PopperPrimitive.Content","CLOSE_NAME","PopoverClose","closeProps","PopoverArrow","PopperPrimitive.Arrow","Trigger","notifySFCC","basketId","PopoverPrimitive.Root","PopoverPrimitive.Trigger","bind","thisArg","toString","getPrototypeOf","iterator","toStringTag","kindOf","thing","str","kindOfTest","type","typeOfTest","isArray","isUndefined","isBuffer","val","isArrayBuffer","isArrayBufferView","isString","isNumber","isObject","isBoolean","isPlainObject","prototype","isDate","isFile","isBlob","isFileList","isStream","isFormData","kind","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","trim","forEach","obj","allOwnKeys","findKey","_key","_global","isContextDefined","merge","caseless","assignValue","targetKey","extend","stripBOM","inherits","constructor","superConstructor","descriptors","toFlatObject","sourceObj","destObj","propFilter","merged","endsWith","searchString","lastIndex","toArray","arr","isTypedArray","TypedArray","forEachEntry","_iterator","pair","matchAll","regExp","matches","isHTMLForm","toCamelCase","m","p1","p2","hasOwnProperty","isRegExp","reduceDescriptors","reducer","reducedDescriptors","descriptor","ret","freezeMethods","toObjectSet","arrayOrString","delimiter","define","noop","toFiniteNumber","isSpecCompliantForm","toJSONObject","visit","source","reducedValue","isAsyncFn","isThenable","_setImmediate","setImmediateSupported","postMessageSupported","token","asap","isIterable","utils$1","AxiosError","message","code","request","response","utils","error","customProps","axiosError","httpAdapter","isVisitable","removeBrackets","renderKey","path","dots","isFlatArray","predicates","toFormData","formData","option","metaTokens","visitor","defaultVisitor","indexes","useBlob","convertValue","exposedHelpers","build","encode","charMap","match","AxiosURLSearchParams","params","encoder","_encode","buildURL","url","serializeFn","serializedParams","hashmarkIndex","InterceptorManager","fulfilled","rejected","h","transitionalDefaults","URLSearchParams$1","FormData$1","Blob$1","platform$1","URLSearchParams","FormData","Blob","hasBrowserEnv","_navigator","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","origin","toURLEncodedForm","helpers","parsePropPath","arrayToObject","formDataToJSON","buildPath","isNumericKey","isLast","stringifySafely","parser","headers","contentType","hasJSONContentType","isObjectPayload","_FormData","transitional","forcedJSONParsing","JSONRequested","strictJSONParsing","status","method","ignoreDuplicateOf","parseHeaders","rawHeaders","parsed","line","$internals","normalizeHeader","header","normalizeValue","parseTokens","tokens","tokensRE","isValidHeaderName","matchHeaderValue","isHeaderNameFilter","formatHeader","w","char","buildAccessors","accessorName","methodName","arg1","arg2","arg3","AxiosHeaders$1","valueOrRewrite","rewrite","self","setHeader","_value","_header","_rewrite","lHeader","setHeaders","dest","matcher","deleted","deleteHeader","format","normalized","asStrings","computed","accessors","defineAccessor","AxiosHeaders","mapped","headerValue","transformData","fns","isCancel","CanceledError","settle","resolve","reject","validateStatus","parseProtocol","speedometer","samplesCount","bytes","timestamps","tail","firstSampleTS","chunkLength","now","startedAt","bytesCount","passed","throttle","freq","timestamp","lastArgs","timer","invoke","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","loaded","total","progressBytes","rate","inRange","progressEventDecorator","throttled","lengthComputable","asyncDecorator","isURLSameOrigin","isMSIE","cookies","expires","domain","secure","cookie","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","allowAbsoluteUrls","isRelativeUrl","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","resolveConfig","newConfig","withXSRFToken","xsrfHeaderName","xsrfCookieName","auth","xsrfValue","isXHRAdapterSupported","xhrAdapter","_config","requestData","requestHeaders","responseType","onUploadProgress","onDownloadProgress","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","done","onloadend","responseHeaders","err","timeoutErrorMessage","cancel","protocol","composeSignals","signals","timeout","controller","aborted","onabort","reason","unsubscribe","signal","streamChunk","chunk","chunkSize","pos","readBytes","iterable","readStream","stream","reader","trackStream","onProgress","onFinish","_onFinish","loadedBytes","isFetchSupported","isReadableStreamSupported","encodeText","test","supportsRequestStream","duplexAccessed","hasContentType","DEFAULT_CHUNK_SIZE","supportsResponseStream","resolvers","res","_","getBodyLength","resolveBodyLength","fetchAdapter","cancelToken","withCredentials","fetchOptions","composedSignal","requestContentLength","_request","contentTypeHeader","flush","isCredentialsSupported","isStreamResponse","responseContentLength","responseData","knownAdapters","renderReason","isResolvedHandle","adapter","adapters","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","dispatchRequest","VERSION","validators","deprecatedWarnings","validator","version","formatMessage","opt","desc","opts","correctSpelling","assertOptions","schema","allowUnknown","Axios$1","instanceConfig","configOrUrl","dummy","paramsSerializer","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","promise","chain","onFulfilled","onRejected","fullPath","Axios","generateHTTPMethod","isForm","CancelToken$1","CancelToken","executor","resolvePromise","onfulfilled","_resolve","abort","c","spread","isAxiosError","payload","HttpStatusCode","createInstance","defaultConfig","instance","axios","promises","all","Cancel","formToJSON","getAdapter","apiConfig","fetchTokenBmGrant","URL","getHost","getSiteId","fetchExistingGuestCustomerToken","access_token","dwsid","clientId","shortCode","organisationId","authData","expires_in","isGuest","serverUrl","customerMail","endpoint","getSearchResults","query","basePath","host","getProductById","getInterestApi","customerId","customer_token","__viteBrowserExternal","factory","module","this","CryptoJS","Math","undefined","crypto","global","require","require$$0","cryptoSecureRandomInt","create","F","subtype","C","C_lib","Base","overrides","properties","propertyName","WordArray","words","sigBytes","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","thatByte","j","clone","nBytes","C_enc","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","utf8Str","BufferedBlockAlgorithm","doFlush","processedWords","dataWords","dataSigBytes","blockSize","blockSizeBytes","nBlocksReady","nWordsReady","nBytesReady","cfg","messageUpdate","hash","hasher","C_algo","X32WordArray","C_x64","high","low","x64Words","x64WordsLength","x32Words","x64Word","wordsLength","superInit","subInit","typedArray","typedArrayByteLength","utf16Chars","codePoint","utf16Str","utf16StrLength","swapEndian","word","map","base64Chars","byte1","byte2","byte3","triplet","paddingChar","base64Str","base64StrLength","reverseMap","paddingIndex","parseLoop","bits1","bits2","bitsCombined","urlSafe","Hasher","T","MD5","M","offset_i","M_offset_i","H","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","FF","GG","HH","II","nBitsTotal","nBitsLeft","nBitsTotalH","nBitsTotalL","H_i","W","SHA1","K","isPrime","sqrtN","factor","getFractionalBits","nPrime","SHA256","f","g","gamma0x","gamma0","gamma1x","gamma1","ch","maj","sigma0","sigma1","t1","t2","undef","require$$1","SHA224","X64Word","X64WordArray","X64Word_create","SHA512","H0","H1","H2","H3","H4","H5","H6","H7","H0h","H0l","H1h","H1l","H2h","H2l","H3h","H3l","H4h","H4l","H5h","H5l","H6h","H6l","H7h","H7l","ah","al","bh","bl","cl","dh","dl","eh","fh","fl","gh","gl","hh","hl","Wil","Wih","Wi","gamma0xh","gamma0xl","gamma0h","gamma0l","gamma1xh","gamma1xl","gamma1h","gamma1l","Wi7","Wi7h","Wi7l","Wi16","Wi16h","Wi16l","chh","chl","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Ki","Kih","Kil","t1l","t1h","t2l","t2h","require$$2","SHA384","RHO_OFFSETS","PI_INDEXES","ROUND_CONSTANTS","newX","newY","LFSR","roundConstantMsw","roundConstantLsw","bitPosition","SHA3","nBlockSizeLanes","M2i","M2i1","lane","tMsw","tLsw","Tx","Tx4","Tx1","Tx1Msw","Tx1Lsw","laneIndex","laneMsw","laneLsw","rhoOffset","TPiLane","T0","state0","TLane","Tx1Lane","Tx2Lane","roundConstant","blockSizeBits","outputLengthBytes","outputLengthLanes","hashWords","_zl","_zr","_sl","_sr","_hl","_hr","RIPEMD160","hr","zl","zr","sl","sr","br","cr","dr","er","f1","f2","f3","f4","f5","rotl","z","hasherBlockSize","hasherBlockSizeBytes","oKey","iKey","oKeyWords","iKeyWords","innerHash","hmac","HMAC","PBKDF2","password","salt","derivedKey","blockIndex","derivedKeyWords","blockIndexWords","keySize","iterations","block","blockWords","blockWordsLength","intermediate","intermediateWords","EvpKDF","Base64","Cipher","xformMode","dataUpdate","finalProcessedData","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","cipher","ciphertext","finalProcessedBlocks","C_mode","BlockCipherMode","iv","CBC","xorBlock","thisBlock","C_pad","Pkcs7","nPaddingBytes","paddingWord","paddingWords","modeCreator","mode","CipherParams","cipherParams","formatter","C_format","OpenSSLFormatter","openSSLStr","ciphertextWords","encryptor","cipherCfg","plaintext","C_kdf","OpenSSLKdf","ivSize","derivedParams","CFB","generateKeystreamAndEncrypt","keystream","CTR","Encryptor","CTRGladman","incWord","b1","b2","b3","incCounter","OFB","ECB","lastBytePos","input","require$$3","require$$4","BlockCipher","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","xi","sx","x2","x4","x8","RCON","AES","keyWords","nRounds","ksRows","keySchedule","ksRow","invKeySchedule","invKsRow","s0","s1","s2","s3","t0","t3","PC1","PC2","BIT_SHIFTS","SBOX_P","SBOX_MASK","DES","keyBits","keyBitPos","subKeys","nSubKey","subKey","bitShift","invSubKeys","exchangeLR","exchangeRL","lBlock","rBlock","mask","TripleDES","key1","key2","key3","StreamCipher","RC4","keySigBytes","S","keyByteIndex","keyByte","generateKeystreamWord","keystreamWord","RC4Drop","C_","G","Rabbit","X","nextState","IV","IV_0","IV_1","i0","i2","i1","i3","gx","ga","gb","RabbitLegacy","N","ORIG_P","ORIG_S","BLOWFISH_CTX","ctx","BlowFish_Encrypt","Xl","Xr","temp","BlowFish_Decrypt","BlowFishInit","keysize","Row","Col","keyIndex","Data1","Data2","Blowfish","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","displayData","imageUrlArray","image","currencyFormatter","currencyCode","priceFormatter","initialCapital","text","stringReducer","formatStringToHtml","numberedPoint","defaultIconDimensions","defaultIconTransformations","defaultIconProps","defaultExtendedIconProps","mergeIconTransformations","obj1","obj2","rotate","mergeIconData","getIconsTree","names","icons","aliases","resolved","internalGetIconData","tree","currentProps","name2","parseIconSet","optionalPropertyDefaults","checkOptionalProps","quicklyValidateIconSet","icon","matchIconName","stringToIcon","validate","allowSimpleName","provider","colonSeparated","prefix","validateIconName","dashSeparated","dataStorage","newStorage","getStorage","providerStorage","addIconSet","storage","addIconToStorage","simpleNames","allowSimpleNames","allow","getIconData","iconName","addIcon","addCollection","added","defaultIconSizeCustomisations","defaultIconCustomisations","unitsSplit","unitsTest","calculateSize","precision","oldParts","newParts","num","splitSVGDefs","defs","endEnd","mergeDefsAndContent","wrapSVGContent","split","isUnsetKeyword","iconToSVG","customisations","fullIcon","fullCustomisations","box","transformations","hFlip","vFlip","rotation","tempValue","customisationsWidth","customisationsHeight","boxWidth","boxHeight","attributes","setAttr","viewBox","regex","randomPrefix","replaceIDs","ids","suffix","newID","escapedID","setAPIModule","getAPIModule","createAPIConfig","resources","configStorage","fallBackAPISources","fallBackAPI","addAPIProvider","customConfig","getAPIConfig","detectFetch","fetchModule","calculateMaxLength","maxHostLength","shouldAbort","prepare","results","maxLength","getPath","iconsList","urlParams","uri","defaultError","fetchAPIModule","sortIcons","lastIcon","localStorage","removeCallback","storages","row","updateCallbacks","hasPending","oldLength","storeCallback","pendingSources","listToIcons","sendQuery","resourcesCount","startIndex","startTime","queriesSent","lastError","queue","doneCallbacks","resetTimer","subscribe","overwrite","getQueryStatus","failQuery","clearQueue","moduleResponse","isError","queued","execNext","resource","status2","initRedundancy","queries","queryCallback","doneCallback","query2","find","emptyCallback$1","redundancyCache","getRedundancyCache","redundancy","cachedReundancy","sendAPIQuery","api","cached","moduleKey","emptyCallback","loadedNewIcons","checkIconNamesForAPI","valid","invalid","parseLoaderResponse","checkMissing","pending","parsePossiblyAsyncResponse","loadNewIcons","icons2","customIconLoader","iconSet","loadIcons","cleanedIcons","sortedIcons","callCallback","newIcons","sources","lastProvider","lastPrefix","providerNewIcons","mergeCustomisations","valueType","separator","flipFromString","custom","rotateFromString","units","iconToHTML","renderAttribsHTML","encodeSVGforURL","svg","svgToData","svgToURL","policy","createPolicy","cleanUpInnerHTML","defaultExtendedIconCustomisations","svgDefaults","commonProps","monotoneProps","coloredProps","propsToAdd","propsToAddTo","inlineDefaults","fixSize","render","defaultProps","customStyle","componentProps","classNames","renderAttribs","localCounter","createElement","useMask","_window","preload","providers","IconComponent","mounted","setMounted","setAbort","getInitialState","setState","changeState","newState","updateState","Icon","forwardRef","productSlice","createSlice","action","setProduct","useResponsiveProductsPerPage","getProductsPerPage","productsPerPage","setProductsPerPage","handleResize","ProductCarousel","product","dispatch","useDispatch","setStartIndex","nextProducts","prevIndex","prevProducts","getProduct","jsxs","prod","ProductDisplay","chat","storeDetails","products","createBasket","addProductToBasket","fetchBasket","BASKET_ID_KEY","TOKEN_KEY","TOKEN_EXPIRY_KEY","EXPIRY_TIME","setStoredBasketId","setStoredToken","expiryTime","Mt","o","L","P","mt","$t","Xt","at","I","st","vt","ht","Ct","nt","rt","Pt","Wt","U","V","Q","Gt","r","qt","ANIMATION_DURATION","ProductDisplayCard","useSelector","show","setShow","addToCart","toast","productData","customerData","basketIdFromCustomer","tokenExpiry","currentTime","authDetails","newExpiryTime","fetchBasketResponse","_i","_j","basketResponse","_k","_l","_m","_n","_o","_p","viewMore","Fragment","group","TanyaShoppingAssistantStream","shoppingOptions","payloadMapping","productName","useRef","productId","productImage","productPrice","setAuthDetails","searchParams","useSearchParams","isOpen","setIsOpen","isAnimating","setIsAnimating","isVisible","setIsVisible","adding","setAdding","isLoading","setIsLoading","productLoading","setProductLoading","inputText","setInputText","whom","setWhom","mapSnapshotToProduct","snap","chatHistory","setChatHistory","scrollRef","openPanel","closePanel","handleWhomSelection","selected","cachedToken","getJWTToken","tokenUrl","tokenPayload","tokenResponse","tokenData","expiresIn","getAuthDetails","getInterests","customer_id","runSecondaryFlow","productTitle","points","interests","prev","msg","idx","accessToken","user","isLoggedIn","invokeUrl","decoder","lines","jsonData","parsedData","handleSendMessage","question","newQuery","sanitizedWhom","keywords","getKeywords","sanitizeKeywords","keywordMatch","sanitizedKeywords","keyword","splitedKeywords","priceVal","handleAddToCart","productToBeAdded","quantity"],"mappings":"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AAe,WAAY,SAAU;AAAA,UAC7EA,EAAe,WAAY,UAAU;AAAA,UAAGA,EAAe,WAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,SAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,SAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,WAAY,SAAU;AAAA,UAC7EA,EAAe,WAAY,UAAU;AAAA,UAAGA,EAAe,WAAY,UAAU;AAAA,UAC7EA,EAAe,WAAY,UAAU;AAAA,UAAGA,EAAe,WAAY,UAAU;AAAA,UAC7EA,EAAe,WAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,SAAU;AAAA,UAC7EA,EAAe,YAAY,SAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,SAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,WAAY,UAAU;AAAA,UAAGA,EAAe,WAAY,UAAU;AAAA,UAC7EA,EAAe,WAAY,UAAU;AAAA,UAAGA,EAAe,WAAY,SAAU;AAAA,UAC7EA,EAAe,WAAY,SAAU;AAAA,UAAGA,EAAe,WAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,SAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,SAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,QAChF,GAGG1B,IAAI,CAAE;AACV,SAAC,WAAY;AACT,mBAASnhD,IAAI,GAAGA,IAAI,IAAIA;AACpB,YAAAmhD,EAAEnhD,CAAC,IAAI6iD,EAAgB;AAAA,QAEpC,GAAQ;AAKH,YAAIC,IAAS/F,EAAO,SAASoC,EAAO,OAAO;AAAA,UACvC,UAAU,WAAY;AAClB,iBAAK,QAAQ,IAAIyD,EAAa,KAAK;AAAA,cAC/B,IAAID,EAAQ,KAAK,YAAY,UAAU;AAAA,cAAG,IAAIA,EAAQ,KAAK,YAAY,UAAU;AAAA,cACjF,IAAIA,EAAQ,KAAK,YAAY,UAAU;AAAA,cAAG,IAAIA,EAAQ,KAAK,YAAY,UAAU;AAAA,cACjF,IAAIA,EAAQ,KAAK,YAAY,UAAU;AAAA,cAAG,IAAIA,EAAQ,KAAK,YAAY,SAAU;AAAA,cACjF,IAAIA,EAAQ,KAAK,WAAY,UAAU;AAAA,cAAG,IAAIA,EAAQ,KAAK,YAAY,SAAU;AAAA,YAClG,CAAc;AAAA,UACJ;AAAA,UAED,iBAAiB,SAAUrD,GAAGrsC,GAAQ;AAiDlC,qBA/CIwsC,IAAI,KAAK,MAAM,OAEfsD,IAAKtD,EAAE,CAAC,GACRuD,IAAKvD,EAAE,CAAC,GACRwD,IAAKxD,EAAE,CAAC,GACRyD,IAAKzD,EAAE,CAAC,GACR0D,IAAK1D,EAAE,CAAC,GACR2D,IAAK3D,EAAE,CAAC,GACR4D,IAAK5D,EAAE,CAAC,GACR6D,IAAK7D,EAAE,CAAC,GAER8D,IAAMR,EAAG,MACTS,IAAMT,EAAG,KACTU,IAAMT,EAAG,MACTU,IAAMV,EAAG,KACTW,IAAMV,EAAG,MACTW,IAAMX,EAAG,KACTY,IAAMX,EAAG,MACTY,IAAMZ,EAAG,KACTa,IAAMZ,EAAG,MACTa,IAAMb,EAAG,KACTc,IAAMb,EAAG,MACTc,IAAMd,EAAG,KACTe,IAAMd,EAAG,MACTe,IAAMf,EAAG,KACTgB,IAAMf,EAAG,MACTgB,IAAMhB,EAAG,KAGTiB,IAAKhB,GACLiB,KAAKhB,GACLiB,KAAKhB,GACLiB,IAAKhB,GACLxB,IAAKyB,GACLgB,IAAKf,GACLgB,IAAKf,GACLgB,IAAKf,GACLgB,IAAKf,GACLnmC,KAAKomC,GACLe,KAAKd,GACLe,KAAKd,GACLe,KAAKd,GACLe,KAAKd,GACLe,KAAKd,GACLe,KAAKd,GAGAtkD,KAAI,GAAGA,KAAI,IAAIA,MAAK;AACzB,kBAAIqlD,IACAC,IAGAC,KAAKpE,EAAEnhD,EAAC;AAGZ,kBAAIA,KAAI;AACJ,gBAAAslD,KAAMC,GAAG,OAAOjG,EAAErsC,IAASjT,KAAI,CAAC,IAAQ,GACxCqlD,KAAME,GAAG,MAAOjG,EAAErsC,IAASjT,KAAI,IAAI,CAAC,IAAI;AAAA,mBACrC;AAEH,oBAAI8hD,IAAWX,EAAEnhD,KAAI,EAAE,GACnBwlD,KAAW1D,EAAQ,MACnB2D,KAAW3D,EAAQ,KACnB4D,MAAaF,OAAa,IAAMC,MAAY,OAASD,OAAa,IAAMC,MAAY,MAAQD,OAAa,GACzGG,MAAaF,OAAa,IAAMD,MAAY,OAASC,OAAa,IAAMD,MAAY,OAASC,OAAa,IAAMD,MAAY,KAG5HxD,KAAWb,EAAEnhD,KAAI,CAAC,GAClB4lD,KAAW5D,GAAQ,MACnB6D,KAAW7D,GAAQ,KACnB8D,MAAaF,OAAa,KAAOC,MAAY,OAASD,MAAY,IAAMC,OAAa,MAAQD,OAAa,GAC1GG,MAAaF,OAAa,KAAOD,MAAY,OAASC,MAAY,IAAMD,OAAa,OAASC,OAAa,IAAMD,MAAY,KAG7HI,KAAO7E,EAAEnhD,KAAI,CAAC,GACdimD,KAAOD,GAAI,MACXE,KAAOF,GAAI,KAEXG,KAAQhF,EAAEnhD,KAAI,EAAE,GAChBomD,KAAQD,GAAK,MACbE,KAAQF,GAAK;AAEjB,gBAAAd,KAAMM,KAAUO,IAChBZ,KAAMI,KAAUO,MAASZ,OAAQ,IAAMM,OAAY,IAAK,IAAI,IAC5DN,KAAMA,KAAMU,IACZT,KAAMA,KAAMQ,MAAYT,OAAQ,IAAMU,OAAY,IAAK,IAAI,IAC3DV,KAAMA,KAAMgB,IACZf,KAAMA,KAAMc,MAAUf,OAAQ,IAAMgB,OAAU,IAAK,IAAI,IAEvDd,GAAG,OAAOD,IACVC,GAAG,MAAOF;AAAA,cAC/B;AAEiB,kBAAIiB,KAAQxB,IAAKC,KAAO,CAACD,IAAKG,IAC1BsB,KAAQ3oC,KAAKonC,KAAO,CAACpnC,KAAKsnC,IAC1BsB,KAAQjC,IAAKE,KAAOF,IAAKrC,IAAOuC,KAAKvC,GACrCuE,KAAQjC,KAAKE,IAAOF,KAAKG,IAAOD,IAAKC,GAErC+B,MAAYnC,MAAO,KAAOC,MAAM,MAASD,KAAM,KAAQC,OAAO,MAAQD,KAAM,KAAOC,OAAO,IAC1FmC,MAAYnC,OAAO,KAAOD,KAAM,MAASC,MAAM,KAAQD,MAAO,MAAQC,MAAM,KAAOD,MAAO,IAC1FqC,MAAY9B,MAAO,KAAOlnC,MAAM,OAASknC,MAAO,KAAOlnC,MAAM,OAASknC,KAAM,KAAOlnC,OAAO,IAC1FipC,MAAYjpC,OAAO,KAAOknC,KAAM,OAASlnC,OAAO,KAAOknC,KAAM,OAASlnC,MAAM,KAAOknC,MAAO,IAG1FgC,KAAMzF,EAAErhD,EAAC,GACT+mD,KAAMD,GAAG,MACTE,KAAMF,GAAG,KAETG,KAAM7B,KAAKyB,IACXK,KAAM/B,KAAKyB,MAAYK,OAAQ,IAAM7B,OAAO,IAAK,IAAI,IACrD6B,KAAMA,KAAMV,IACZW,KAAMA,KAAMZ,MAAQW,OAAQ,IAAMV,OAAQ,IAAK,IAAI,IACnDU,KAAMA,KAAMD,IACZE,KAAMA,KAAMH,MAAQE,OAAQ,IAAMD,OAAQ,IAAK,IAAI,IACnDC,KAAMA,KAAM5B,IACZ6B,KAAMA,KAAM5B,MAAQ2B,OAAQ,IAAM5B,OAAQ,IAAK,IAAI,IAGnD8B,KAAMR,KAAUF,IAChBW,KAAMV,KAAUF,MAASW,OAAQ,IAAMR,OAAY,IAAK,IAAI;AAGhE,cAAAxB,KAAKF,IACLG,KAAKF,IACLD,KAAKF,IACLG,KAAKF,IACLD,KAAKD,GACLE,KAAKpnC,IACLA,KAAMinC,IAAKoC,KAAO,GAClBnC,IAAMF,IAAKsC,MAAQtpC,OAAO,IAAMinC,MAAO,IAAK,IAAI,KAAM,GACtDD,IAAK1C,GACL2C,IAAKF,GACLzC,IAAKuC,IACLE,IAAKD,GACLD,KAAKF,GACLG,IAAKF,IACLA,KAAMyC,KAAME,KAAO,GACnB5C,IAAM2C,KAAME,MAAQ5C,OAAO,IAAMyC,OAAQ,IAAK,IAAI,KAAM;AAAA,YACzE;AAGa,YAAAzD,IAAMT,EAAG,MAAQS,IAAMgB,IACvBzB,EAAG,OAAQQ,IAAMgB,KAAOf,MAAQ,IAAMgB,OAAO,IAAK,IAAI,IACtDd,IAAMV,EAAG,MAAQU,IAAMgB,GACvB1B,EAAG,OAAQS,IAAMgB,MAAOf,MAAQ,IAAMgB,MAAO,IAAK,IAAI,IACtDd,IAAMX,EAAG,MAAQW,IAAMe,GACvB1B,EAAG,OAAQU,IAAMzB,KAAO0B,MAAQ,IAAMe,MAAO,IAAK,IAAI,IACtDb,IAAMZ,EAAG,MAAQY,IAAMe,GACvB3B,EAAG,OAAQW,IAAMe,KAAOd,MAAQ,IAAMe,MAAO,IAAK,IAAI,IACtDb,IAAMb,EAAG,MAAQa,IAAMpmC,IACvBulC,EAAG,OAAQY,IAAMe,KAAOd,MAAQ,IAAMpmC,OAAO,IAAK,IAAI,IACtDsmC,IAAMd,EAAG,MAAQc,IAAMc,IACvB5B,EAAG,OAAQa,IAAMc,MAAOb,MAAQ,IAAMc,OAAO,IAAK,IAAI,IACtDZ,IAAMf,EAAG,MAAQe,IAAMc,IACvB7B,EAAG,OAAQc,IAAMc,MAAOb,MAAQ,IAAMc,OAAO,IAAK,IAAI,IACtDZ,IAAMhB,EAAG,MAAQgB,IAAMc,IACvB9B,EAAG,OAAQe,IAAMc,MAAOb,MAAQ,IAAMc,OAAO,IAAK,IAAI;AAAA,UACzD;AAAA,UAED,aAAa,WAAY;AAErB,gBAAIl0C,IAAO,KAAK,OACZkrC,IAAYlrC,EAAK,OAEjB4vC,IAAa,KAAK,cAAc,GAChCC,IAAY7vC,EAAK,WAAW;AAGhC,YAAAkrC,EAAU2E,MAAc,CAAC,KAAK,OAAS,KAAKA,IAAY,IACxD3E,GAAa2E,IAAY,QAAS,MAAO,KAAK,EAAE,IAAI,KAAK,MAAMD,IAAa,UAAW,GACvF1E,GAAa2E,IAAY,QAAS,MAAO,KAAK,EAAE,IAAID,GACpD5vC,EAAK,WAAWkrC,EAAU,SAAS,GAGnC,KAAK,SAAU;AAGf,gBAAIS,IAAO,KAAK,MAAM,MAAO;AAG7B,mBAAOA;AAAA,UACV;AAAA,UAED,OAAO,WAAY;AACf,gBAAIzB,IAAQ+D,EAAO,MAAM,KAAK,IAAI;AAClC,mBAAA/D,EAAM,QAAQ,KAAK,MAAM,MAAO,GAEzBA;AAAA,UACV;AAAA,UAED,WAAW,OAAK;AAAA,QACzB,CAAM;AAgBD,QAAAjB,EAAE,SAASgF,EAAO,cAAc2D,CAAM,GAgBtC3I,EAAE,aAAagF,EAAO,kBAAkB2D,CAAM;AAAA,MACnD,EAAI,GAGItJ,EAAS;AAAA,IAEjB,CAAC;AAAA;;;;;ACrUA,KAAC,SAAU95B,GAAM25B,GAASmJ,GAAO;AAGhC,MAAAlJ,EAAA,UAA2BD,EAAQS,GAAiB,GAAE2I,GAAA,GAAuB4E,IAAmB;AAAA,IAUlG,GAAE9N,IAAM,SAAUC,GAAU;AAE3B,aAAC,WAAY;AAET,YAAIW,IAAIX,GACJyD,IAAQ9C,EAAE,KACVwI,IAAU1F,EAAM,MAChB2F,IAAe3F,EAAM,WACrBF,IAAS5C,EAAE,MACX2I,IAAS/F,EAAO,QAKhBuK,IAASvK,EAAO,SAAS+F,EAAO,OAAO;AAAA,UACvC,UAAU,WAAY;AAClB,iBAAK,QAAQ,IAAIF,EAAa,KAAK;AAAA,cAC/B,IAAID,EAAQ,KAAK,YAAY,UAAU;AAAA,cAAG,IAAIA,EAAQ,KAAK,YAAY,SAAU;AAAA,cACjF,IAAIA,EAAQ,KAAK,YAAY,SAAU;AAAA,cAAG,IAAIA,EAAQ,KAAK,WAAY,UAAU;AAAA,cACjF,IAAIA,EAAQ,KAAK,YAAY,UAAU;AAAA,cAAG,IAAIA,EAAQ,KAAK,YAAY,UAAU;AAAA,cACjF,IAAIA,EAAQ,KAAK,YAAY,UAAU;AAAA,cAAG,IAAIA,EAAQ,KAAK,YAAY,UAAU;AAAA,YAClG,CAAc;AAAA,UACJ;AAAA,UAED,aAAa,WAAY;AACrB,gBAAI9F,IAAOiG,EAAO,YAAY,KAAK,IAAI;AAEvC,mBAAAjG,EAAK,YAAY,IAEVA;AAAA,UACpB;AAAA,QACA,CAAM;AAgBD,QAAA1C,EAAE,SAAS2I,EAAO,cAAcwE,CAAM,GAgBtCnN,EAAE,aAAa2I,EAAO,kBAAkBwE,CAAM;AAAA,MACnD,EAAI,GAGI9N,EAAS;AAAA,IAEjB,CAAC;AAAA;;;;;AClFA,KAAC,SAAU95B,GAAM25B,GAASmJ,GAAO;AAGhC,MAAAlJ,EAAA,UAA2BD,EAAQS,GAAiB,GAAE2I,IAAqB;AAAA,IAU7E,GAAElJ,IAAM,SAAUC,GAAU;AAE3B,aAAC,SAAUC,GAAM;AAEb,YAAIU,IAAIX,GACJY,IAAQD,EAAE,KACVM,IAAYL,EAAM,WAClB+E,IAAS/E,EAAM,QACf6C,IAAQ9C,EAAE,KACVwI,IAAU1F,EAAM,MAChBF,IAAS5C,EAAE,MAGXoN,IAAc,CAAE,GAChBC,IAAc,CAAE,GAChBC,IAAkB,CAAE;AAGxB,SAAC,WAAY;AAGT,mBADI,IAAI,GAAGj4C,IAAI,GACN4e,IAAI,GAAGA,IAAI,IAAIA,KAAK;AACzB,YAAAm5B,EAAY,IAAI,IAAI/3C,CAAC,KAAM4e,IAAI,MAAMA,IAAI,KAAK,IAAK;AAEnD,gBAAIs5B,IAAOl4C,IAAI,GACXm4C,KAAQ,IAAI,IAAI,IAAIn4C,KAAK;AAC7B,gBAAIk4C,GACJl4C,IAAIm4C;AAAA,UACjB;AAGS,mBAAS,IAAI,GAAG,IAAI,GAAG;AACnB,qBAASn4C,IAAI,GAAGA,IAAI,GAAGA;AACnB,cAAAg4C,EAAW,IAAI,IAAIh4C,CAAC,IAAIA,KAAM,IAAI,IAAI,IAAIA,KAAK,IAAK;AAM5D,mBADIo4C,IAAO,GACF5nD,IAAI,GAAGA,IAAI,IAAIA,KAAK;AAIzB,qBAHI6nD,IAAmB,GACnBC,IAAmB,GAEd3M,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxB,kBAAIyM,IAAO,GAAM;AACb,oBAAIG,KAAe,KAAK5M,KAAK;AAC7B,gBAAI4M,IAAc,KACdD,KAAoB,KAAKC,IAEzBF,KAAoB,KAAME,IAAc;AAAA,cAEjE;AAGiB,cAAIH,IAAO,MAEPA,IAAQA,KAAQ,IAAK,MAErBA,MAAS;AAAA,YAE9B;AAEa,YAAAH,EAAgBznD,CAAC,IAAI2iD,EAAQ,OAAOkF,GAAkBC,CAAgB;AAAA,UACnF;AAAA,QACA,GAAQ;AAGH,YAAI1I,IAAI,CAAE;AACV,SAAC,WAAY;AACT,mBAASp/C,IAAI,GAAGA,IAAI,IAAIA;AACpB,YAAAo/C,EAAEp/C,CAAC,IAAI2iD,EAAQ,OAAQ;AAAA,QAEpC,GAAQ;AAKH,YAAIqF,IAAOjL,EAAO,OAAOoC,EAAO,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASnC,KAAKA,EAAO,IAAI,OAAO;AAAA,YACnB,cAAc;AAAA,UAC3B,CAAU;AAAA,UAED,UAAU,WAAY;AAElB,qBADI9tC,IAAQ,KAAK,SAAS,CAAA,GACjBrR,IAAI,GAAGA,IAAI,IAAIA;AACpB,cAAAqR,EAAMrR,CAAC,IAAI,IAAI2iD,EAAQ,KAAM;AAGjC,iBAAK,aAAa,OAAO,IAAI,KAAK,IAAI,gBAAgB;AAAA,UACzD;AAAA,UAED,iBAAiB,SAAUrD,GAAGrsC,GAAQ;AAMlC,qBAJI5B,IAAQ,KAAK,QACb42C,IAAkB,KAAK,YAAY,GAG9BjoD,IAAI,GAAGA,IAAIioD,GAAiBjoD,KAAK;AAEtC,kBAAIkoD,IAAO5I,EAAErsC,IAAS,IAAIjT,CAAC,GACvBmoD,IAAO7I,EAAErsC,IAAS,IAAIjT,IAAI,CAAC;AAG/B,cAAAkoD,KACOA,KAAO,IAAOA,MAAQ,MAAO,YAC7BA,KAAO,KAAOA,MAAQ,KAAO,YAEpCC,KACOA,KAAQ,IAAOA,MAAS,MAAO,YAC/BA,KAAQ,KAAOA,MAAS,KAAO;AAItC,kBAAIC,IAAO/2C,EAAMrR,CAAC;AAClB,cAAAooD,EAAK,QAAQD,GACbC,EAAK,OAAQF;AAAA,YAC9B;AAGa,qBAASz7C,IAAQ,GAAGA,IAAQ,IAAIA,KAAS;AAErC,uBAAS8C,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAGxB,yBADI84C,IAAO,GAAGC,IAAO,GACZ94C,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxB,sBAAI44C,IAAO/2C,EAAM9B,IAAI,IAAIC,CAAC;AAC1B,kBAAA64C,KAAQD,EAAK,MACbE,KAAQF,EAAK;AAAA,gBACtC;AAGqB,oBAAIG,IAAKnJ,EAAE7vC,CAAC;AACZ,gBAAAg5C,EAAG,OAAOF,GACVE,EAAG,MAAOD;AAAA,cAC/B;AACiB,uBAAS/4C,IAAI,GAAGA,IAAI,GAAGA;AAUnB,yBARIi5C,IAAMpJ,GAAG7vC,IAAI,KAAK,CAAC,GACnBk5C,IAAMrJ,GAAG7vC,IAAI,KAAK,CAAC,GACnBm5C,IAASD,EAAI,MACbE,IAASF,EAAI,KAGbJ,IAAOG,EAAI,QAASE,KAAU,IAAMC,MAAW,KAC/CL,IAAOE,EAAI,OAASG,KAAU,IAAMD,MAAW,KAC1Cl5C,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxB,sBAAI44C,IAAO/2C,EAAM9B,IAAI,IAAIC,CAAC;AAC1B,kBAAA44C,EAAK,QAAQC,GACbD,EAAK,OAAQE;AAAA,gBACtC;AAIiB,uBAASM,IAAY,GAAGA,IAAY,IAAIA,KAAa;AACjD,oBAAIP,GACAC,GAGAF,IAAO/2C,EAAMu3C,CAAS,GACtBC,IAAUT,EAAK,MACfU,IAAUV,EAAK,KACfW,IAAYxB,EAAYqB,CAAS;AAGrC,gBAAIG,IAAY,MACZV,IAAQQ,KAAWE,IAAcD,MAAa,KAAKC,GACnDT,IAAQQ,KAAWC,IAAcF,MAAa,KAAKE,MAEnDV,IAAQS,KAAYC,IAAY,KAAQF,MAAa,KAAKE,GAC1DT,IAAQO,KAAYE,IAAY,KAAQD,MAAa,KAAKC;AAI9D,oBAAIC,IAAU5J,EAAEoI,EAAWoB,CAAS,CAAC;AACrC,gBAAAI,EAAQ,OAAOX,GACfW,EAAQ,MAAOV;AAAA,cACpC;AAGiB,kBAAIW,IAAK7J,EAAE,CAAC,GACR8J,IAAS73C,EAAM,CAAC;AACpB,cAAA43C,EAAG,OAAOC,EAAO,MACjBD,EAAG,MAAOC,EAAO;AAGjB,uBAAS35C,IAAI,GAAGA,IAAI,GAAGA;AACnB,yBAASC,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAExB,sBAAIo5C,IAAYr5C,IAAI,IAAIC,GACpB44C,IAAO/2C,EAAMu3C,CAAS,GACtBO,IAAQ/J,EAAEwJ,CAAS,GACnBQ,KAAUhK,GAAI7vC,IAAI,KAAK,IAAK,IAAIC,CAAC,GACjC65C,KAAUjK,GAAI7vC,IAAI,KAAK,IAAK,IAAIC,CAAC;AAGrC,kBAAA44C,EAAK,OAAOe,EAAM,OAAQ,CAACC,GAAQ,OAAOC,GAAQ,MAClDjB,EAAK,MAAOe,EAAM,MAAQ,CAACC,GAAQ,MAAOC,GAAQ;AAAA,gBAC3E;AAIiB,kBAAIjB,IAAO/2C,EAAM,CAAC,GACdi4C,IAAgB7B,EAAgBh7C,CAAK;AACzC,cAAA27C,EAAK,QAAQkB,EAAc,MAC3BlB,EAAK,OAAQkB,EAAc;AAAA,YAC5C;AAAA,UACU;AAAA,UAED,aAAa,WAAY;AAErB,gBAAIp4C,IAAO,KAAK,OACZkrC,IAAYlrC,EAAK;AACJ,iBAAK,cAAc;AACpC,gBAAI6vC,IAAY7vC,EAAK,WAAW,GAC5Bq4C,IAAgB,KAAK,YAAY;AAGrC,YAAAnN,EAAU2E,MAAc,CAAC,KAAK,KAAQ,KAAKA,IAAY,IACvD3E,GAAY3C,EAAK,MAAMsH,IAAY,KAAKwI,CAAa,IAAIA,MAAmB,KAAK,CAAC,KAAK,KACvFr4C,EAAK,WAAWkrC,EAAU,SAAS,GAGnC,KAAK,SAAU;AASf,qBANI/qC,IAAQ,KAAK,QACbm4C,IAAoB,KAAK,IAAI,eAAe,GAC5CC,IAAoBD,IAAoB,GAGxCE,IAAY,CAAE,GACT1pD,IAAI,GAAGA,IAAIypD,GAAmBzpD,KAAK;AAExC,kBAAIooD,IAAO/2C,EAAMrR,CAAC,GACd6oD,IAAUT,EAAK,MACfU,IAAUV,EAAK;AAGnB,cAAAS,KACOA,KAAW,IAAOA,MAAY,MAAO,YACrCA,KAAW,KAAOA,MAAY,KAAO,YAE5CC,KACOA,KAAW,IAAOA,MAAY,MAAO,YACrCA,KAAW,KAAOA,MAAY,KAAO,YAI5CY,EAAU,KAAKZ,CAAO,GACtBY,EAAU,KAAKb,CAAO;AAAA,YACvC;AAGa,mBAAO,IAAIpO,EAAU,KAAKiP,GAAWF,CAAiB;AAAA,UACzD;AAAA,UAED,OAAO,WAAY;AAIf,qBAHIpO,IAAQ+D,EAAO,MAAM,KAAK,IAAI,GAE9B9tC,IAAQ+pC,EAAM,SAAS,KAAK,OAAO,MAAM,CAAC,GACrCp7C,IAAI,GAAGA,IAAI,IAAIA;AACpB,cAAAqR,EAAMrR,CAAC,IAAIqR,EAAMrR,CAAC,EAAE,MAAO;AAG/B,mBAAOo7C;AAAA,UACpB;AAAA,QACA,CAAM;AAgBD,QAAAjB,EAAE,OAAOgF,EAAO,cAAc6I,CAAI,GAgBlC7N,EAAE,WAAWgF,EAAO,kBAAkB6I,CAAI;AAAA,MAC7C,EAAC,IAAI,GAGCxO,EAAS;AAAA,IAEjB,CAAC;AAAA;;;;;ACrUA,KAAC,SAAU95B,GAAM25B,GAAS;AAGzB,MAAAC,YAA2BD,EAAQS,IAAiB;AAAA,IAUtD,GAAEP,IAAM,SAAUC,GAAU;AAAA,MAE5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWC,aAAC,SAAUC,GAAM;AAEb,YAAIU,IAAIX,GACJY,IAAQD,EAAE,KACVM,IAAYL,EAAM,WAClB+E,IAAS/E,EAAM,QACf2C,IAAS5C,EAAE,MAGXwP,IAAMlP,EAAU,OAAO;AAAA,UACvB;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAC3D;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAC5D;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAG;AAAA,UAC3D;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAC5D;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAI;AAAA,QAAE,CAAC,GAC9DmP,IAAMnP,EAAU,OAAO;AAAA,UACvB;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAC3D;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAC5D;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAC5D;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAC3D;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,QAAE,CAAC,GAC/DoP,IAAMpP,EAAU,OAAO;AAAA,UACtB;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAC9D;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAI;AAAA,UAC3D;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAC3D;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAC9D;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,SAAG,GAC/DqP,IAAMrP,EAAU,OAAO;AAAA,UACvB;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAC5D;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAC3D;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAAI;AAAA,UAC5D;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAC7D;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAK;AAAA,UAAI;AAAA,UAAG;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,SAAI,GAE/DsP,IAAOtP,EAAU,OAAO,CAAE,GAAY,YAAY,YAAY,YAAY,UAAU,CAAC,GACrFuP,IAAOvP,EAAU,OAAO,CAAE,YAAY,YAAY,YAAY,YAAY,CAAU,CAAC,GAKrFwP,IAAYlN,EAAO,YAAYoC,EAAO,OAAO;AAAA,UAC7C,UAAU,WAAY;AAClB,iBAAK,QAAS1E,EAAU,OAAO,CAAC,YAAY,YAAY,YAAY,WAAY,UAAU,CAAC;AAAA,UAC9F;AAAA,UAED,iBAAiB,SAAU6E,GAAGrsC,GAAQ;AAGlC,qBAASjT,IAAI,GAAGA,IAAI,IAAIA,KAAK;AAEzB,kBAAIu/C,IAAWtsC,IAASjT,GACpBw/C,IAAaF,EAAEC,CAAQ;AAG3B,cAAAD,EAAEC,CAAQ,KACHC,KAAc,IAAOA,MAAe,MAAO,YAC3CA,KAAc,KAAOA,MAAe,KAAO;AAAA,YAEnE;AAEa,gBAAIC,IAAK,KAAK,MAAM,OAChB2F,IAAK2E,EAAI,OACTG,IAAKF,EAAI,OACTG,IAAKR,EAAI,OACTS,IAAKR,EAAI,OACTS,IAAKR,EAAI,OACTS,IAAKR,EAAI,OAGTtF,GAAIE,GAAIC,GAAIE,GAAIjnC,GAChB8Q,GAAI67B,GAAIC,GAAIC,IAAIC;AAEpB,YAAAh8B,IAAK81B,IAAK/E,EAAE,CAAC,GACb8K,IAAK7F,IAAKjF,EAAE,CAAC,GACb+K,IAAK7F,IAAKlF,EAAE,CAAC,GACbgL,KAAK5F,IAAKpF,EAAE,CAAC,GACbiL,KAAK9sC,IAAK6hC,EAAE,CAAC;AAGb,qBADIrxB,GACKpuB,IAAI,GAAGA,IAAI,IAAIA,KAAK;AACzB,cAAAouB,IAAKo2B,IAAMlF,EAAErsC,IAAOk3C,EAAGnqD,CAAC,CAAC,IAAG,GACxBA,IAAE,KACTouB,KAAMu8B,EAAGjG,GAAGC,GAAGE,CAAE,IAAIO,EAAG,CAAC,IACXplD,IAAE,KAChBouB,KAAMw8B,EAAGlG,GAAGC,GAAGE,CAAE,IAAIO,EAAG,CAAC,IACXplD,IAAE,KAChBouB,KAAMy8B,EAAGnG,GAAGC,GAAGE,CAAE,IAAIO,EAAG,CAAC,IACXplD,IAAE,KAChBouB,KAAM08B,EAAGpG,GAAGC,GAAGE,CAAE,IAAIO,EAAG,CAAC,IAEzBh3B,KAAM28B,EAAGrG,GAAGC,GAAGE,CAAE,IAAIO,EAAG,CAAC,GAEtBh3B,IAAIA,IAAE,GACNA,IAAK48B,EAAK58B,GAAEi8B,EAAGrqD,CAAC,CAAC,GACjBouB,IAAKA,IAAExQ,IAAI,GACX4mC,IAAK5mC,GACLA,IAAKinC,GACLA,IAAKmG,EAAKrG,GAAI,EAAE,GAChBA,IAAKD,GACLA,IAAKt2B,GAELA,IAAKM,IAAK4wB,EAAErsC,IAAOm3C,EAAGpqD,CAAC,CAAC,IAAG,GACvBA,IAAE,KACTouB,KAAM28B,EAAGR,GAAGC,GAAGC,EAAE,IAAIP,EAAG,CAAC,IACXlqD,IAAE,KAChBouB,KAAM08B,EAAGP,GAAGC,GAAGC,EAAE,IAAIP,EAAG,CAAC,IACXlqD,IAAE,KAChBouB,KAAMy8B,EAAGN,GAAGC,GAAGC,EAAE,IAAIP,EAAG,CAAC,IACXlqD,IAAE,KAChBouB,KAAMw8B,EAAGL,GAAGC,GAAGC,EAAE,IAAIP,EAAG,CAAC,IAEzB97B,KAAMu8B,EAAGJ,GAAGC,GAAGC,EAAE,IAAIP,EAAG,CAAC,GAEtB97B,IAAIA,IAAE,GACNA,IAAK48B,EAAK58B,GAAEk8B,EAAGtqD,CAAC,CAAC,GACjBouB,IAAKA,IAAEs8B,KAAI,GACXh8B,IAAKg8B,IACLA,KAAKD,IACLA,KAAKO,EAAKR,GAAI,EAAE,GAChBA,IAAKD,GACLA,IAAKn8B;AAGT,YAAAA,IAAQqxB,EAAE,CAAC,IAAIkF,IAAK8F,KAAI,GACxBhL,EAAE,CAAC,IAAKA,EAAE,CAAC,IAAIoF,IAAK6F,KAAI,GACxBjL,EAAE,CAAC,IAAKA,EAAE,CAAC,IAAI7hC,IAAK8Q,IAAI,GACxB+wB,EAAE,CAAC,IAAKA,EAAE,CAAC,IAAI+E,IAAK+F,IAAI,GACxB9K,EAAE,CAAC,IAAKA,EAAE,CAAC,IAAIiF,IAAK8F,IAAI,GACxB/K,EAAE,CAAC,IAAKrxB;AAAA,UACX;AAAA,UAED,aAAa,WAAY;AAErB,gBAAIld,IAAO,KAAK,OACZkrC,IAAYlrC,EAAK,OAEjB4vC,IAAa,KAAK,cAAc,GAChCC,IAAY7vC,EAAK,WAAW;AAGhC,YAAAkrC,EAAU2E,MAAc,CAAC,KAAK,OAAS,KAAKA,IAAY,IACxD3E,GAAa2E,IAAY,OAAQ,KAAM,KAAK,EAAE,KACvCD,KAAc,IAAOA,MAAe,MAAO,YAC3CA,KAAc,KAAOA,MAAe,KAAO,YAElD5vC,EAAK,YAAYkrC,EAAU,SAAS,KAAK,GAGzC,KAAK,SAAU;AAOf,qBAJIS,IAAO,KAAK,OACZ4C,IAAI5C,EAAK,OAGJ78C,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAExB,kBAAIkhD,IAAMzB,EAAEz/C,CAAC;AAGb,cAAAy/C,EAAEz/C,CAAC,KAAOkhD,KAAO,IAAOA,MAAQ,MAAO,YAC7BA,KAAO,KAAOA,MAAQ,KAAO;AAAA,YACxD;AAGa,mBAAOrE;AAAA,UACV;AAAA,UAED,OAAO,WAAY;AACf,gBAAIzB,IAAQ+D,EAAO,MAAM,KAAK,IAAI;AAClC,mBAAA/D,EAAM,QAAQ,KAAK,MAAM,MAAO,GAEzBA;AAAA,UACpB;AAAA,QACA,CAAM;AAGD,iBAASuP,EAAGp7C,GAAGC,GAAGy7C,GAAG;AACjB,iBAAS17C,IAAMC,IAAMy7C;AAAA,QAE9B;AAEK,iBAASL,EAAGr7C,GAAGC,GAAGy7C,GAAG;AACjB,iBAAU17C,IAAIC,IAAQ,CAACD,IAAI07C;AAAA,QACpC;AAEK,iBAASJ,EAAGt7C,GAAGC,GAAGy7C,GAAG;AACjB,kBAAU17C,IAAM,CAAEC,KAAQy7C;AAAA,QACnC;AAEK,iBAASH,EAAGv7C,GAAGC,GAAGy7C,GAAG;AACjB,iBAAU17C,IAAM07C,IAAQz7C,IAAI,CAAEy7C;AAAA,QACvC;AAEK,iBAASF,EAAGx7C,GAAGC,GAAGy7C,GAAG;AACjB,iBAAS17C,KAAOC,IAAK,CAAEy7C;AAAA,QAEhC;AAEK,iBAASD,EAAKz7C,GAAE0e,GAAG;AACf,iBAAQ1e,KAAG0e,IAAM1e,MAAK,KAAG0e;AAAA,QAClC;AAiBK,QAAAksB,EAAE,YAAYgF,EAAO,cAAc8K,CAAS,GAgB5C9P,EAAE,gBAAgBgF,EAAO,kBAAkB8K,CAAS;AAAA,QAClD,GAGCzQ,EAAS;AAAA,IAEjB,CAAC;AAAA;;;;;AC1QA,KAAC,SAAU95B,GAAM25B,GAAS;AAGzB,MAAAC,YAA2BD,EAAQS,IAAiB;AAAA,IAUtD,GAAEP,IAAM,SAAUC,GAAU;AAE3B,OAAC,WAAY;AAET,YAAIW,IAAIX,GACJY,IAAQD,EAAE,KACVE,IAAOD,EAAM,MACbkB,IAAQnB,EAAE,KACV4B,IAAOT,EAAM,MACbyB,IAAS5C,EAAE;AAKJ,QAAA4C,EAAO,OAAO1C,EAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAWjC,MAAM,SAAUyC,GAAQt6B,GAAK;AAEzB,YAAAs6B,IAAS,KAAK,UAAU,IAAIA,EAAO,KAAM,GAGrC,OAAOt6B,KAAO,aACdA,IAAMu5B,EAAK,MAAMv5B,CAAG;AAIxB,gBAAI0oC,IAAkBpO,EAAO,WACzBqO,IAAuBD,IAAkB;AAG7C,YAAI1oC,EAAI,WAAW2oC,MACf3oC,IAAMs6B,EAAO,SAASt6B,CAAG,IAI7BA,EAAI,MAAO;AAWX,qBARI4oC,IAAO,KAAK,QAAQ5oC,EAAI,MAAO,GAC/B6oC,IAAO,KAAK,QAAQ7oC,EAAI,MAAO,GAG/B8oC,IAAYF,EAAK,OACjBG,IAAYF,EAAK,OAGZrrD,IAAI,GAAGA,IAAIkrD,GAAiBlrD;AACjC,cAAAsrD,EAAUtrD,CAAC,KAAK,YAChBurD,EAAUvrD,CAAC,KAAK;AAEpB,YAAAorD,EAAK,WAAWC,EAAK,WAAWF,GAGhC,KAAK,MAAO;AAAA,UACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASD,OAAO,WAAY;AAEf,gBAAIrO,IAAS,KAAK;AAGlB,YAAAA,EAAO,MAAO,GACdA,EAAO,OAAO,KAAK,KAAK;AAAA,UAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAcD,QAAQ,SAAUF,GAAe;AAC7B,wBAAK,QAAQ,OAAOA,CAAa,GAG1B;AAAA,UACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAgBD,UAAU,SAAUA,GAAe;AAE/B,gBAAIE,IAAS,KAAK,SAGd0O,IAAY1O,EAAO,SAASF,CAAa;AAC7C,YAAAE,EAAO,MAAO;AACd,gBAAI2O,IAAO3O,EAAO,SAAS,KAAK,MAAM,MAAO,EAAC,OAAO0O,CAAS,CAAC;AAE/D,mBAAOC;AAAA,UACpB;AAAA,QACM,CAAA;AAAA,MACN,GAAI;AAAA,IAGJ,CAAC;AAAA;;;;;AC9IA,KAAC,SAAU/rC,GAAM25B,GAASmJ,GAAO;AAGhC,MAAAlJ,EAAA,UAA2BD,EAAQS,GAAiB,GAAE2I,GAAA,GAAqB4E,IAAiB;AAAA,IAU9F,GAAE9N,IAAM,SAAUC,GAAU;AAE3B,aAAC,WAAY;AAET,YAAIW,IAAIX,GACJY,IAAQD,EAAE,KACVE,IAAOD,EAAM,MACbK,IAAYL,EAAM,WAClB2C,IAAS5C,EAAE,MACXwH,IAAS5E,EAAO,QAChB2O,IAAO3O,EAAO,MAKd4O,IAAS5O,EAAO,SAAS1C,EAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQrC,KAAKA,EAAK,OAAO;AAAA,YACb,SAAS,MAAI;AAAA,YACb,QAAQsH;AAAA,YACR,YAAY;AAAA,UACzB,CAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAaD,MAAM,SAAUhF,GAAK;AACjB,iBAAK,MAAM,KAAK,IAAI,OAAOA,CAAG;AAAA,UACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAcD,SAAS,SAAUiP,GAAUC,GAAM;AAkB/B,qBAhBIlP,IAAM,KAAK,KAGX8O,IAAOC,EAAK,OAAO/O,EAAI,QAAQiP,CAAQ,GAGvCE,IAAarR,EAAU,OAAQ,GAC/BsR,IAAatR,EAAU,OAAO,CAAC,CAAU,CAAC,GAG1CuR,IAAkBF,EAAW,OAC7BG,IAAkBF,EAAW,OAC7BG,IAAUvP,EAAI,SACdwP,IAAaxP,EAAI,YAGdqP,EAAgB,SAASE,KAAS;AACrC,kBAAIE,IAAQX,EAAK,OAAOI,CAAI,EAAE,SAASE,CAAU;AACjD,cAAAN,EAAK,MAAO;AAQZ,uBALIY,IAAaD,EAAM,OACnBE,IAAmBD,EAAW,QAG9BE,IAAeH,GACVpsD,IAAI,GAAGA,IAAImsD,GAAYnsD,KAAK;AACjC,gBAAAusD,IAAed,EAAK,SAASc,CAAY,GACzCd,EAAK,MAAO;AAMZ,yBAHIe,IAAoBD,EAAa,OAG5BpR,IAAI,GAAGA,IAAImR,GAAkBnR;AAClC,kBAAAkR,EAAWlR,CAAC,KAAKqR,EAAkBrR,CAAC;AAAA,cAE7D;AAEiB,cAAA2Q,EAAW,OAAOM,CAAK,GACvBH,EAAgB,CAAC;AAAA,YAClC;AACa,mBAAAH,EAAW,WAAWI,IAAU,GAEzBJ;AAAA,UACpB;AAAA,QACA,CAAM;AAmBD,QAAA3R,EAAE,SAAS,SAAUyR,GAAUC,GAAMlP,GAAK;AACtC,iBAAOgP,EAAO,OAAOhP,CAAG,EAAE,QAAQiP,GAAUC,CAAI;AAAA,QACnD;AAAA,MACN,EAAI,GAGIrS,EAAS;AAAA,IAEjB,CAAC;AAAA;;;;;AChJA,KAAC,SAAU95B,GAAM25B,GAASmJ,GAAO;AAGhC,MAAAlJ,EAAA,UAA2BD,EAAQS,GAAiB,GAAE2I,GAAA,GAAmB4E,IAAiB;AAAA,IAU5F,GAAE9N,IAAM,SAAUC,GAAU;AAE3B,aAAC,WAAY;AAET,YAAIW,IAAIX,GACJY,IAAQD,EAAE,KACVE,IAAOD,EAAM,MACbK,IAAYL,EAAM,WAClB2C,IAAS5C,EAAE,MACXkF,IAAMtC,EAAO,KAMb0P,IAAS1P,EAAO,SAAS1C,EAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQrC,KAAKA,EAAK,OAAO;AAAA,YACb,SAAS,MAAI;AAAA,YACb,QAAQgF;AAAA,YACR,YAAY;AAAA,UACzB,CAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAaD,MAAM,SAAU1C,GAAK;AACjB,iBAAK,MAAM,KAAK,IAAI,OAAOA,CAAG;AAAA,UACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAcD,SAAS,SAAUiP,GAAUC,GAAM;AAkB/B,qBAjBIO,GAGAzP,IAAM,KAAK,KAGXG,IAASH,EAAI,OAAO,OAAQ,GAG5BmP,IAAarR,EAAU,OAAQ,GAG/BuR,IAAkBF,EAAW,OAC7BI,IAAUvP,EAAI,SACdwP,IAAaxP,EAAI,YAGdqP,EAAgB,SAASE,KAAS;AACrC,cAAIE,KACAtP,EAAO,OAAOsP,CAAK,GAEvBA,IAAQtP,EAAO,OAAO8O,CAAQ,EAAE,SAASC,CAAI,GAC7C/O,EAAO,MAAO;AAGd,uBAAS98C,IAAI,GAAGA,IAAImsD,GAAYnsD;AAC5B,gBAAAosD,IAAQtP,EAAO,SAASsP,CAAK,GAC7BtP,EAAO,MAAO;AAGlB,cAAAgP,EAAW,OAAOM,CAAK;AAAA,YACxC;AACa,mBAAAN,EAAW,WAAWI,IAAU,GAEzBJ;AAAA,UACpB;AAAA,QACA,CAAM;AAmBD,QAAA3R,EAAE,SAAS,SAAUyR,GAAUC,GAAMlP,GAAK;AACtC,iBAAO8P,EAAO,OAAO9P,CAAG,EAAE,QAAQiP,GAAUC,CAAI;AAAA,QACnD;AAAA,MACN,EAAI,GAGIrS,EAAS;AAAA,IAEjB,CAAC;AAAA;;;;;ACrIA,KAAC,SAAU95B,GAAM25B,GAASmJ,GAAO;AAGhC,MAAAlJ,EAAA,UAA2BD,EAAQS,GAAiB,GAAE2I,IAAmB;AAAA,IAU3E,GAAElJ,IAAM,SAAUC,GAAU;AAK3B,MAAAA,EAAS,IAAI,UAAW,SAAUE,GAAW;AAEzC,YAAIS,IAAIX,GACJY,IAAQD,EAAE,KACVE,IAAOD,EAAM,MACbK,IAAYL,EAAM,WAClB6B,IAAyB7B,EAAM,wBAC/BkB,IAAQnB,EAAE;AACH,QAAAmB,EAAM;AACjB,YAAIoR,IAASpR,EAAM,QACfyB,IAAS5C,EAAE,MACXsS,IAAS1P,EAAO,QAUhB4P,IAASvS,EAAM,SAAS6B,EAAuB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAMtD,KAAK5B,EAAK,OAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAgBlB,iBAAiB,SAAU73B,GAAKm6B,GAAK;AACjC,mBAAO,KAAK,OAAO,KAAK,iBAAiBn6B,GAAKm6B,CAAG;AAAA,UACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAgBD,iBAAiB,SAAUn6B,GAAKm6B,GAAK;AACjC,mBAAO,KAAK,OAAO,KAAK,iBAAiBn6B,GAAKm6B,CAAG;AAAA,UACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAaD,MAAM,SAAUiQ,GAAWpqC,GAAKm6B,GAAK;AAEjC,iBAAK,MAAM,KAAK,IAAI,OAAOA,CAAG,GAG9B,KAAK,aAAaiQ,GAClB,KAAK,OAAOpqC,GAGZ,KAAK,MAAO;AAAA,UACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASD,OAAO,WAAY;AAEf,YAAAy5B,EAAuB,MAAM,KAAK,IAAI,GAGtC,KAAK,SAAU;AAAA,UAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAcD,SAAS,SAAU4Q,GAAY;AAE3B,wBAAK,QAAQA,CAAU,GAGhB,KAAK,SAAU;AAAA,UACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAgBD,UAAU,SAAUA,GAAY;AAE5B,YAAIA,KACA,KAAK,QAAQA,CAAU;AAI3B,gBAAIC,IAAqB,KAAK,YAAa;AAE3C,mBAAOA;AAAA,UACV;AAAA,UAED,SAAS,MAAI;AAAA,UAEb,QAAQ,MAAI;AAAA,UAEZ,iBAAiB;AAAA,UAEjB,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAejB,eAAgB,2BAAY;AACxB,qBAASC,EAAqBvqC,GAAK;AAC/B,qBAAI,OAAOA,KAAO,WACPwqC,IAEAC;AAAA,YAE5B;AAEa,mBAAO,SAAUC,GAAQ;AACrB,qBAAO;AAAA,gBACH,SAAS,SAAUhqB,GAAS1gB,GAAKm6B,GAAK;AAClC,yBAAOoQ,EAAqBvqC,CAAG,EAAE,QAAQ0qC,GAAQhqB,GAAS1gB,GAAKm6B,CAAG;AAAA,gBACrE;AAAA,gBAED,SAAS,SAAUwQ,GAAY3qC,GAAKm6B,GAAK;AACrC,yBAAOoQ,EAAqBvqC,CAAG,EAAE,QAAQ0qC,GAAQC,GAAY3qC,GAAKm6B,CAAG;AAAA,gBAC9F;AAAA,cACkB;AAAA,YACJ;AAAA,UACd,EAAY;AAAA,QACZ,CAAM;AAOkB,QAAAvC,EAAM,eAAeuS,EAAO,OAAO;AAAA,UAClD,aAAa,WAAY;AAErB,gBAAIS,IAAuB,KAAK,SAAS,EAAS;AAElD,mBAAOA;AAAA,UACV;AAAA,UAED,WAAW;AAAA,QACd,CAAA;AAKD,YAAIC,IAASlT,EAAE,OAAO,CAAE,GAKpBmT,IAAkBlT,EAAM,kBAAkBC,EAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAatD,iBAAiB,SAAU6S,GAAQK,GAAI;AACnC,mBAAO,KAAK,UAAU,OAAOL,GAAQK,CAAE;AAAA,UAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAcD,iBAAiB,SAAUL,GAAQK,GAAI;AACnC,mBAAO,KAAK,UAAU,OAAOL,GAAQK,CAAE;AAAA,UAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAYD,MAAM,SAAUL,GAAQK,GAAI;AACxB,iBAAK,UAAUL,GACf,KAAK,MAAMK;AAAA,UACxB;AAAA,QACA,CAAM,GAKGC,IAAMH,EAAO,MAAO,WAAY;AAIhC,cAAIG,IAAMF,EAAgB,OAAQ;AAKlC,UAAAE,EAAI,YAAYA,EAAI,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAWvB,cAAc,SAAU9S,GAAOznC,GAAQ;AAEnC,kBAAIi6C,IAAS,KAAK,SACd5Q,IAAY4Q,EAAO;AAGvB,cAAAO,EAAS,KAAK,MAAM/S,GAAOznC,GAAQqpC,CAAS,GAC5C4Q,EAAO,aAAaxS,GAAOznC,CAAM,GAGjC,KAAK,aAAaynC,EAAM,MAAMznC,GAAQA,IAASqpC,CAAS;AAAA,YACzE;AAAA,UACA,CAAU,GAKDkR,EAAI,YAAYA,EAAI,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAWvB,cAAc,SAAU9S,GAAOznC,GAAQ;AAEnC,kBAAIi6C,IAAS,KAAK,SACd5Q,IAAY4Q,EAAO,WAGnBQ,IAAYhT,EAAM,MAAMznC,GAAQA,IAASqpC,CAAS;AAGtD,cAAA4Q,EAAO,aAAaxS,GAAOznC,CAAM,GACjCw6C,EAAS,KAAK,MAAM/S,GAAOznC,GAAQqpC,CAAS,GAG5C,KAAK,aAAaoR;AAAA,YACnC;AAAA,UACA,CAAU;AAED,mBAASD,EAAS/S,GAAOznC,GAAQqpC,GAAW;AACxC,gBAAI8P,GAGAmB,IAAK,KAAK;AAGd,YAAIA,KACAnB,IAAQmB,GAGR,KAAK,MAAM7T,KAEX0S,IAAQ,KAAK;AAIjB,qBAASpsD,IAAI,GAAGA,IAAIs8C,GAAWt8C;AAC3B,cAAA06C,EAAMznC,IAASjT,CAAC,KAAKosD,EAAMpsD,CAAC;AAAA,UAE7C;AAES,iBAAOwtD;AAAA,QAChB,KAKSG,IAAQxT,EAAE,MAAM,CAAE,GAKlByT,IAAQD,EAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAatB,KAAK,SAAUz8C,GAAMorC,GAAW;AAY5B,qBAVIC,IAAiBD,IAAY,GAG7BuR,IAAgBtR,IAAiBrrC,EAAK,WAAWqrC,GAGjDuR,IAAeD,KAAiB,KAAOA,KAAiB,KAAOA,KAAiB,IAAKA,GAGrFE,IAAe,CAAE,GACZ/tD,IAAI,GAAGA,IAAI6tD,GAAe7tD,KAAK;AACpC,cAAA+tD,EAAa,KAAKD,CAAW;AAEjC,gBAAI3+C,IAAUsrC,EAAU,OAAOsT,GAAcF,CAAa;AAG1D,YAAA38C,EAAK,OAAO/B,CAAO;AAAA,UACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAaD,OAAO,SAAU+B,GAAM;AAEnB,gBAAI28C,IAAgB38C,EAAK,MAAOA,EAAK,WAAW,MAAO,CAAC,IAAI;AAG5D,YAAAA,EAAK,YAAY28C;AAAA,UAC9B;AAAA,QACM;AAOiB,QAAAzT,EAAM,cAAcuS,EAAO,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOhD,KAAKA,EAAO,IAAI,OAAO;AAAA,YACnB,MAAMa;AAAA,YACN,SAASI;AAAA,UACtB,CAAU;AAAA,UAED,OAAO,WAAY;AACf,gBAAII;AAGJ,YAAArB,EAAO,MAAM,KAAK,IAAI;AAGtB,gBAAIhQ,IAAM,KAAK,KACX4Q,IAAK5Q,EAAI,IACTsR,IAAOtR,EAAI;AAGf,YAAI,KAAK,cAAc,KAAK,kBACxBqR,IAAcC,EAAK,mBAEnBD,IAAcC,EAAK,iBAEnB,KAAK,iBAAiB,IAGtB,KAAK,SAAS,KAAK,MAAM,aAAaD,IACtC,KAAK,MAAM,KAAK,MAAMT,KAAMA,EAAG,KAAK,KAEpC,KAAK,QAAQS,EAAY,KAAKC,GAAM,MAAMV,KAAMA,EAAG,KAAK,GACxD,KAAK,MAAM,YAAYS;AAAA,UAE9B;AAAA,UAED,iBAAiB,SAAUtT,GAAOznC,GAAQ;AACtC,iBAAK,MAAM,aAAaynC,GAAOznC,CAAM;AAAA,UACxC;AAAA,UAED,aAAa,WAAY;AACrB,gBAAIm6C,GAGAj+C,IAAU,KAAK,IAAI;AAGvB,mBAAI,KAAK,cAAc,KAAK,mBAExBA,EAAQ,IAAI,KAAK,OAAO,KAAK,SAAS,GAGtCi+C,IAAuB,KAAK,SAAS,EAAS,MAG9CA,IAAuB,KAAK,SAAS,EAAS,GAG9Cj+C,EAAQ,MAAMi+C,CAAoB,IAG/BA;AAAA,UACV;AAAA,UAED,WAAW,MAAI;AAAA,QAClB,CAAA;AAeD,YAAIc,IAAe9T,EAAM,eAAeC,EAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAoBhD,MAAM,SAAU8T,GAAc;AAC1B,iBAAK,MAAMA,CAAY;AAAA,UAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAiBD,UAAU,SAAUC,GAAW;AAC3B,oBAAQA,KAAa,KAAK,WAAW,UAAU,IAAI;AAAA,UAChE;AAAA,QACA,CAAM,GAKGC,IAAWlU,EAAE,SAAS,CAAE,GAKxBmU,IAAmBD,EAAS,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UActC,WAAW,SAAUF,GAAc;AAC/B,gBAAItT,GAGAsS,IAAagB,EAAa,YAC1BtC,IAAOsC,EAAa;AAGxB,mBAAItC,IACAhR,IAAYJ,EAAU,OAAO,CAAC,YAAY,UAAU,CAAC,EAAE,OAAOoR,CAAI,EAAE,OAAOsB,CAAU,IAErFtS,IAAYsS,GAGTtS,EAAU,SAAS6R,CAAM;AAAA,UACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAeD,OAAO,SAAU6B,GAAY;AACzB,gBAAI1C,GAGAsB,IAAaT,EAAO,MAAM6B,CAAU,GAGpCC,IAAkBrB,EAAW;AAGjC,mBAAIqB,EAAgB,CAAC,KAAK,cAAcA,EAAgB,CAAC,KAAK,eAE1D3C,IAAOpR,EAAU,OAAO+T,EAAgB,MAAM,GAAG,CAAC,CAAC,GAGnDA,EAAgB,OAAO,GAAG,CAAC,GAC3BrB,EAAW,YAAY,KAGpBe,EAAa,OAAO,EAAE,YAAYf,GAAY,MAAMtB,GAAM;AAAA,UAC9E;AAAA,QACM,GAKGoB,IAAqB7S,EAAM,qBAAqBC,EAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAM5D,KAAKA,EAAK,OAAO;AAAA,YACb,QAAQiU;AAAA,UACrB,CAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAoBD,SAAS,SAAUpB,GAAQhqB,GAAS1gB,GAAKm6B,GAAK;AAE1C,YAAAA,IAAM,KAAK,IAAI,OAAOA,CAAG;AAGzB,gBAAI8R,IAAYvB,EAAO,gBAAgB1qC,GAAKm6B,CAAG,GAC3CwQ,IAAasB,EAAU,SAASvrB,CAAO,GAGvCwrB,IAAYD,EAAU;AAG1B,mBAAOP,EAAa,OAAO;AAAA,cACvB,YAAYf;AAAA,cACZ,KAAK3qC;AAAA,cACL,IAAIksC,EAAU;AAAA,cACd,WAAWxB;AAAA,cACX,MAAMwB,EAAU;AAAA,cAChB,SAASA,EAAU;AAAA,cACnB,WAAWxB,EAAO;AAAA,cAClB,WAAWvQ,EAAI;AAAA,YAChC,CAAc;AAAA,UACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAmBD,SAAS,SAAUuQ,GAAQC,GAAY3qC,GAAKm6B,GAAK;AAE7C,YAAAA,IAAM,KAAK,IAAI,OAAOA,CAAG,GAGzBwQ,IAAa,KAAK,OAAOA,GAAYxQ,EAAI,MAAM;AAG/C,gBAAIgS,IAAYzB,EAAO,gBAAgB1qC,GAAKm6B,CAAG,EAAE,SAASwQ,EAAW,UAAU;AAE/E,mBAAOwB;AAAA,UACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAiBD,QAAQ,SAAUxB,GAAY9iB,GAAQ;AAClC,mBAAI,OAAO8iB,KAAc,WACd9iB,EAAO,MAAM8iB,GAAY,IAAI,IAE7BA;AAAA,UAExB;AAAA,QACA,CAAM,GAKGyB,IAAQzU,EAAE,MAAM,CAAE,GAKlB0U,IAAaD,EAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAkB7B,SAAS,SAAUhD,GAAUM,GAAS4C,GAAQjD,GAAM/O,GAAQ;AAOxD,gBALK+O,MACDA,IAAOpR,EAAU,OAAO,KAAG,CAAC,IAI3BqC;AAGD,kBAAIt6B,IAAMiqC,EAAO,OAAO,EAAE,SAASP,IAAU4C,GAAQ,QAAQhS,EAAQ,CAAA,EAAE,QAAQ8O,GAAUC,CAAI;AAAA;AAF7F,kBAAIrpC,IAAMiqC,EAAO,OAAO,EAAE,SAASP,IAAU4C,GAAQ,EAAE,QAAQlD,GAAUC,CAAI;AAOjF,gBAAI0B,IAAK9S,EAAU,OAAOj4B,EAAI,MAAM,MAAM0pC,CAAO,GAAG4C,IAAS,CAAC;AAC9D,mBAAAtsC,EAAI,WAAW0pC,IAAU,GAGlBgC,EAAa,OAAO,EAAE,KAAK1rC,GAAK,IAAI+qC,GAAI,MAAM1B,GAAM;AAAA,UACxE;AAAA,QACM,GAMGmB,IAAsB5S,EAAM,sBAAsB6S,EAAmB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAM5E,KAAKA,EAAmB,IAAI,OAAO;AAAA,YAC/B,KAAK4B;AAAA,UAClB,CAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAmBD,SAAS,SAAU3B,GAAQhqB,GAAS0oB,GAAUjP,GAAK;AAE/C,YAAAA,IAAM,KAAK,IAAI,OAAOA,CAAG;AAGzB,gBAAIoS,IAAgBpS,EAAI,IAAI,QAAQiP,GAAUsB,EAAO,SAASA,EAAO,QAAQvQ,EAAI,MAAMA,EAAI,MAAM;AAGjG,YAAAA,EAAI,KAAKoS,EAAc;AAGvB,gBAAI5B,IAAaF,EAAmB,QAAQ,KAAK,MAAMC,GAAQhqB,GAAS6rB,EAAc,KAAKpS,CAAG;AAG9F,mBAAAwQ,EAAW,MAAM4B,CAAa,GAEvB5B;AAAA,UACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAmBD,SAAS,SAAUD,GAAQC,GAAYvB,GAAUjP,GAAK;AAElD,YAAAA,IAAM,KAAK,IAAI,OAAOA,CAAG,GAGzBwQ,IAAa,KAAK,OAAOA,GAAYxQ,EAAI,MAAM;AAG/C,gBAAIoS,IAAgBpS,EAAI,IAAI,QAAQiP,GAAUsB,EAAO,SAASA,EAAO,QAAQC,EAAW,MAAMxQ,EAAI,MAAM;AAGxG,YAAAA,EAAI,KAAKoS,EAAc;AAGvB,gBAAIJ,IAAY1B,EAAmB,QAAQ,KAAK,MAAMC,GAAQC,GAAY4B,EAAc,KAAKpS,CAAG;AAEhG,mBAAOgS;AAAA,UACpB;AAAA,QACA,CAAM;AAAA,MACN;IAGA,CAAC;AAAA;;;;;AC93BA,KAAC,SAAUjvC,GAAM25B,GAASmJ,GAAO;AAGhC,MAAAlJ,EAAA,UAA2BD,EAAQS,GAAiB,GAAE2I,IAAwB;AAAA,IAUhF,GAAElJ,IAAM,SAAUC,GAAU;AAK3B,aAAAA,EAAS,KAAK,MAAO,WAAY;AAC7B,YAAIwV,IAAMxV,EAAS,IAAI,gBAAgB,OAAQ;AAE/C,QAAAwV,EAAI,YAAYA,EAAI,OAAO;AAAA,UACvB,cAAc,SAAUtU,GAAOznC,GAAQ;AAEnC,gBAAIi6C,IAAS,KAAK,SACd5Q,IAAY4Q,EAAO;AAEvB,YAAA+B,EAA4B,KAAK,MAAMvU,GAAOznC,GAAQqpC,GAAW4Q,CAAM,GAGvE,KAAK,aAAaxS,EAAM,MAAMznC,GAAQA,IAASqpC,CAAS;AAAA,UACrE;AAAA,QACA,CAAM,GAED0S,EAAI,YAAYA,EAAI,OAAO;AAAA,UACvB,cAAc,SAAUtU,GAAOznC,GAAQ;AAEnC,gBAAIi6C,IAAS,KAAK,SACd5Q,IAAY4Q,EAAO,WAGnBQ,IAAYhT,EAAM,MAAMznC,GAAQA,IAASqpC,CAAS;AAEtD,YAAA2S,EAA4B,KAAK,MAAMvU,GAAOznC,GAAQqpC,GAAW4Q,CAAM,GAGvE,KAAK,aAAaQ;AAAA,UAC/B;AAAA,QACA,CAAM;AAED,iBAASuB,EAA4BvU,GAAOznC,GAAQqpC,GAAW4Q,GAAQ;AACnE,cAAIgC,GAGA3B,IAAK,KAAK;AAGd,UAAIA,KACA2B,IAAY3B,EAAG,MAAM,CAAC,GAGtB,KAAK,MAAM,UAEX2B,IAAY,KAAK,YAErBhC,EAAO,aAAagC,GAAW,CAAC;AAGhC,mBAASlvD,IAAI,GAAGA,IAAIs8C,GAAWt8C;AAC3B,YAAA06C,EAAMznC,IAASjT,CAAC,KAAKkvD,EAAUlvD,CAAC;AAAA,QAE7C;AAEK,eAAOgvD;AAAA,MACZ,KAGQxV,EAAS,KAAK;AAAA,IAEtB,CAAC;AAAA;;;;;AC/EA,KAAC,SAAU95B,GAAM25B,GAASmJ,GAAO;AAGhC,MAAAlJ,EAAA,UAA2BD,EAAQS,GAAiB,GAAE2I,IAAwB;AAAA,IAUhF,GAAElJ,IAAM,SAAUC,GAAU;AAK3B,aAAAA,EAAS,KAAK,MAAO,WAAY;AAC7B,YAAI2V,IAAM3V,EAAS,IAAI,gBAAgB,OAAQ,GAE3C4V,IAAYD,EAAI,YAAYA,EAAI,OAAO;AAAA,UACvC,cAAc,SAAUzU,GAAOznC,GAAQ;AAEnC,gBAAIi6C,IAAS,KAAK,SACd5Q,IAAY4Q,EAAO,WACnBK,IAAK,KAAK,KACV96B,IAAU,KAAK;AAGnB,YAAI86B,MACA96B,IAAU,KAAK,WAAW86B,EAAG,MAAM,CAAC,GAGpC,KAAK,MAAM;AAEf,gBAAI2B,IAAYz8B,EAAQ,MAAM,CAAC;AAC/B,YAAAy6B,EAAO,aAAagC,GAAW,CAAC,GAGhCz8B,EAAQ6pB,IAAY,CAAC,IAAK7pB,EAAQ6pB,IAAY,CAAC,IAAI,IAAK;AAGxD,qBAASt8C,IAAI,GAAGA,IAAIs8C,GAAWt8C;AAC3B,cAAA06C,EAAMznC,IAASjT,CAAC,KAAKkvD,EAAUlvD,CAAC;AAAA,UAEjD;AAAA,QACA,CAAM;AAED,eAAAmvD,EAAI,YAAYC,GAETD;AAAA,MACZ,KAGQ3V,EAAS,KAAK;AAAA,IAEtB,CAAC;AAAA;;;;;ACzDA,KAAC,SAAU95B,GAAM25B,GAASmJ,GAAO;AAGhC,MAAAlJ,EAAA,UAA2BD,EAAQS,GAAiB,GAAE2I,IAAwB;AAAA,IAUhF,GAAElJ,IAAM,SAAUC,GAAU;AAAA,MAE5B;AAAA;AAAA;AAAA;AAAA;AAKC,aAAAA,EAAS,KAAK,aAAc,WAAY;AACpC,YAAI6V,IAAa7V,EAAS,IAAI,gBAAgB,OAAQ;AAEzD,iBAAS8V,EAAQpR,GACjB;AACC,eAAMA,KAAQ,KAAM,SAAU,KAAM;AACpC,gBAAIqR,IAAMrR,KAAQ,KAAI,KAClBsR,IAAMtR,KAAQ,IAAG,KACjBuR,IAAKvR,IAAO;AAEhB,YAAIqR,MAAO,OAEXA,IAAK,GACDC,MAAO,OAEVA,IAAK,GACDC,MAAO,MAEVA,IAAK,IAIL,EAAEA,KAKH,EAAED,KAKH,EAAED,GAGFrR,IAAO,GACPA,KAASqR,KAAM,IACfrR,KAASsR,KAAM,GACftR,KAAQuR;AAAA,UACX;AAGG,YAAAvR,KAAS,KAAQ;AAEjB,iBAAOA;AAAA,QACV;AAEE,iBAASwR,EAAWj9B,GACpB;AACC,kBAAKA,EAAQ,CAAC,IAAI68B,EAAQ78B,EAAQ,CAAC,CAAC,OAAO,MAG1CA,EAAQ,CAAC,IAAI68B,EAAQ78B,EAAQ,CAAC,CAAC,IAEzBA;AAAA,QACV;AAEK,YAAI28B,IAAYC,EAAW,YAAYA,EAAW,OAAO;AAAA,UACrD,cAAc,SAAU3U,GAAOznC,GAAQ;AAEnC,gBAAIi6C,IAAS,KAAK,SACd5Q,IAAY4Q,EAAO,WACnBK,IAAK,KAAK,KACV96B,IAAU,KAAK;AAGnB,YAAI86B,MACA96B,IAAU,KAAK,WAAW86B,EAAG,MAAM,CAAC,GAGpC,KAAK,MAAM,SAGxBmC,EAAWj9B,CAAO;AAElB,gBAAIy8B,IAAYz8B,EAAQ,MAAM,CAAC;AACtB,YAAAy6B,EAAO,aAAagC,GAAW,CAAC;AAGhC,qBAASlvD,IAAI,GAAGA,IAAIs8C,GAAWt8C;AAC3B,cAAA06C,EAAMznC,IAASjT,CAAC,KAAKkvD,EAAUlvD,CAAC;AAAA,UAEjD;AAAA,QACA,CAAM;AAED,eAAAqvD,EAAW,YAAYD,GAEhBC;AAAA,MACZ,KAKQ7V,EAAS,KAAK;AAAA,IAEtB,CAAC;AAAA;;;;;ACnHA,KAAC,SAAU95B,GAAM25B,GAASmJ,GAAO;AAGhC,MAAAlJ,EAAA,UAA2BD,EAAQS,GAAiB,GAAE2I,IAAwB;AAAA,IAUhF,GAAElJ,IAAM,SAAUC,GAAU;AAK3B,aAAAA,EAAS,KAAK,MAAO,WAAY;AAC7B,YAAImW,IAAMnW,EAAS,IAAI,gBAAgB,OAAQ,GAE3C4V,IAAYO,EAAI,YAAYA,EAAI,OAAO;AAAA,UACvC,cAAc,SAAUjV,GAAOznC,GAAQ;AAEnC,gBAAIi6C,IAAS,KAAK,SACd5Q,IAAY4Q,EAAO,WACnBK,IAAK,KAAK,KACV2B,IAAY,KAAK;AAGrB,YAAI3B,MACA2B,IAAY,KAAK,aAAa3B,EAAG,MAAM,CAAC,GAGxC,KAAK,MAAM,SAEfL,EAAO,aAAagC,GAAW,CAAC;AAGhC,qBAASlvD,IAAI,GAAGA,IAAIs8C,GAAWt8C;AAC3B,cAAA06C,EAAMznC,IAASjT,CAAC,KAAKkvD,EAAUlvD,CAAC;AAAA,UAEjD;AAAA,QACA,CAAM;AAED,eAAA2vD,EAAI,YAAYP,GAETO;AAAA,MACZ,KAGQnW,EAAS,KAAK;AAAA,IAEtB,CAAC;AAAA;;;;;ACrDA,KAAC,SAAU95B,GAAM25B,GAASmJ,GAAO;AAGhC,MAAAlJ,EAAA,UAA2BD,EAAQS,GAAiB,GAAE2I,IAAwB;AAAA,IAUhF,GAAElJ,IAAM,SAAUC,GAAU;AAK3B,aAAAA,EAAS,KAAK,MAAO,WAAY;AAC7B,YAAIoW,IAAMpW,EAAS,IAAI,gBAAgB,OAAQ;AAE/C,eAAAoW,EAAI,YAAYA,EAAI,OAAO;AAAA,UACvB,cAAc,SAAUlV,GAAOznC,GAAQ;AACnC,iBAAK,QAAQ,aAAaynC,GAAOznC,CAAM;AAAA,UACpD;AAAA,QACA,CAAM,GAED28C,EAAI,YAAYA,EAAI,OAAO;AAAA,UACvB,cAAc,SAAUlV,GAAOznC,GAAQ;AACnC,iBAAK,QAAQ,aAAaynC,GAAOznC,CAAM;AAAA,UACpD;AAAA,QACA,CAAM,GAEM28C;AAAA,MACZ,KAGQpW,EAAS,KAAK;AAAA,IAEtB,CAAC;AAAA;;;;;ACvCA,KAAC,SAAU95B,GAAM25B,GAASmJ,GAAO;AAGhC,MAAAlJ,EAAA,UAA2BD,EAAQS,GAAiB,GAAE2I,IAAwB;AAAA,IAUhF,GAAElJ,IAAM,SAAUC,GAAU;AAK3B,aAAAA,EAAS,IAAI,WAAW;AAAA,QACpB,KAAK,SAAUtoC,GAAMorC,GAAW;AAE5B,cAAID,IAAenrC,EAAK,UACpBqrC,IAAiBD,IAAY,GAG7BuR,IAAgBtR,IAAiBF,IAAeE,GAGhDsT,IAAcxT,IAAewR,IAAgB;AAGjD,UAAA38C,EAAK,MAAO,GACZA,EAAK,MAAM2+C,MAAgB,CAAC,KAAKhC,KAAkB,KAAMgC,IAAc,IAAK,GAC5E3+C,EAAK,YAAY28C;AAAA,QACpB;AAAA,QAED,OAAO,SAAU38C,GAAM;AAEnB,cAAI28C,IAAgB38C,EAAK,MAAOA,EAAK,WAAW,MAAO,CAAC,IAAI;AAG5D,UAAAA,EAAK,YAAY28C;AAAA,QAC1B;AAAA,MACE,GAGMrU,EAAS,IAAI;AAAA,IAErB,CAAC;AAAA;;;;;AChDA,KAAC,SAAU95B,GAAM25B,GAASmJ,GAAO;AAGhC,MAAAlJ,EAAA,UAA2BD,EAAQS,GAAiB,GAAE2I,IAAwB;AAAA,IAUhF,GAAElJ,IAAM,SAAUC,GAAU;AAK3B,aAAAA,EAAS,IAAI,WAAW;AAAA,QACpB,KAAK,SAAUtoC,GAAMorC,GAAW;AAE5B,cAAIC,IAAiBD,IAAY,GAG7BuR,IAAgBtR,IAAiBrrC,EAAK,WAAWqrC;AAGrD,UAAArrC,EAAK,OAAOsoC,EAAS,IAAI,UAAU,OAAOqU,IAAgB,CAAC,CAAC,EACvD,OAAOrU,EAAS,IAAI,UAAU,OAAO,CAACqU,KAAiB,EAAE,GAAG,CAAC,CAAC;AAAA,QACtE;AAAA,QAED,OAAO,SAAU38C,GAAM;AAEnB,cAAI28C,IAAgB38C,EAAK,MAAOA,EAAK,WAAW,MAAO,CAAC,IAAI;AAG5D,UAAAA,EAAK,YAAY28C;AAAA,QAC1B;AAAA,MACE,GAGMrU,EAAS,IAAI;AAAA,IAErB,CAAC;AAAA;;;;;AC3CA,KAAC,SAAU95B,GAAM25B,GAASmJ,GAAO;AAGhC,MAAAlJ,EAAA,UAA2BD,EAAQS,GAAiB,GAAE2I,IAAwB;AAAA,IAUhF,GAAElJ,IAAM,SAAUC,GAAU;AAK3B,aAAAA,EAAS,IAAI,WAAW;AAAA,QACpB,KAAK,SAAUtoC,GAAMorC,GAAW;AAE5B,UAAAprC,EAAK,OAAOsoC,EAAS,IAAI,UAAU,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,GAG1DA,EAAS,IAAI,YAAY,IAAItoC,GAAMorC,CAAS;AAAA,QAC/C;AAAA,QAED,OAAO,SAAUprC,GAAM;AAEnB,UAAAsoC,EAAS,IAAI,YAAY,MAAMtoC,CAAI,GAGnCA,EAAK;AAAA,QACd;AAAA,MACE,GAGMsoC,EAAS,IAAI;AAAA,IAErB,CAAC;AAAA;;;;;ACvCA,KAAC,SAAU95B,GAAM25B,GAASmJ,GAAO;AAGhC,MAAAlJ,EAAA,UAA2BD,EAAQS,GAAiB,GAAE2I,IAAwB;AAAA,IAUhF,GAAElJ,IAAM,SAAUC,GAAU;AAK3B,aAAAA,EAAS,IAAI,cAAc;AAAA,QACvB,KAAK,SAAUtoC,GAAMorC,GAAW;AAE5B,cAAIC,IAAiBD,IAAY;AAGjC,UAAAprC,EAAK,MAAO,GACZA,EAAK,YAAYqrC,KAAmBrrC,EAAK,WAAWqrC,KAAmBA;AAAA,QAC1E;AAAA,QAED,OAAO,SAAUrrC,GAAM;AAMnB,mBAJIkrC,IAAYlrC,EAAK,OAGjBlR,IAAIkR,EAAK,WAAW,GACflR,IAAIkR,EAAK,WAAW,GAAGlR,KAAK,GAAGA;AACpC,gBAAMo8C,EAAUp8C,MAAM,CAAC,MAAO,KAAMA,IAAI,IAAK,IAAM,KAAO;AACtD,cAAAkR,EAAK,WAAWlR,IAAI;AACpB;AAAA,YACjB;AAAA,QAEA;AAAA,MACE,GAGMw5C,EAAS,IAAI;AAAA,IAErB,CAAC;AAAA;;;;;AC9CA,KAAC,SAAU95B,GAAM25B,GAASmJ,GAAO;AAGhC,MAAAlJ,EAAA,UAA2BD,EAAQS,GAAiB,GAAE2I,IAAwB;AAAA,IAUhF,GAAElJ,IAAM,SAAUC,GAAU;AAK3B,aAAAA,EAAS,IAAI,YAAY;AAAA,QACrB,KAAK,WAAY;AAAA,QAChB;AAAA,QAED,OAAO,WAAY;AAAA,QACxB;AAAA,MACE,GAGMA,EAAS,IAAI;AAAA,IAErB,CAAC;AAAA;;;;;AC7BA,KAAC,SAAU95B,GAAM25B,GAASmJ,GAAO;AAGhC,MAAAlJ,EAAA,UAA2BD,EAAQS,GAAiB,GAAE2I,IAAwB;AAAA,IAUhF,GAAElJ,IAAM,SAAUC,GAAU;AAE3B,aAAC,SAAUE,GAAW;AAElB,YAAIS,IAAIX,GACJY,IAAQD,EAAE,KACV+T,IAAe9T,EAAM,cACrBkB,IAAQnB,EAAE,KACVS,IAAMU,EAAM,KACZ+S,IAAWlU,EAAE;AAEE,QAAAkU,EAAS,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAc9B,WAAW,SAAUF,GAAc;AAC/B,mBAAOA,EAAa,WAAW,SAASvT,CAAG;AAAA,UAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAeD,OAAO,SAAUkV,GAAO;AACpB,gBAAI3C,IAAavS,EAAI,MAAMkV,CAAK;AAChC,mBAAO5B,EAAa,OAAO,EAAE,YAAYf,EAAU,CAAE;AAAA,UAClE;AAAA;MAEA,EAAI,GAGI3T,EAAS,OAAO;AAAA,IAExB,CAAC;AAAA;;;;;ACjEA,KAAC,SAAU95B,GAAM25B,GAASmJ,GAAO;AAGhC,MAAAlJ,EAAiB,UAAUD,EAAQS,MAAmB2I,MAAyB4E,MAAkB0I,MAAqBC,IAAwB;AAAA,IAUhJ,GAAEzW,IAAM,SAAUC,GAAU;AAE3B,aAAC,WAAY;AAET,YAAIW,IAAIX,GACJY,IAAQD,EAAE,KACV8V,IAAc7V,EAAM,aACpB2C,IAAS5C,EAAE,MAGX+V,IAAO,CAAE,GACTC,IAAW,CAAE,GACbC,IAAY,CAAE,GACdC,IAAY,CAAE,GACdC,IAAY,CAAE,GACdC,IAAY,CAAE,GACdC,IAAgB,CAAE,GAClBC,IAAgB,CAAE,GAClBC,IAAgB,CAAE,GAClBC,IAAgB,CAAE;AAGtB,SAAC,WAAY;AAGT,mBADI77C,IAAI,CAAE,GACD9U,IAAI,GAAGA,IAAI,KAAKA;AACrB,YAAIA,IAAI,MACJ8U,EAAE9U,CAAC,IAAIA,KAAK,IAEZ8U,EAAE9U,CAAC,IAAKA,KAAK,IAAK;AAO1B,mBAFIuP,IAAI,GACJqhD,IAAK,GACA5wD,IAAI,GAAGA,IAAI,KAAKA,KAAK;AAE1B,gBAAI6wD,IAAKD,IAAMA,KAAM,IAAMA,KAAM,IAAMA,KAAM,IAAMA,KAAM;AACzD,YAAAC,IAAMA,MAAO,IAAMA,IAAK,MAAQ,IAChCX,EAAK3gD,CAAC,IAAIshD,GACVV,EAASU,CAAE,IAAIthD;AAGf,gBAAIuhD,IAAKh8C,EAAEvF,CAAC,GACRwhD,IAAKj8C,EAAEg8C,CAAE,GACTE,IAAKl8C,EAAEi8C,CAAE,GAGT3iC,IAAKtZ,EAAE+7C,CAAE,IAAI,MAAUA,IAAK;AAChC,YAAAT,EAAU7gD,CAAC,IAAK6e,KAAK,KAAOA,MAAM,GAClCiiC,EAAU9gD,CAAC,IAAK6e,KAAK,KAAOA,MAAM,IAClCkiC,EAAU/gD,CAAC,IAAK6e,KAAK,IAAOA,MAAM,IAClCmiC,EAAUhhD,CAAC,IAAI6e;AAGf,gBAAIA,IAAK4iC,IAAK,WAAcD,IAAK,QAAYD,IAAK,MAAUvhD,IAAI;AAChE,YAAAihD,EAAcK,CAAE,IAAKziC,KAAK,KAAOA,MAAM,GACvCqiC,EAAcI,CAAE,IAAKziC,KAAK,KAAOA,MAAM,IACvCsiC,EAAcG,CAAE,IAAKziC,KAAK,IAAOA,MAAM,IACvCuiC,EAAcE,CAAE,IAAIziC,GAGf7e,KAGDA,IAAIuhD,IAAKh8C,EAAEA,EAAEA,EAAEk8C,IAAKF,CAAE,CAAC,CAAC,GACxBF,KAAM97C,EAAEA,EAAE87C,CAAE,CAAC,KAHbrhD,IAAIqhD,IAAK;AAAA,UAK1B;AAAA,QACA,GAAQ;AAGH,YAAIK,IAAO,CAAC,GAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,KAAM,IAAM,EAAI,GAKxEC,IAAMnU,EAAO,MAAMkT,EAAY,OAAO;AAAA,UACtC,UAAU,WAAY;AAClB,gBAAI7hC;AAGJ,gBAAI,OAAK,YAAY,KAAK,mBAAmB,KAAK,OAiBlD;AAAA,uBAZI5L,IAAM,KAAK,iBAAiB,KAAK,MACjC2uC,IAAW3uC,EAAI,OACf0pC,IAAU1pC,EAAI,WAAW,GAGzB4uC,IAAU,KAAK,WAAWlF,IAAU,GAGpCmF,KAAUD,IAAU,KAAK,GAGzBE,IAAc,KAAK,eAAe,CAAE,GAC/BC,IAAQ,GAAGA,IAAQF,GAAQE;AAChC,gBAAIA,IAAQrF,IACRoF,EAAYC,CAAK,IAAIJ,EAASI,CAAK,KAEnCnjC,IAAIkjC,EAAYC,IAAQ,CAAC,GAEnBA,IAAQrF,IASHA,IAAU,KAAKqF,IAAQrF,KAAW,MAEzC99B,IAAK8hC,EAAK9hC,MAAM,EAAE,KAAK,KAAO8hC,EAAM9hC,MAAM,KAAM,GAAI,KAAK,KAAO8hC,EAAM9hC,MAAM,IAAK,GAAI,KAAK,IAAK8hC,EAAK9hC,IAAI,GAAI,MAT5GA,IAAKA,KAAK,IAAMA,MAAM,IAGtBA,IAAK8hC,EAAK9hC,MAAM,EAAE,KAAK,KAAO8hC,EAAM9hC,MAAM,KAAM,GAAI,KAAK,KAAO8hC,EAAM9hC,MAAM,IAAK,GAAI,KAAK,IAAK8hC,EAAK9hC,IAAI,GAAI,GAG5GA,KAAK6iC,EAAMM,IAAQrF,IAAW,CAAC,KAAK,KAMxCoF,EAAYC,CAAK,IAAID,EAAYC,IAAQrF,CAAO,IAAI99B;AAM5D,uBADIojC,IAAiB,KAAK,kBAAkB,CAAE,GACrCC,IAAW,GAAGA,IAAWJ,GAAQI,KAAY;AAClD,oBAAIF,IAAQF,IAASI;AAErB,oBAAIA,IAAW;AACX,sBAAIrjC,IAAIkjC,EAAYC,CAAK;AAAA;AAEzB,sBAAInjC,IAAIkjC,EAAYC,IAAQ,CAAC;AAGjC,gBAAIE,IAAW,KAAKF,KAAS,IACzBC,EAAeC,CAAQ,IAAIrjC,IAE3BojC,EAAeC,CAAQ,IAAIjB,EAAcN,EAAK9hC,MAAM,EAAE,CAAC,IAAIqiC,EAAcP,EAAM9hC,MAAM,KAAM,GAAI,CAAC,IACrEsiC,EAAcR,EAAM9hC,MAAM,IAAK,GAAI,CAAC,IAAIuiC,EAAcT,EAAK9hC,IAAI,GAAI,CAAC;AAAA,cAEpH;AAAA;AAAA,UACU;AAAA,UAED,cAAc,SAAUkxB,GAAGrsC,GAAQ;AAC/B,iBAAK,cAAcqsC,GAAGrsC,GAAQ,KAAK,cAAcm9C,GAAWC,GAAWC,GAAWC,GAAWL,CAAI;AAAA,UACpG;AAAA,UAED,cAAc,SAAU5Q,GAAGrsC,GAAQ;AAE/B,gBAAImb,IAAIkxB,EAAErsC,IAAS,CAAC;AACpB,YAAAqsC,EAAErsC,IAAS,CAAC,IAAIqsC,EAAErsC,IAAS,CAAC,GAC5BqsC,EAAErsC,IAAS,CAAC,IAAImb,GAEhB,KAAK,cAAckxB,GAAGrsC,GAAQ,KAAK,iBAAiBu9C,GAAeC,GAAeC,GAAeC,GAAeR,CAAQ;AAGxH,gBAAI/hC,IAAIkxB,EAAErsC,IAAS,CAAC;AACpB,YAAAqsC,EAAErsC,IAAS,CAAC,IAAIqsC,EAAErsC,IAAS,CAAC,GAC5BqsC,EAAErsC,IAAS,CAAC,IAAImb;AAAA,UACnB;AAAA,UAED,eAAe,SAAUkxB,GAAGrsC,GAAQq+C,GAAalB,GAAWC,GAAWC,GAAWC,GAAWL,GAAM;AAc/F,qBAZIkB,IAAU,KAAK,UAGfM,IAAKpS,EAAErsC,CAAM,IAAQq+C,EAAY,CAAC,GAClCK,IAAKrS,EAAErsC,IAAS,CAAC,IAAIq+C,EAAY,CAAC,GAClCM,IAAKtS,EAAErsC,IAAS,CAAC,IAAIq+C,EAAY,CAAC,GAClCO,IAAKvS,EAAErsC,IAAS,CAAC,IAAIq+C,EAAY,CAAC,GAGlCC,IAAQ,GAGH9kD,IAAQ,GAAGA,IAAQ2kD,GAAS3kD,KAAS;AAE1C,kBAAIqlD,IAAK1B,EAAUsB,MAAO,EAAE,IAAIrB,EAAWsB,MAAO,KAAM,GAAI,IAAIrB,EAAWsB,MAAO,IAAK,GAAI,IAAIrB,EAAUsB,IAAK,GAAI,IAAIP,EAAYC,GAAO,GACrIjP,IAAK8N,EAAUuB,MAAO,EAAE,IAAItB,EAAWuB,MAAO,KAAM,GAAI,IAAItB,EAAWuB,MAAO,IAAK,GAAI,IAAItB,EAAUmB,IAAK,GAAI,IAAIJ,EAAYC,GAAO,GACrIhP,IAAK6N,EAAUwB,MAAO,EAAE,IAAIvB,EAAWwB,MAAO,KAAM,GAAI,IAAIvB,EAAWoB,MAAO,IAAK,GAAI,IAAInB,EAAUoB,IAAK,GAAI,IAAIL,EAAYC,GAAO,GACrIQ,IAAK3B,EAAUyB,MAAO,EAAE,IAAIxB,EAAWqB,MAAO,KAAM,GAAI,IAAIpB,EAAWqB,MAAO,IAAK,GAAI,IAAIpB,EAAUqB,IAAK,GAAI,IAAIN,EAAYC,GAAO;AAGzI,cAAAG,IAAKI,GACLH,IAAKrP,GACLsP,IAAKrP,GACLsP,IAAKE;AAAA,YACtB;AAGa,gBAAID,KAAO5B,EAAKwB,MAAO,EAAE,KAAK,KAAOxB,EAAMyB,MAAO,KAAM,GAAI,KAAK,KAAOzB,EAAM0B,MAAO,IAAK,GAAI,KAAK,IAAK1B,EAAK2B,IAAK,GAAI,KAAKP,EAAYC,GAAO,GAC1IjP,KAAO4N,EAAKyB,MAAO,EAAE,KAAK,KAAOzB,EAAM0B,MAAO,KAAM,GAAI,KAAK,KAAO1B,EAAM2B,MAAO,IAAK,GAAI,KAAK,IAAK3B,EAAKwB,IAAK,GAAI,KAAKJ,EAAYC,GAAO,GAC1IhP,KAAO2N,EAAK0B,MAAO,EAAE,KAAK,KAAO1B,EAAM2B,MAAO,KAAM,GAAI,KAAK,KAAO3B,EAAMwB,MAAO,IAAK,GAAI,KAAK,IAAKxB,EAAKyB,IAAK,GAAI,KAAKL,EAAYC,GAAO,GAC1IQ,KAAO7B,EAAK2B,MAAO,EAAE,KAAK,KAAO3B,EAAMwB,MAAO,KAAM,GAAI,KAAK,KAAOxB,EAAMyB,MAAO,IAAK,GAAI,KAAK,IAAKzB,EAAK0B,IAAK,GAAI,KAAKN,EAAYC,GAAO;AAG9I,YAAAjS,EAAErsC,CAAM,IAAQ6+C,GAChBxS,EAAErsC,IAAS,CAAC,IAAIqvC,GAChBhD,EAAErsC,IAAS,CAAC,IAAIsvC,GAChBjD,EAAErsC,IAAS,CAAC,IAAI8+C;AAAA,UACnB;AAAA,UAED,SAAS,MAAI;AAAA,QACtB,CAAM;AAUD,QAAA5X,EAAE,MAAM8V,EAAY,cAAciB,CAAG;AAAA,MAC1C,EAAI,GAGI1X,EAAS;AAAA,IAEjB,CAAC;AAAA;;;;;ACzOA,KAAC,SAAU95B,GAAM25B,GAASmJ,GAAO;AAGhC,MAAAlJ,EAAiB,UAAUD,EAAQS,MAAmB2I,MAAyB4E,MAAkB0I,MAAqBC,IAAwB;AAAA,IAUhJ,GAAEzW,IAAM,SAAUC,GAAU;AAE3B,aAAC,WAAY;AAET,YAAIW,IAAIX,GACJY,IAAQD,EAAE,KACVM,IAAYL,EAAM,WAClB6V,IAAc7V,EAAM,aACpB2C,IAAS5C,EAAE,MAGX6X,IAAM;AAAA,UACN;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAC5B;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAC5B;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAC5B;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAC5B;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAC5B;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAC5B;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,QAC/B,GAGGC,IAAM;AAAA,UACN;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UACpB;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UACpB;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UACpB;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UACpB;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UACpB;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UACpB;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UACpB;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,UAAI;AAAA,QACvB,GAGGC,IAAa,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAG5EC,IAAS;AAAA,UACT;AAAA,YACI,GAAK;AAAA,YACL,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,GAAK;AAAA,YACL,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,UACf;AAAA,UACD;AAAA,YACI,GAAK;AAAA,YACL,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,SAAU;AAAA,YACV,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,YACZ,WAAY;AAAA,UACf;AAAA,UACD;AAAA,YACI,GAAK;AAAA,YACL,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,QAAS;AAAA,YACT,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,YACX,UAAW;AAAA,UACd;AAAA,UACD;AAAA,YACI,GAAK;AAAA,YACL,OAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,OAAQ;AAAA,YACR,OAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,YACV,SAAU;AAAA,UACb;AAAA,UACD;AAAA,YACI,GAAK;AAAA,YACL,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,MAAO;AAAA,YACP,MAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAQ;AAAA,YACR,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,OAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,YACT,QAAS;AAAA,UACZ;AAAA,UACD;AAAA,YACI,GAAK;AAAA,YACL,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,KAAM;AAAA,YACN,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAO;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACX;AAAA,UACD;AAAA,YACI,GAAK;AAAA,YACL,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,GAAK;AAAA,YACL,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAM;AAAA,YACN,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,YACP,KAAO;AAAA,UACV;AAAA,UACD;AAAA,YACI,GAAK;AAAA,YACL,GAAK;AAAA,YACL,GAAK;AAAA,YACL,GAAK;AAAA,YACL,GAAK;AAAA,YACL,GAAK;AAAA,YACL,GAAK;AAAA,YACL,GAAK;AAAA,YACL,GAAK;AAAA,YACL,GAAK;AAAA,YACL,IAAK;AAAA,YACL,IAAK;AAAA,YACL,IAAK;AAAA,YACL,IAAK;AAAA,YACL,IAAK;AAAA,YACL,IAAK;AAAA,YACL,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,IAAM;AAAA,YACN,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,UACzB;AAAA,QACM,GAGGC,IAAY;AAAA,UACZ;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,QACvC,GAKGC,IAAMtV,EAAO,MAAMkT,EAAY,OAAO;AAAA,UACtC,UAAU,WAAY;AAOlB,qBALIztC,IAAM,KAAK,MACX2uC,IAAW3uC,EAAI,OAGf8vC,IAAU,CAAE,GACPtyD,IAAI,GAAGA,IAAI,IAAIA,KAAK;AACzB,kBAAIuyD,IAAYP,EAAIhyD,CAAC,IAAI;AACzB,cAAAsyD,EAAQtyD,CAAC,IAAKmxD,EAASoB,MAAc,CAAC,MAAO,KAAKA,IAAY,KAAO;AAAA,YACtF;AAIa,qBADIC,IAAU,KAAK,WAAW,CAAE,GACvBC,IAAU,GAAGA,IAAU,IAAIA,KAAW;AAQ3C,uBANIC,IAASF,EAAQC,CAAO,IAAI,CAAE,GAG9BE,IAAWT,EAAWO,CAAO,GAGxBzyD,IAAI,GAAGA,IAAI,IAAIA;AAEpB,gBAAA0yD,EAAQ1yD,IAAI,IAAK,CAAC,KAAKsyD,GAAUL,EAAIjyD,CAAC,IAAI,IAAK2yD,KAAY,EAAE,KAAM,KAAK3yD,IAAI,GAG5E0yD,EAAO,KAAM1yD,IAAI,IAAK,EAAE,KAAKsyD,EAAQ,MAAQL,EAAIjyD,IAAI,EAAE,IAAI,IAAK2yD,KAAY,EAAG,KAAM,KAAK3yD,IAAI;AAMlG,cAAA0yD,EAAO,CAAC,IAAKA,EAAO,CAAC,KAAK,IAAMA,EAAO,CAAC,MAAM;AAC9C,uBAAS1yD,IAAI,GAAGA,IAAI,GAAGA;AACnB,gBAAA0yD,EAAO1yD,CAAC,IAAI0yD,EAAO1yD,CAAC,OAAQA,IAAI,KAAK,IAAI;AAE7C,cAAA0yD,EAAO,CAAC,IAAKA,EAAO,CAAC,KAAK,IAAMA,EAAO,CAAC,MAAM;AAAA,YAC/D;AAIa,qBADIE,IAAa,KAAK,cAAc,CAAE,GAC7B5yD,IAAI,GAAGA,IAAI,IAAIA;AACpB,cAAA4yD,EAAW5yD,CAAC,IAAIwyD,EAAQ,KAAKxyD,CAAC;AAAA,UAErC;AAAA,UAED,cAAc,SAAUs/C,GAAGrsC,GAAQ;AAC/B,iBAAK,cAAcqsC,GAAGrsC,GAAQ,KAAK,QAAQ;AAAA,UAC9C;AAAA,UAED,cAAc,SAAUqsC,GAAGrsC,GAAQ;AAC/B,iBAAK,cAAcqsC,GAAGrsC,GAAQ,KAAK,WAAW;AAAA,UACjD;AAAA,UAED,eAAe,SAAUqsC,GAAGrsC,GAAQu/C,GAAS;AAEzC,iBAAK,UAAUlT,EAAErsC,CAAM,GACvB,KAAK,UAAUqsC,EAAErsC,IAAS,CAAC,GAG3B4/C,EAAW,KAAK,MAAM,GAAI,SAAU,GACpCA,EAAW,KAAK,MAAM,IAAI,KAAU,GACpCC,EAAW,KAAK,MAAM,GAAI,SAAU,GACpCA,EAAW,KAAK,MAAM,GAAI,QAAU,GACpCD,EAAW,KAAK,MAAM,GAAI,UAAU;AAGpC,qBAASpmD,IAAQ,GAAGA,IAAQ,IAAIA,KAAS;AAQrC,uBANIimD,IAASF,EAAQ/lD,CAAK,GACtBsmD,IAAS,KAAK,SACdC,IAAS,KAAK,SAGdpR,IAAI,GACC5hD,IAAI,GAAGA,IAAI,GAAGA;AACnB,gBAAA4hD,KAAKuQ,EAAOnyD,CAAC,IAAIgzD,IAASN,EAAO1yD,CAAC,KAAKoyD,EAAUpyD,CAAC,OAAO,CAAC;AAE9D,mBAAK,UAAUgzD,GACf,KAAK,UAAUD,IAASnR;AAAA,YACzC;AAGa,gBAAIxzB,IAAI,KAAK;AACb,iBAAK,UAAU,KAAK,SACpB,KAAK,UAAUA,GAGfykC,EAAW,KAAK,MAAM,GAAI,UAAU,GACpCC,EAAW,KAAK,MAAM,GAAI,QAAU,GACpCA,EAAW,KAAK,MAAM,GAAI,SAAU,GACpCD,EAAW,KAAK,MAAM,IAAI,KAAU,GACpCA,EAAW,KAAK,MAAM,GAAI,SAAU,GAGpCvT,EAAErsC,CAAM,IAAI,KAAK,SACjBqsC,EAAErsC,IAAS,CAAC,IAAI,KAAK;AAAA,UACxB;AAAA,UAED,SAAS,KAAG;AAAA,UAEZ,QAAQ,KAAG;AAAA,UAEX,WAAW,KAAG;AAAA,QACvB,CAAM;AAGD,iBAAS4/C,EAAW5/C,GAAQggD,GAAM;AAC9B,cAAI7kC,KAAM,KAAK,YAAYnb,IAAU,KAAK,WAAWggD;AACrD,eAAK,WAAW7kC,GAChB,KAAK,WAAWA,KAAKnb;AAAA,QAC9B;AAEK,iBAAS6/C,EAAW7/C,GAAQggD,GAAM;AAC9B,cAAI7kC,KAAM,KAAK,YAAYnb,IAAU,KAAK,WAAWggD;AACrD,eAAK,WAAW7kC,GAChB,KAAK,WAAWA,KAAKnb;AAAA,QAC9B;AAUK,QAAAknC,EAAE,MAAM8V,EAAY,cAAcoC,CAAG;AAKrC,YAAIa,IAAYnW,EAAO,YAAYkT,EAAY,OAAO;AAAA,UAClD,UAAU,WAAY;AAElB,gBAAIztC,IAAM,KAAK,MACX2uC,IAAW3uC,EAAI;AAEnB,gBAAI2uC,EAAS,WAAW,KAAKA,EAAS,WAAW,KAAKA,EAAS,SAAS;AACpE,oBAAM,IAAI,MAAM,+EAA+E;AAInG,gBAAIgC,IAAOhC,EAAS,MAAM,GAAG,CAAC,GAC1BiC,IAAOjC,EAAS,SAAS,IAAIA,EAAS,MAAM,GAAG,CAAC,IAAIA,EAAS,MAAM,GAAG,CAAC,GACvEkC,IAAOlC,EAAS,SAAS,IAAIA,EAAS,MAAM,GAAG,CAAC,IAAIA,EAAS,MAAM,GAAG,CAAC;AAG3E,iBAAK,QAAQkB,EAAI,gBAAgB5X,EAAU,OAAO0Y,CAAI,CAAC,GACvD,KAAK,QAAQd,EAAI,gBAAgB5X,EAAU,OAAO2Y,CAAI,CAAC,GACvD,KAAK,QAAQf,EAAI,gBAAgB5X,EAAU,OAAO4Y,CAAI,CAAC;AAAA,UAC1D;AAAA,UAED,cAAc,SAAU/T,GAAGrsC,GAAQ;AAC/B,iBAAK,MAAM,aAAaqsC,GAAGrsC,CAAM,GACjC,KAAK,MAAM,aAAaqsC,GAAGrsC,CAAM,GACjC,KAAK,MAAM,aAAaqsC,GAAGrsC,CAAM;AAAA,UACpC;AAAA,UAED,cAAc,SAAUqsC,GAAGrsC,GAAQ;AAC/B,iBAAK,MAAM,aAAaqsC,GAAGrsC,CAAM,GACjC,KAAK,MAAM,aAAaqsC,GAAGrsC,CAAM,GACjC,KAAK,MAAM,aAAaqsC,GAAGrsC,CAAM;AAAA,UACpC;AAAA,UAED,SAAS,MAAI;AAAA,UAEb,QAAQ,KAAG;AAAA,UAEX,WAAW,KAAG;AAAA,QACvB,CAAM;AAUD,QAAAknC,EAAE,YAAY8V,EAAY,cAAciD,CAAS;AAAA,MACtD,EAAI,GAGI1Z,EAAS;AAAA,IAEjB,CAAC;AAAA;;;;;AC1wBA,KAAC,SAAU95B,GAAM25B,GAASmJ,GAAO;AAGhC,MAAAlJ,EAAiB,UAAUD,EAAQS,MAAmB2I,MAAyB4E,MAAkB0I,MAAqBC,IAAwB;AAAA,IAUhJ,GAAEzW,IAAM,SAAUC,GAAU;AAE3B,aAAC,WAAY;AAET,YAAIW,IAAIX,GACJY,IAAQD,EAAE,KACVmZ,IAAelZ,EAAM,cACrB2C,IAAS5C,EAAE,MAKXoZ,IAAMxW,EAAO,MAAMuW,EAAa,OAAO;AAAA,UACvC,UAAU,WAAY;AAQlB,qBANI9wC,IAAM,KAAK,MACX2uC,IAAW3uC,EAAI,OACfgxC,IAAchxC,EAAI,UAGlBixC,IAAI,KAAK,KAAK,CAAE,GACXzzD,IAAI,GAAGA,IAAI,KAAKA;AACrB,cAAAyzD,EAAEzzD,CAAC,IAAIA;AAIX,qBAASA,IAAI,GAAGm7C,IAAI,GAAGn7C,IAAI,KAAKA,KAAK;AACjC,kBAAI0zD,IAAe1zD,IAAIwzD,GACnBG,IAAWxC,EAASuC,MAAiB,CAAC,MAAO,KAAMA,IAAe,IAAK,IAAM;AAEjF,cAAAvY,KAAKA,IAAIsY,EAAEzzD,CAAC,IAAI2zD,KAAW;AAG3B,kBAAIvlC,IAAIqlC,EAAEzzD,CAAC;AACX,cAAAyzD,EAAEzzD,CAAC,IAAIyzD,EAAEtY,CAAC,GACVsY,EAAEtY,CAAC,IAAI/sB;AAAA,YACxB;AAGa,iBAAK,KAAK,KAAK,KAAK;AAAA,UACvB;AAAA,UAED,iBAAiB,SAAUkxB,GAAGrsC,GAAQ;AAClC,YAAAqsC,EAAErsC,CAAM,KAAK2gD,EAAsB,KAAK,IAAI;AAAA,UAC/C;AAAA,UAED,SAAS,MAAI;AAAA,UAEb,QAAQ;AAAA,QACjB,CAAM;AAED,iBAASA,IAAwB;AAQ7B,mBANIH,IAAI,KAAK,IACTzzD,IAAI,KAAK,IACTm7C,IAAI,KAAK,IAGT0Y,IAAgB,GACX5lC,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxB,YAAAjuB,KAAKA,IAAI,KAAK,KACdm7C,KAAKA,IAAIsY,EAAEzzD,CAAC,KAAK;AAGjB,gBAAIouB,IAAIqlC,EAAEzzD,CAAC;AACX,YAAAyzD,EAAEzzD,CAAC,IAAIyzD,EAAEtY,CAAC,GACVsY,EAAEtY,CAAC,IAAI/sB,GAEPylC,KAAiBJ,GAAGA,EAAEzzD,CAAC,IAAIyzD,EAAEtY,CAAC,KAAK,GAAG,KAAM,KAAKltB,IAAI;AAAA,UAClE;AAGS,sBAAK,KAAKjuB,GACV,KAAK,KAAKm7C,GAEH0Y;AAAA,QAChB;AAUK,QAAA1Z,EAAE,MAAMmZ,EAAa,cAAcC,CAAG;AAKtC,YAAIO,IAAU/W,EAAO,UAAUwW,EAAI,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAMtC,KAAKA,EAAI,IAAI,OAAO;AAAA,YAChB,MAAM;AAAA,UACnB,CAAU;AAAA,UAED,UAAU,WAAY;AAClB,YAAAA,EAAI,SAAS,KAAK,IAAI;AAGtB,qBAASvzD,IAAI,KAAK,IAAI,MAAMA,IAAI,GAAGA;AAC/B,cAAA4zD,EAAsB,KAAK,IAAI;AAAA,UAEhD;AAAA,QACA,CAAM;AAUD,QAAAzZ,EAAE,UAAUmZ,EAAa,cAAcQ,CAAO;AAAA,MACnD,EAAI,GAGIta,EAAS;AAAA,IAEjB,CAAC;AAAA;;;;;AC1IA,KAAC,SAAU95B,GAAM25B,GAASmJ,GAAO;AAGhC,MAAAlJ,EAAiB,UAAUD,EAAQS,MAAmB2I,MAAyB4E,MAAkB0I,MAAqBC,IAAwB;AAAA,IAUhJ,GAAEzW,IAAM,SAAUC,GAAU;AAE3B,aAAC,WAAY;AAET,YAAIW,IAAIX,GACJY,IAAQD,EAAE,KACVmZ,IAAelZ,EAAM,cACrB2C,IAAS5C,EAAE,MAGXsZ,IAAK,CAAE,GACPM,IAAK,CAAE,GACPC,IAAK,CAAE,GAKPC,IAASlX,EAAO,SAASuW,EAAa,OAAO;AAAA,UAC7C,UAAU,WAAY;AAMlB,qBAJIjS,IAAI,KAAK,KAAK,OACdkM,IAAK,KAAK,IAAI,IAGTvtD,IAAI,GAAGA,IAAI,GAAGA;AACnB,cAAAqhD,EAAErhD,CAAC,KAAOqhD,EAAErhD,CAAC,KAAK,IAAOqhD,EAAErhD,CAAC,MAAM,MAAO,YAC/BqhD,EAAErhD,CAAC,KAAK,KAAOqhD,EAAErhD,CAAC,MAAM,KAAO;AAI7C,gBAAIk0D,IAAI,KAAK,KAAK;AAAA,cACd7S,EAAE,CAAC;AAAA,cAAIA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM;AAAA,cAC/BA,EAAE,CAAC;AAAA,cAAIA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM;AAAA,cAC/BA,EAAE,CAAC;AAAA,cAAIA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM;AAAA,cAC/BA,EAAE,CAAC;AAAA,cAAIA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM;AAAA,YAClC,GAGGlH,IAAI,KAAK,KAAK;AAAA,cACbkH,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM;AAAA,cAAMA,EAAE,CAAC,IAAI,aAAeA,EAAE,CAAC,IAAI;AAAA,cAC3DA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM;AAAA,cAAMA,EAAE,CAAC,IAAI,aAAeA,EAAE,CAAC,IAAI;AAAA,cAC3DA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM;AAAA,cAAMA,EAAE,CAAC,IAAI,aAAeA,EAAE,CAAC,IAAI;AAAA,cAC3DA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM;AAAA,cAAMA,EAAE,CAAC,IAAI,aAAeA,EAAE,CAAC,IAAI;AAAA,YAC/D;AAGD,iBAAK,KAAK;AAGV,qBAASrhD,IAAI,GAAGA,IAAI,GAAGA;AACnB,cAAAm0D,EAAU,KAAK,IAAI;AAIvB,qBAASn0D,IAAI,GAAGA,IAAI,GAAGA;AACnB,cAAAm6C,EAAEn6C,CAAC,KAAKk0D,EAAGl0D,IAAI,IAAK,CAAC;AAIzB,gBAAIutD,GAAI;AAEJ,kBAAI6G,IAAK7G,EAAG,OACR8G,IAAOD,EAAG,CAAC,GACXE,IAAOF,EAAG,CAAC,GAGXG,KAAQF,KAAQ,IAAMA,MAAS,MAAO,YAAiBA,KAAQ,KAAOA,MAAS,KAAM,YACrFG,KAAQF,KAAQ,IAAMA,MAAS,MAAO,YAAiBA,KAAQ,KAAOA,MAAS,KAAM,YACrFG,IAAMF,MAAO,KAAOC,IAAK,YACzBE,IAAMF,KAAM,KAAQD,IAAK;AAG7B,cAAApa,EAAE,CAAC,KAAKoa,GACRpa,EAAE,CAAC,KAAKsa,GACRta,EAAE,CAAC,KAAKqa,GACRra,EAAE,CAAC,KAAKua,GACRva,EAAE,CAAC,KAAKoa,GACRpa,EAAE,CAAC,KAAKsa,GACRta,EAAE,CAAC,KAAKqa,GACRra,EAAE,CAAC,KAAKua;AAGR,uBAAS10D,IAAI,GAAGA,IAAI,GAAGA;AACnB,gBAAAm0D,EAAU,KAAK,IAAI;AAAA,YAExC;AAAA,UACU;AAAA,UAED,iBAAiB,SAAU7U,GAAGrsC,GAAQ;AAElC,gBAAIihD,IAAI,KAAK;AAGb,YAAAC,EAAU,KAAK,IAAI,GAGnBV,EAAE,CAAC,IAAIS,EAAE,CAAC,IAAKA,EAAE,CAAC,MAAM,KAAOA,EAAE,CAAC,KAAK,IACvCT,EAAE,CAAC,IAAIS,EAAE,CAAC,IAAKA,EAAE,CAAC,MAAM,KAAOA,EAAE,CAAC,KAAK,IACvCT,EAAE,CAAC,IAAIS,EAAE,CAAC,IAAKA,EAAE,CAAC,MAAM,KAAOA,EAAE,CAAC,KAAK,IACvCT,EAAE,CAAC,IAAIS,EAAE,CAAC,IAAKA,EAAE,CAAC,MAAM,KAAOA,EAAE,CAAC,KAAK;AAEvC,qBAASl0D,IAAI,GAAGA,IAAI,GAAGA;AAEnB,cAAAyzD,EAAEzzD,CAAC,KAAOyzD,EAAEzzD,CAAC,KAAK,IAAOyzD,EAAEzzD,CAAC,MAAM,MAAO,YAC/ByzD,EAAEzzD,CAAC,KAAK,KAAOyzD,EAAEzzD,CAAC,MAAM,KAAO,YAGzCs/C,EAAErsC,IAASjT,CAAC,KAAKyzD,EAAEzzD,CAAC;AAAA,UAE3B;AAAA,UAED,WAAW,MAAI;AAAA,UAEf,QAAQ,KAAG;AAAA,QACpB,CAAM;AAED,iBAASm0D,IAAY;AAMjB,mBAJID,IAAI,KAAK,IACT/Z,IAAI,KAAK,IAGJn6C,IAAI,GAAGA,IAAI,GAAGA;AACnB,YAAA+zD,EAAG/zD,CAAC,IAAIm6C,EAAEn6C,CAAC;AAIf,UAAAm6C,EAAE,CAAC,IAAKA,EAAE,CAAC,IAAI,aAAa,KAAK,KAAM,GACvCA,EAAE,CAAC,IAAKA,EAAE,CAAC,IAAI,cAAeA,EAAE,CAAC,MAAM,IAAM4Z,EAAG,CAAC,MAAM,IAAK,IAAI,KAAM,GACtE5Z,EAAE,CAAC,IAAKA,EAAE,CAAC,IAAI,aAAeA,EAAE,CAAC,MAAM,IAAM4Z,EAAG,CAAC,MAAM,IAAK,IAAI,KAAM,GACtE5Z,EAAE,CAAC,IAAKA,EAAE,CAAC,IAAI,cAAeA,EAAE,CAAC,MAAM,IAAM4Z,EAAG,CAAC,MAAM,IAAK,IAAI,KAAM,GACtE5Z,EAAE,CAAC,IAAKA,EAAE,CAAC,IAAI,cAAeA,EAAE,CAAC,MAAM,IAAM4Z,EAAG,CAAC,MAAM,IAAK,IAAI,KAAM,GACtE5Z,EAAE,CAAC,IAAKA,EAAE,CAAC,IAAI,aAAeA,EAAE,CAAC,MAAM,IAAM4Z,EAAG,CAAC,MAAM,IAAK,IAAI,KAAM,GACtE5Z,EAAE,CAAC,IAAKA,EAAE,CAAC,IAAI,cAAeA,EAAE,CAAC,MAAM,IAAM4Z,EAAG,CAAC,MAAM,IAAK,IAAI,KAAM,GACtE5Z,EAAE,CAAC,IAAKA,EAAE,CAAC,IAAI,cAAeA,EAAE,CAAC,MAAM,IAAM4Z,EAAG,CAAC,MAAM,IAAK,IAAI,KAAM,GACtE,KAAK,KAAM5Z,EAAE,CAAC,MAAM,IAAM4Z,EAAG,CAAC,MAAM,IAAK,IAAI;AAG7C,mBAAS/zD,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxB,gBAAI20D,IAAKT,EAAEl0D,CAAC,IAAIm6C,EAAEn6C,CAAC,GAGf40D,IAAKD,IAAK,OACVE,IAAKF,MAAO,IAGZ1P,MAAS2P,IAAKA,MAAQ,MAAMA,IAAKC,MAAQ,MAAMA,IAAKA,GACpD3P,MAAQyP,IAAK,cAAcA,IAAM,OAAQA,IAAK,SAAcA,IAAM;AAGtE,YAAAX,EAAEh0D,CAAC,IAAIilD,IAAKC;AAAA,UACzB;AAGS,UAAAgP,EAAE,CAAC,IAAKF,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,OAASA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,MAAQ,GAClFE,EAAE,CAAC,IAAKF,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,IAAOA,EAAE,CAAC,MAAM,MAAOA,EAAE,CAAC,IAAK,GACxDE,EAAE,CAAC,IAAKF,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,OAASA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,MAAQ,GAClFE,EAAE,CAAC,IAAKF,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,IAAOA,EAAE,CAAC,MAAM,MAAOA,EAAE,CAAC,IAAK,GACxDE,EAAE,CAAC,IAAKF,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,OAASA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,MAAQ,GAClFE,EAAE,CAAC,IAAKF,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,IAAOA,EAAE,CAAC,MAAM,MAAOA,EAAE,CAAC,IAAK,GACxDE,EAAE,CAAC,IAAKF,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,OAASA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,MAAQ,GAClFE,EAAE,CAAC,IAAKF,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,IAAOA,EAAE,CAAC,MAAM,MAAOA,EAAE,CAAC,IAAK;AAAA,QACjE;AAUK,QAAA7Z,EAAE,SAASmZ,EAAa,cAAcW,CAAM;AAAA,MACjD,EAAI,GAGIza,EAAS;AAAA,IAEjB,CAAC;AAAA;;;;;AC/LA,KAAC,SAAU95B,GAAM25B,GAASmJ,GAAO;AAGhC,MAAAlJ,EAAiB,UAAUD,EAAQS,MAAmB2I,MAAyB4E,MAAkB0I,MAAqBC,IAAwB;AAAA,IAUhJ,GAAEzW,IAAM,SAAUC,GAAU;AAE3B,aAAC,WAAY;AAET,YAAIW,IAAIX,GACJY,IAAQD,EAAE,KACVmZ,IAAelZ,EAAM,cACrB2C,IAAS5C,EAAE,MAGXsZ,IAAK,CAAE,GACPM,IAAK,CAAE,GACPC,IAAK,CAAE,GASPc,IAAe/X,EAAO,eAAeuW,EAAa,OAAO;AAAA,UACzD,UAAU,WAAY;AAElB,gBAAIjS,IAAI,KAAK,KAAK,OACdkM,IAAK,KAAK,IAAI,IAGd2G,IAAI,KAAK,KAAK;AAAA,cACd7S,EAAE,CAAC;AAAA,cAAIA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM;AAAA,cAC/BA,EAAE,CAAC;AAAA,cAAIA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM;AAAA,cAC/BA,EAAE,CAAC;AAAA,cAAIA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM;AAAA,cAC/BA,EAAE,CAAC;AAAA,cAAIA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM;AAAA,YAClC,GAGGlH,IAAI,KAAK,KAAK;AAAA,cACbkH,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM;AAAA,cAAMA,EAAE,CAAC,IAAI,aAAeA,EAAE,CAAC,IAAI;AAAA,cAC3DA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM;AAAA,cAAMA,EAAE,CAAC,IAAI,aAAeA,EAAE,CAAC,IAAI;AAAA,cAC3DA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM;AAAA,cAAMA,EAAE,CAAC,IAAI,aAAeA,EAAE,CAAC,IAAI;AAAA,cAC3DA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM;AAAA,cAAMA,EAAE,CAAC,IAAI,aAAeA,EAAE,CAAC,IAAI;AAAA,YAC/D;AAGD,iBAAK,KAAK;AAGV,qBAASrhD,IAAI,GAAGA,IAAI,GAAGA;AACnB,cAAAm0D,EAAU,KAAK,IAAI;AAIvB,qBAASn0D,IAAI,GAAGA,IAAI,GAAGA;AACnB,cAAAm6C,EAAEn6C,CAAC,KAAKk0D,EAAGl0D,IAAI,IAAK,CAAC;AAIzB,gBAAIutD,GAAI;AAEJ,kBAAI6G,IAAK7G,EAAG,OACR8G,IAAOD,EAAG,CAAC,GACXE,IAAOF,EAAG,CAAC,GAGXG,KAAQF,KAAQ,IAAMA,MAAS,MAAO,YAAiBA,KAAQ,KAAOA,MAAS,KAAM,YACrFG,KAAQF,KAAQ,IAAMA,MAAS,MAAO,YAAiBA,KAAQ,KAAOA,MAAS,KAAM,YACrFG,IAAMF,MAAO,KAAOC,IAAK,YACzBE,IAAMF,KAAM,KAAQD,IAAK;AAG7B,cAAApa,EAAE,CAAC,KAAKoa,GACRpa,EAAE,CAAC,KAAKsa,GACRta,EAAE,CAAC,KAAKqa,GACRra,EAAE,CAAC,KAAKua,GACRva,EAAE,CAAC,KAAKoa,GACRpa,EAAE,CAAC,KAAKsa,GACRta,EAAE,CAAC,KAAKqa,GACRra,EAAE,CAAC,KAAKua;AAGR,uBAAS10D,IAAI,GAAGA,IAAI,GAAGA;AACnB,gBAAAm0D,EAAU,KAAK,IAAI;AAAA,YAExC;AAAA,UACU;AAAA,UAED,iBAAiB,SAAU7U,GAAGrsC,GAAQ;AAElC,gBAAIihD,IAAI,KAAK;AAGb,YAAAC,EAAU,KAAK,IAAI,GAGnBV,EAAE,CAAC,IAAIS,EAAE,CAAC,IAAKA,EAAE,CAAC,MAAM,KAAOA,EAAE,CAAC,KAAK,IACvCT,EAAE,CAAC,IAAIS,EAAE,CAAC,IAAKA,EAAE,CAAC,MAAM,KAAOA,EAAE,CAAC,KAAK,IACvCT,EAAE,CAAC,IAAIS,EAAE,CAAC,IAAKA,EAAE,CAAC,MAAM,KAAOA,EAAE,CAAC,KAAK,IACvCT,EAAE,CAAC,IAAIS,EAAE,CAAC,IAAKA,EAAE,CAAC,MAAM,KAAOA,EAAE,CAAC,KAAK;AAEvC,qBAASl0D,IAAI,GAAGA,IAAI,GAAGA;AAEnB,cAAAyzD,EAAEzzD,CAAC,KAAOyzD,EAAEzzD,CAAC,KAAK,IAAOyzD,EAAEzzD,CAAC,MAAM,MAAO,YAC/ByzD,EAAEzzD,CAAC,KAAK,KAAOyzD,EAAEzzD,CAAC,MAAM,KAAO,YAGzCs/C,EAAErsC,IAASjT,CAAC,KAAKyzD,EAAEzzD,CAAC;AAAA,UAE3B;AAAA,UAED,WAAW,MAAI;AAAA,UAEf,QAAQ,KAAG;AAAA,QACpB,CAAM;AAED,iBAASm0D,IAAY;AAMjB,mBAJID,IAAI,KAAK,IACT/Z,IAAI,KAAK,IAGJn6C,IAAI,GAAGA,IAAI,GAAGA;AACnB,YAAA+zD,EAAG/zD,CAAC,IAAIm6C,EAAEn6C,CAAC;AAIf,UAAAm6C,EAAE,CAAC,IAAKA,EAAE,CAAC,IAAI,aAAa,KAAK,KAAM,GACvCA,EAAE,CAAC,IAAKA,EAAE,CAAC,IAAI,cAAeA,EAAE,CAAC,MAAM,IAAM4Z,EAAG,CAAC,MAAM,IAAK,IAAI,KAAM,GACtE5Z,EAAE,CAAC,IAAKA,EAAE,CAAC,IAAI,aAAeA,EAAE,CAAC,MAAM,IAAM4Z,EAAG,CAAC,MAAM,IAAK,IAAI,KAAM,GACtE5Z,EAAE,CAAC,IAAKA,EAAE,CAAC,IAAI,cAAeA,EAAE,CAAC,MAAM,IAAM4Z,EAAG,CAAC,MAAM,IAAK,IAAI,KAAM,GACtE5Z,EAAE,CAAC,IAAKA,EAAE,CAAC,IAAI,cAAeA,EAAE,CAAC,MAAM,IAAM4Z,EAAG,CAAC,MAAM,IAAK,IAAI,KAAM,GACtE5Z,EAAE,CAAC,IAAKA,EAAE,CAAC,IAAI,aAAeA,EAAE,CAAC,MAAM,IAAM4Z,EAAG,CAAC,MAAM,IAAK,IAAI,KAAM,GACtE5Z,EAAE,CAAC,IAAKA,EAAE,CAAC,IAAI,cAAeA,EAAE,CAAC,MAAM,IAAM4Z,EAAG,CAAC,MAAM,IAAK,IAAI,KAAM,GACtE5Z,EAAE,CAAC,IAAKA,EAAE,CAAC,IAAI,cAAeA,EAAE,CAAC,MAAM,IAAM4Z,EAAG,CAAC,MAAM,IAAK,IAAI,KAAM,GACtE,KAAK,KAAM5Z,EAAE,CAAC,MAAM,IAAM4Z,EAAG,CAAC,MAAM,IAAK,IAAI;AAG7C,mBAAS/zD,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxB,gBAAI20D,IAAKT,EAAEl0D,CAAC,IAAIm6C,EAAEn6C,CAAC,GAGf40D,IAAKD,IAAK,OACVE,IAAKF,MAAO,IAGZ1P,MAAS2P,IAAKA,MAAQ,MAAMA,IAAKC,MAAQ,MAAMA,IAAKA,GACpD3P,MAAQyP,IAAK,cAAcA,IAAM,OAAQA,IAAK,SAAcA,IAAM;AAGtE,YAAAX,EAAEh0D,CAAC,IAAIilD,IAAKC;AAAA,UACzB;AAGS,UAAAgP,EAAE,CAAC,IAAKF,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,OAASA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,MAAQ,GAClFE,EAAE,CAAC,IAAKF,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,IAAOA,EAAE,CAAC,MAAM,MAAOA,EAAE,CAAC,IAAK,GACxDE,EAAE,CAAC,IAAKF,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,OAASA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,MAAQ,GAClFE,EAAE,CAAC,IAAKF,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,IAAOA,EAAE,CAAC,MAAM,MAAOA,EAAE,CAAC,IAAK,GACxDE,EAAE,CAAC,IAAKF,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,OAASA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,MAAQ,GAClFE,EAAE,CAAC,IAAKF,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,IAAOA,EAAE,CAAC,MAAM,MAAOA,EAAE,CAAC,IAAK,GACxDE,EAAE,CAAC,IAAKF,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,OAASA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,MAAQ,GAClFE,EAAE,CAAC,IAAKF,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,IAAOA,EAAE,CAAC,MAAM,MAAOA,EAAE,CAAC,IAAK;AAAA,QACjE;AAUK,QAAA7Z,EAAE,eAAemZ,EAAa,cAAcwB,CAAY;AAAA,MAC7D,EAAI,GAGItb,EAAS;AAAA,IAEjB,CAAC;AAAA;;;;;AC7LA,KAAC,SAAU95B,GAAM25B,GAASmJ,GAAO;AAGhC,MAAAlJ,EAAiB,UAAUD,EAAQS,MAAmB2I,MAAyB4E,MAAkB0I,MAAqBC,IAAwB;AAAA,IAUhJ,GAAEzW,IAAM,SAAUC,GAAU;AAE3B,aAAC,WAAY;AAET,YAAIW,IAAIX,GACJY,IAAQD,EAAE,KACV8V,IAAc7V,EAAM,aACpB2C,IAAS5C,EAAE;AAEf,cAAM4a,IAAI,IAGJC,IAAS;AAAA,UACX;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,QACf,GAEKC,IAAS;AAAA,UACX;AAAA,YAAI;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,UAAc;AAAA,UACtD;AAAA,YAAI;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,UAAc;AAAA,UACtD;AAAA,YAAI;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,UAAa;AAAA,UACrD;AAAA,YAAI;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,139,146]}
|