@miden-npm/vue 0.0.8 → 0.0.10
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/dist/index.cjs.js +3 -3
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +229 -229
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +3 -3
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/plugin.ts","../src/utils/object.util.ts","../src/utils/api.util.ts","../src/utils/string.util.ts","../src/utils/input.util.ts","../src/utils/error.util.ts","../src/utils/card-scheme.util.ts","../src/components/icons/icon-loader.vue","../src/components/base/button.vue","../src/components/base/input-error.vue","../src/apis/checkout.api.ts","../src/buzapay-checkout/checkout-iframe.vue","../src/buzapay-checkout/checkout-button.vue","../src/components/icons/icon-chevron-left.vue","../src/components/base/back.vue","../src/components/icons/icon-buzapay-icon.vue","../src/components/base/card.vue","../src/components/base/radio-group.vue","../src/components/base/image.vue","../__vite-browser-external","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/core.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/x64-core.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/lib-typedarrays.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-utf16.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64url.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/md5.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha1.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha256.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha224.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha512.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha384.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha3.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/ripemd160.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/hmac.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pbkdf2.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/evpkdf.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/cipher-core.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-cfb.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr-gladman.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ofb.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ecb.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-ansix923.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso10126.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso97971.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-zeropadding.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-nopadding.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/format-hex.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/aes.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/tripledes.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rc4.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit-legacy.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/blowfish.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/index.js","../src/apis/encrypt.api.ts","../src/apis/resources.api.ts","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/utils.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/action-details.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/holder.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/factory.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/mask-element.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/html-mask-element.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/html-input-mask-element.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/html-contenteditable-mask-element.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/input-history.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/input.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/change-details.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/continuous-tail-details.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/base.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/chunk-tail-details.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/cursor.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/fixed-definition.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/input-definition.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/regexp.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/range.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/date.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/dynamic.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/enum.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/function.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/number.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pipe.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/repeat.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/index.js","../src/components/base/input.vue","../src/components/icons/icon-chevron-down.vue","../src/components/icons/icon-chevron-up.vue","../src/components/base/hint.vue","../src/components/base/select.vue","../src/components/pay-by-card.vue","../src/components/icons/icon-copy-success.vue","../src/components/base/copy.vue","../src/components/base/label-info.vue","../src/components/pay-by-transfer.vue","../src/components/icons/icon-usdc.vue","../src/components/icons/icon-usdt.vue","../src/components/base/currency-amount.vue","../src/components/icons/icon-arrow-swap.vue","../src/components/pay-by-stable-coin.vue","../src/components/icons/icon-check-circle.vue","../src/components/base/success.vue","../src/buzapay-checkout/checkout-card.vue"],"sourcesContent":["import type { App, InjectionKey } from \"vue\";\nimport { inject } from \"vue\";\nimport type { MidenPGConfig } from \"./types\";\n\nconst ConfigKey: InjectionKey<MidenPGConfig> = Symbol(\"MidenPGConfig\");\n\nexport function createMidenPG(config: MidenPGConfig) {\n if (!config?.publishableKey) {\n throw new Error(\"[@miden-npm/vue] publishableKey is required\");\n }\n return {\n install(app: App) {\n app.provide(ConfigKey, config);\n },\n };\n}\n\nexport function useMidenPG(): MidenPGConfig {\n const cfg = inject(ConfigKey);\n if (!cfg) {\n throw new Error(\n \"[@miden-npm/vue] Missing provider. Did you forget to app.use(createMidenPG(...))?\"\n );\n }\n return cfg;\n}\n","export const checkObjectTruthy = <T extends object>(obj: T): boolean => {\n if (obj == null || typeof obj !== \"object\") return false;\n return Object.values(obj as Record<string, unknown>).every(Boolean);\n};\n\nexport const getQueryParams = (url: string): Record<string, string> => {\n const params: Record<string, string> = {};\n const searchParams = new URL(url).searchParams;\n\n searchParams.forEach((value, key) => {\n params[key] = value;\n });\n\n return params;\n};\n","export const getBaseUrl = (mode: string): string => {\n return mode === \"sandbox\"\n ? \"https://sandbox-api.midencards.io/payment-gateway-api\"\n : \"\";\n};\n","export const currencySign = (currency: string): string => {\n if (currency === \"USD\") return \"$\";\n if (currency === \"NGN\") return \"₦\";\n if (currency === \"EUR\") return \"€\";\n if (currency === \"GBP\") return \"£\";\n if (currency === \"JPY\") return \"¥\";\n if (currency === \"CNY\") return \"¥\";\n if (currency === \"USDC\" || currency === \"usdc\") return \"$⧫\";\n if (currency === \"USDT\" || currency === \"usdt\") return \"₮\";\n return \"$\";\n};\n\nexport const formatAmount = (\n value: number | string,\n currency?: string\n): string => {\n const num = typeof value === \"string\" ? parseFloat(value) : value;\n if (isNaN(num)) return \"0\";\n return `${currency ? currencySign(currency) : \"\"} ${num?.toLocaleString(\n \"en-US\"\n )}`;\n};\n\nexport const truncateString = (str: string, num: number): string => {\n if (str.length <= num) {\n return str;\n }\n return str.slice(0, num) + \"...\";\n};\n","export const restrictToNumericKeys = (event: KeyboardEvent): void => {\n const allowedKeys = [\n \"Backspace\",\n \"Tab\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Delete\",\n \"Home\",\n \"End\",\n \".\",\n ];\n\n if (\n (event.ctrlKey || event.metaKey) &&\n [\"a\", \"c\", \"v\", \"x\"].includes(event.key.toLowerCase())\n ) {\n return; // allow copy/paste/select\n }\n\n // Prevent non-numeric keys\n if (!allowedKeys.includes(event.key) && !/^\\d$/.test(event.key)) {\n event.preventDefault();\n }\n\n // Prevent multiple decimals\n if (\n event.key === \".\" &&\n (event.target as HTMLInputElement).value.includes(\".\")\n ) {\n event.preventDefault();\n }\n};\n","export interface RulesListItem {\n rule: string;\n value?: string; // optional (for rules without a value)\n}\n\nconst validateRegex = (value: string, regex: RegExp) => regex.test(value);\n\nfunction parseRules(rules: string): RulesListItem[] {\n if (!rules) return [];\n return rules.split(\"|\").map((chunk) => {\n const [rule, val] = chunk.split(\":\");\n return { rule: rule as string, value: val };\n });\n}\n\nexport function getValidationErrorMessage(\n rulesStr: string,\n inputValue: string,\n label: string\n): string | null {\n const errors: string[] = [];\n const rules = parseRules(rulesStr);\n const lowerLabel = (label || \"This field\").toLowerCase();\n const v = inputValue ?? \"\";\n\n const num = Number(v);\n const hasNum = !Number.isNaN(num);\n\n for (const r of rules) {\n switch (r.rule) {\n case \"required\":\n if (!v) errors.push(`The ${lowerLabel} field is required`);\n break;\n\n case \"alpha\":\n if (!validateRegex(v, /^[a-zA-Z]+$/))\n errors.push(\n `The ${lowerLabel} field must only contain alphabetic characters`\n );\n break;\n\n case \"at_least_one_uppercase\":\n if (!validateRegex(v, /.*[A-Z].*/))\n errors.push(\n `The ${lowerLabel} field must contain at least one uppercase character`\n );\n break;\n\n case \"at_least_one_lowercase\":\n if (!validateRegex(v, /.*[a-z].*/))\n errors.push(\n `The ${lowerLabel} field must contain at least one lowercase character`\n );\n break;\n\n case \"at_least_one_number\":\n if (!validateRegex(v, /.*\\d.*/))\n errors.push(\n `The ${lowerLabel} field must contain at least one number`\n );\n break;\n\n case \"alpha_num\":\n if (!validateRegex(v, /^[a-z0-9]+$/i))\n errors.push(\n `The ${lowerLabel} field must only contain alphabetic characters and numbers`\n );\n break;\n\n case \"num_spaces\":\n if (!validateRegex(v, /^[0-9\\s]+$/i))\n errors.push(\n `The ${lowerLabel} field must only contain space and numbers`\n );\n break;\n\n case \"alpha_spaces\":\n if (!validateRegex(v, /^[A-Za-z\\s]*$/))\n errors.push(\n `The ${lowerLabel} field must only contain alphabetic characters and spaces`\n );\n break;\n\n case \"numeric\":\n if (!validateRegex(v, /^\\d+$/))\n errors.push(`The ${lowerLabel} field must only contain numbers`);\n break;\n\n case \"no_special\":\n if (validateRegex(v, /[^a-zA-Z0-9\\s]/))\n errors.push(\n `The ${lowerLabel} field must not contain special characters`\n );\n break;\n\n case \"at_least_one_special\":\n if (!validateRegex(v, /[^a-zA-Z0-9\\s]/))\n errors.push(\n `The ${lowerLabel} field must contain at least one special character`\n );\n break;\n\n case \"email\":\n if (!validateRegex(v, /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,})+$/)) {\n errors.push(\"Please enter a valid email address\");\n }\n break;\n\n case \"is\":\n if (r.value !== v) errors.push(`Value entered must be ${r.value}`);\n break;\n\n case \"is_not\":\n if (r.value === v) errors.push(`Value entered must not be ${r.value}`);\n break;\n\n case \"char_length\":\n if (v.length !== Number(r.value))\n errors.push(\n `The ${lowerLabel} field must be ${r.value} characters long`\n );\n break;\n\n case \"min_char_length\":\n if (v.length < Number(r.value))\n errors.push(\n `The ${lowerLabel} field must not be less than ${r.value} characters long`\n );\n break;\n\n case \"max_char_length\":\n if (v.length > Number(r.value))\n errors.push(\n `The ${lowerLabel} field must not be greater than ${r.value} characters long`\n );\n break;\n\n // Age rules treat the value as a number (strict numeric compare)\n case \"age\":\n if (!hasNum || num !== Number(r.value))\n errors.push(`Age entered must be ${r.value}`);\n break;\n\n case \"min_age\":\n if (!hasNum || num < Number(r.value))\n errors.push(`Age entered must not be less than ${r.value}`);\n break;\n\n case \"max_age\":\n if (!hasNum || num > Number(r.value))\n errors.push(`Age entered must not be greater than ${r.value}`);\n break;\n\n // Numeric value rules (general numbers)\n case \"num_is\":\n if (!hasNum || num !== Number(r.value))\n errors.push(`Number entered must be ${r.value}`);\n break;\n\n case \"num_is_not\":\n if (hasNum && num === Number(r.value))\n errors.push(`Number entered must not be ${r.value}`);\n break;\n\n case \"min_number\":\n if (!hasNum || num < Number(r.value))\n errors.push(`Number entered must not be less than ${r.value}`);\n break;\n\n case \"max_number\":\n if (!hasNum || num > Number(r.value))\n errors.push(`Number entered must not be greater than ${r.value}`);\n break;\n\n default:\n // Unknown rule: ignore silently (or push a generic error if you prefer)\n break;\n }\n }\n\n return errors.length > 0 ? errors[0] : null;\n}\n\nexport const validateGroup = (\n values: Record<string, string>,\n rulesMap: Record<string, string>,\n prettyLabels?: Record<string, string> // optional: override labels in messages\n) => {\n const out: Record<string, string> = {};\n for (const [field, rules] of Object.entries(rulesMap)) {\n if (!rules) continue;\n const label = prettyLabels?.[field] ?? field;\n const err = getValidationErrorMessage(rules, values[field] ?? \"\", label);\n if (err) out[field] = err;\n }\n return out;\n};\n","export enum CardSchemes {\n Visa = 1,\n MasterCard = 2,\n Verve = 3,\n MastercardAndVisa = 4,\n AmericanExpress = 5,\n Discover = 6,\n JCB = 7,\n DinersClub = 8,\n Maestro = 9,\n UnionPay = 10,\n UnionPay3DS = 11, // based on known test BINs only\n UnionPayNon3DS = 12, // based on known test BINs only\n UATP = 13,\n PayPak = 14,\n Jaywan = 15,\n Mada = 16, // mada-only\n MadaVisa = 17,\n MadaMastercard = 18,\n Unknown = 19,\n}\n\n// ---------- Generic scheme regexes ----------\nconst VISA_RE = /^4\\d{12}(\\d{3}){0,2}$/; // 13, 16, 19 digits\nconst MC_RE =\n /^(?:5[1-5]\\d{14}|2(?:2(?:2[1-9]|[3-9]\\d)|[3-6]\\d{2}|7(?:[01]\\d|20))\\d{12})(?:\\d{0,3})?$/; // 16-19\nconst AMEX_RE = /^(34|37)\\d{13}$/; // 15\nconst DISCOVER_RE =\n /^(?:6011|65|64[4-9]|622(?:12[6-9]|1[3-9]\\d|[2-8]\\d{2}|9(?:0\\d|1\\d|2[0-5])))\\d{12,15}$/; // 16-19\nconst JCB_RE = /^(?:35(?:2[8-9]|[3-8]\\d))\\d{12,15}$/; // 16-19\nconst DINERS_RE = /^(?:3(?:0[0-5]\\d|095|6\\d|[89]\\d))\\d{11,13}$/; // 14-16\nconst MAESTRO_RE = /^(?:50|5[6-9]|6[0-9])\\d{10,17}$/; // 12-19\nconst UNIONPAY_RE = /^62\\d{14,17}$/; // 16-19\nconst UATP_RE = /^1\\d{14}$/; // 15\n\n// ---------- Known local/test BINs ----------\nconst VERVE_BIN6_RANGES: Array<[number, number]> = [\n [506099, 506198],\n [650002, 650027],\n];\nconst VERVE_BIN6_SINGLES = new Set<number>([507865, 507866]);\nconst PAYPAK_BIN6 = new Set<number>([220545, 220543]);\nconst JAYWAN_BIN7 = new Set<number>([6690109]);\nconst MADA_ONLY_BIN6 = new Set<number>([968209, 873646]);\nconst MADA_VISA_BIN6 = new Set<number>([422818, 486094]);\nconst MADA_MC_BIN6 = new Set<number>([529741, 543357]);\nconst UNIONPAY_3DS_BIN6 = new Set<number>([620108]);\nconst UNIONPAY_NON3DS_BIN6 = new Set<number>([621423]);\n\nexport function cardTypeHandler(cardNumber: string): string {\n const scheme = detect(cardNumber);\n return CardSchemes[scheme]; // numeric enum reverse mapping -> name\n}\n\nexport function detect(cardNumber: string): CardSchemes {\n if (!cardNumber || !cardNumber.trim()) return CardSchemes.Unknown;\n\n // Normalize: digits only\n const digits = cardNumber.replace(/\\D/g, \"\");\n if (digits.length < 12 || digits.length > 19) return CardSchemes.Unknown;\n\n // ---------- 1) Exact local/test BIN routing FIRST ----------\n if (digits.length >= 6) {\n const bin6 = parseInt(digits.slice(0, 6), 10);\n\n // mada-only\n if (MADA_ONLY_BIN6.has(bin6) && digits.length >= 16 && digits.length <= 19)\n return CardSchemes.Mada;\n\n // mada Visa\n if (MADA_VISA_BIN6.has(bin6) && VISA_RE.test(digits))\n return CardSchemes.MadaVisa;\n\n // mada Mastercard\n if (MADA_MC_BIN6.has(bin6) && MC_RE.test(digits))\n return CardSchemes.MadaMastercard;\n\n // PayPak\n if (PAYPAK_BIN6.has(bin6) && digits.length === 16)\n return CardSchemes.PayPak;\n\n // UnionPay test BINs with 3DS status\n if (UNIONPAY_3DS_BIN6.has(bin6) && UNIONPAY_RE.test(digits))\n return CardSchemes.UnionPay3DS;\n if (UNIONPAY_NON3DS_BIN6.has(bin6) && UNIONPAY_RE.test(digits))\n return CardSchemes.UnionPayNon3DS;\n\n // Verve\n if (isVerve(bin6, digits.length)) return CardSchemes.Verve;\n }\n\n if (digits.length >= 7) {\n const bin7 = parseInt(digits.slice(0, 7), 10);\n\n // Jaywan\n if (JAYWAN_BIN7.has(bin7) && digits.length === 16)\n return CardSchemes.Jaywan;\n }\n\n // ---------- 2) Generic schemes ----------\n if (UATP_RE.test(digits)) return CardSchemes.UATP;\n if (AMEX_RE.test(digits)) return CardSchemes.AmericanExpress;\n if (DISCOVER_RE.test(digits)) return CardSchemes.Discover;\n if (JCB_RE.test(digits)) return CardSchemes.JCB;\n if (DINERS_RE.test(digits)) return CardSchemes.DinersClub;\n if (MC_RE.test(digits)) return CardSchemes.MasterCard;\n if (VISA_RE.test(digits)) return CardSchemes.Visa;\n if (UNIONPAY_RE.test(digits)) return CardSchemes.UnionPay;\n if (MAESTRO_RE.test(digits)) return CardSchemes.Maestro;\n\n return CardSchemes.Unknown;\n}\n\nfunction isVerve(bin6: number, length: number): boolean {\n if (length < 16 || length > 19) return false;\n const inRange = VERVE_BIN6_RANGES.some(\n ([start, end]) => bin6 >= start && bin6 <= end\n );\n return inRange || VERVE_BIN6_SINGLES.has(bin6);\n}\n","<template>\n <svg\n :class=\"['animate-spin', className]\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n :width=\"size\"\n :height=\"size\"\n role=\"img\"\n aria-label=\"loading\"\n v-bind=\"attrs\"\n >\n <circle\n class=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n :stroke=\"color\"\n stroke-width=\"4\"\n />\n <path\n class=\"opacity-75\"\n :fill=\"color\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from \"vue\";\n\ninterface IIconProps {\n size?: number | string;\n color?: string;\n className?: string;\n}\n\nconst props = withDefaults(defineProps<IIconProps>(), {\n size: 24,\n color: \"currentColor\",\n className: \"\",\n});\n\nconst attrs = useAttrs();\nconst { size, color, className } = props;\n</script>\n","<template>\n <button\n :class=\"[\n 'flex items-center justify-center gap-2 py-3 border font-normal text-input-grey transition-colors duration-300 ease-in-out',\n getButtonBgClass(type, isDisabled),\n getButtonSizeClass(size),\n paddingClassX,\n customClass,\n ]\"\n type=\"button\"\n :disabled=\"isDisabled\"\n @click=\"handleClick\"\n >\n <slot name=\"prefix\" />\n\n <IconLoader v-if=\"loading\" />\n <div v-else>\n <p v-if=\"label\" :class=\"['mb-0', getLabelSizeClass(size)]\">\n {{ label }}\n </p>\n <slot v-else />\n </div>\n\n <slot name=\"suffix\" />\n </button>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport IconLoader from \"../icons/icon-loader.vue\";\n\ninterface IBaseButtonProps {\n label?: string;\n type?: string;\n size?: string;\n paddingClassX?: string;\n disabled?: boolean;\n loading?: boolean;\n customClass?: string;\n}\n\nconst props = withDefaults(defineProps<IBaseButtonProps>(), {\n label: \"\",\n type: \"neutral\",\n size: \"de\",\n paddingClassX: \"px-8\",\n disabled: false,\n loading: false,\n customClass: \"\",\n});\n\nconst emit = defineEmits<{\n (e: \"click\"): void;\n}>();\n\nconst isDisabled = computed(() => props.disabled || props.loading);\n\nfunction handleClick() {\n if (!isDisabled.value) emit(\"click\");\n}\n\n/** === Helper functions (ported from React) === */\nfunction getButtonBgClass(type: string, disabled?: boolean) {\n if (disabled)\n return \"bg-gray-200 text-gray-400 cursor-not-allowed border-gray-200\";\n switch (type) {\n case \"primary\":\n return \"bg-primary text-white hover:bg-primary-black hover:border-primary-black border-primary\";\n case \"secondary\":\n return \"bg-gray-200 border-gray-200 hover:bg-gray-300 text-heading-text\";\n case \"danger\":\n return \"bg-red-500 border-red-500 text-white hover:bg-red-600\";\n case \"neutral\":\n default:\n return \"bg-off-white border-grey-border hover:bg-gray-100\";\n }\n}\n\nfunction getButtonSizeClass(size?: string) {\n switch (size) {\n case \"de\":\n return \"h-68px rounded-xl\";\n case \"md\":\n return \"h-42px rounded-lg\";\n case \"sm\":\n return \"h-32px rounded-md\";\n default:\n return \"h-68px rounded-xl\";\n }\n}\n\nfunction getLabelSizeClass(size?: string) {\n switch (size) {\n case \"de\":\n case \"md\":\n case \"sm\":\n return \"text-body-2xs font-normal\";\n default:\n return \"text-body-xs font-normal\";\n }\n}\n</script>\n","<template>\n <p class=\"mb-0 text-body-3xs font-normal text-red-500\">\n {{ errorMessage }}\n </p>\n</template>\n\n<script setup lang=\"ts\">\ninterface IBaseInputErrorProps {\n errorMessage: string;\n}\n\ndefineProps<IBaseInputErrorProps>();\n</script>\n","import {\n IAuthorizeCardPaymentPayload,\n IGeneratePaymentAccountPayload,\n IGenerateStableCoinAddress,\n IPaymentObject,\n} from \"../types/checkout.type\";\nimport { getBaseUrl } from \"../utils\";\n\nexport async function createPaymentLink(\n paymentObject: IPaymentObject,\n environment: string,\n secretKey: string\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment);\n const res = await fetch(\n `${baseUrl}/api/v1/checkout/generate-payment-link2`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId: secretKey,\n },\n body: JSON.stringify({\n ...paymentObject,\n LinkName: `${Date.now()}-Link`,\n }),\n }\n );\n return await res.json();\n } catch (error) {}\n}\n\nexport async function authorizeCardPayment(\n environment: string,\n { merchantId, ...rest }: IAuthorizeCardPaymentPayload & { merchantId: string }\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment);\n const res = await fetch(\n `${baseUrl}/api/v1/checkout/authorize-card-3ds-payment-sdk`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId,\n },\n body: JSON.stringify(rest),\n }\n );\n return await res.json();\n } catch (error) {}\n}\n\nexport async function generatePaymentAccount(\n environment: string,\n { merchantId, ...rest }: IGeneratePaymentAccountPayload\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment);\n const res = await fetch(\n `${baseUrl}/api/v1/checkout/generate-payment-account`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId,\n },\n body: JSON.stringify(rest),\n }\n );\n return await res.json();\n } catch (error) {}\n}\n\nexport async function getPaymentReferenceDetails(\n environment: string,\n paymentReference: string\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment);\n const res = await fetch(\n `${baseUrl}/api/v1/checkout/details/${paymentReference}`,\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n }\n );\n return await res.json();\n } catch (error) {}\n}\n\nexport async function generateStableCoinAddress(\n environment: string,\n { merchantId, ...rest }: IGenerateStableCoinAddress\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment);\n const res = await fetch(\n `${baseUrl}/api/v1/checkout/generate-payment-walletaddress`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId,\n },\n body: JSON.stringify(rest),\n }\n );\n return await res.json();\n } catch (error) {}\n}\n","<template>\n <div class=\"relative\" :style=\"resolvedStyle\">\n <div ref=\"containerRef\" class=\"w-full h-full\"></div>\n <div\n v-if=\"loading\"\n class=\"absolute inset-0 grid place-items-center bg-white/60\"\n >\n <IconLoader />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n onMounted,\n onBeforeUnmount,\n ref,\n watch,\n toRefs,\n computed,\n CSSProperties,\n} from \"vue\";\nimport { checkObjectTruthy } from \"../utils\";\nimport IconLoader from \"../components/icons/icon-loader.vue\";\nimport { IPaymentObject } from \"../types/checkout.type\";\nimport { IApiResponse } from \"../types/resource.type\";\nimport { createPaymentLink } from \"../apis/checkout.api\";\n\ntype Env = \"sandbox\" | \"production\";\n\ninterface IIframeStyle {\n width?: string;\n height?: string;\n border?: string;\n borderRadius?: string;\n overflow?: string;\n}\n\ninterface ICheckoutIframeProps {\n style?: IIframeStyle;\n url?: string;\n secretKey: string;\n environment?: Env;\n paymentObject?: IPaymentObject;\n}\n\nconst props = withDefaults(defineProps<ICheckoutIframeProps>(), {\n style: () => ({\n width: \"100%\",\n height: \"100vh\",\n border: \"0\",\n borderRadius: \"6px\",\n overflow: \"hidden\",\n }),\n url: undefined,\n environment: \"sandbox\",\n paymentObject: () =>\n ({\n amount: 0,\n currency: \"\",\n email: \"\",\n phoneNumber: \"\",\n narration: \"\",\n redirectUrl: \"\",\n } as IPaymentObject),\n});\n\nconst resolvedStyle = computed<CSSProperties>(() => ({\n ...props.style,\n}));\n\nconst containerRef = ref<HTMLDivElement | null>(null);\nconst iframeRef = ref<HTMLIFrameElement | null>(null);\n\nconst message = ref<string>(\"\");\nconst loading = ref<boolean>(false);\n\nfunction destroyIframe() {\n if (iframeRef.value && iframeRef.value.parentNode) {\n iframeRef.value.parentNode.removeChild(iframeRef.value);\n }\n iframeRef.value = null;\n}\n\nfunction launchIframe(url: string) {\n // remove prior iframe if present\n destroyIframe();\n\n const iframe = document.createElement(\"iframe\");\n iframe.src = url;\n\n // apply provided styles to the iframe\n const s = props.style;\n if (s.width) iframe.style.width = s.width;\n if (s.height) iframe.style.height = s.height;\n if (s.border) iframe.style.border = s.border;\n if (s.borderRadius) iframe.style.borderRadius = s.borderRadius;\n if (s.overflow) iframe.style.overflow = s.overflow;\n\n containerRef.value?.appendChild(iframe);\n iframeRef.value = iframe;\n}\n\nasync function generatePaymentLinkHandler() {\n // If URL is given, just mount it\n if (props.url) {\n launchIframe(props.url);\n return;\n }\n\n if (!props.secretKey) {\n message.value = \"Secret key is required.\";\n return;\n }\n\n if (!checkObjectTruthy<IPaymentObject>(props.paymentObject)) {\n message.value = \"Kindly ensure you are passing all the required data.\";\n return;\n }\n\n loading.value = true;\n message.value = \"\";\n\n try {\n const response: IApiResponse<any> = await createPaymentLink(\n props.paymentObject,\n props.environment,\n props.secretKey\n );\n\n if (response?.isSuccessful && response.launchUrl) {\n message.value = \"Payment link created successfully\";\n launchIframe(response.launchUrl); // use the fresh URL directly\n } else {\n message.value = \"Failed to create payment link\";\n }\n } catch (e: any) {\n message.value = e?.message || \"Failed to create payment link\";\n } finally {\n loading.value = false;\n }\n}\n\nonMounted(() => {\n if (!containerRef.value) return;\n generatePaymentLinkHandler();\n});\n\n// If the `url` prop changes later, reload the iframe\nwatch(\n () => props.url,\n (newUrl) => {\n if (newUrl) launchIframe(newUrl);\n }\n);\n\nonBeforeUnmount(() => {\n destroyIframe();\n});\n</script>\n","<template>\n <CheckoutIframe\n v-if=\"launchUrl && mode === 'iframe'\"\n :url=\"launchUrl\"\n :secretKey=\"secretKey\"\n :environment=\"environment\"\n />\n <div v-else>\n <BaseButton\n label=\"Pay\"\n type=\"primary\"\n customClass=\"w-full\"\n :loading=\"loading\"\n @click=\"generatePaymentLinkHandler\"\n />\n <BaseInputError :errorMessage=\"message\" />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from \"vue\";\nimport { checkObjectTruthy } from \"../utils\";\nimport BaseButton from \"../components/base/button.vue\";\nimport BaseInputError from \"../components/base/input-error.vue\";\nimport CheckoutIframe from \"./checkout-iframe.vue\";\nimport { IPaymentObject } from \"../types/checkout.type\";\nimport { IApiResponse } from \"../types/resource.type\";\nimport { createPaymentLink } from \"../apis/checkout.api\";\n\ntype Env = \"sandbox\" | \"production\";\ntype Mode = \"redirect\" | \"iframe\";\n\ninterface ICheckoutButtonProps {\n secretKey: string;\n environment?: Env;\n paymentObject?: IPaymentObject;\n mode?: Mode;\n}\n\nconst props = withDefaults(defineProps<ICheckoutButtonProps>(), {\n environment: \"sandbox\",\n paymentObject: () =>\n ({\n amount: 0,\n currency: \"\",\n email: \"\",\n phoneNumber: \"\",\n narration: \"\",\n redirectUrl: \"\",\n } as IPaymentObject),\n mode: \"redirect\",\n});\n\nconst message = ref<string>(\"\");\nconst launchUrl = ref<string>(\"\");\nconst loading = ref<boolean>(false);\n\nasync function generatePaymentLinkHandler() {\n if (!props.secretKey) {\n message.value = \"Secret key is required.\";\n return;\n }\n if (!checkObjectTruthy<IPaymentObject>(props.paymentObject)) {\n message.value = \"Kindly ensure you are passing all the required data.\";\n return;\n }\n\n loading.value = true;\n message.value = \"\";\n\n try {\n const response: IApiResponse<any> = await createPaymentLink(\n props.paymentObject,\n props.environment,\n props.secretKey\n );\n\n if (response?.isSuccessful && response.launchUrl) {\n launchUrl.value = response.launchUrl;\n message.value = \"Payment link created successfully\";\n\n if (props.mode === \"redirect\") {\n // Use the URL from the response immediately.\n window.open(response.launchUrl, \"_blank\", \"noopener,noreferrer\");\n }\n } else {\n message.value = \"Failed to create payment link\";\n }\n } catch (e: any) {\n message.value = e?.message || \"Failed to create payment link\";\n } finally {\n loading.value = false;\n }\n}\n\n// Expose for template\nconst { secretKey, environment, mode } = props;\n</script>\n","<template>\n <svg\n :width=\"width\"\n :height=\"height\"\n viewBox=\"0 0 17 17\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n v-bind=\"attrs\"\n >\n <path\n d=\"M10.5 14.28C10.3734 14.28 10.2467 14.2333 10.1467 14.1333L5.80002 9.78668C5.09335 9.08001 5.09335 7.92001 5.80002 7.21335L10.1467 2.86668C10.34 2.67335 10.66 2.67335 10.8534 2.86668C11.0467 3.06001 11.0467 3.38001 10.8534 3.57335L6.50669 7.92001C6.18669 8.24001 6.18669 8.76001 6.50669 9.08001L10.8534 13.4267C11.0467 13.62 11.0467 13.94 10.8534 14.1333C10.7534 14.2267 10.6267 14.28 10.5 14.28Z\"\n :fill=\"color\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from \"vue\";\n\ninterface IIconProps {\n width?: number | string;\n height?: number | string;\n color?: string;\n}\n\nconst props = withDefaults(defineProps<IIconProps>(), {\n width: 17,\n height: 17,\n color: \"currentColor\",\n});\n\nconst attrs = useAttrs();\nconst { width, height, color } = props;\n</script>\n","<template>\n <div class=\"flex items-center gap-2 cursor-pointer\" @click=\"$emit('back')\">\n <IconChevronLeft />\n <p class=\"mb-0 text-body-xs font-normal\">Back</p>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport IconChevronLeft from \"../icons/icon-chevron-left.vue\";\n\nconst emit = defineEmits<{\n (e: \"back\"): void;\n}>();\n</script>\n","<template>\n <svg\n :width=\"width\"\n :height=\"height\"\n viewBox=\"0 0 15 13\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n v-bind=\"attrs\"\n >\n <path\n d=\"M9.97919 0.5C10.8854 0.5 11.6276 0.585938 12.2057 0.757812C12.7891 0.924479 13.2188 1.22396 13.4948 1.65625C13.7761 2.08333 13.9167 2.6901 13.9167 3.47656C13.9167 4.1849 13.7526 4.77083 13.4245 5.23438C13.0964 5.69792 12.5938 5.95312 11.9167 6C12.8021 6.08854 13.4401 6.40625 13.8307 6.95312C14.2214 7.49479 14.4167 8.17708 14.4167 9C14.4167 9.71354 14.3334 10.2995 14.1667 10.7578C14.0052 11.2161 13.7318 11.5729 13.3464 11.8281C12.961 12.0781 12.4375 12.2526 11.7761 12.3516C11.1198 12.4505 10.2995 12.5 9.31512 12.5H0.416687V0.5H9.97919ZM2.91669 7.77344H5.97235V11.167L10.2497 5.22754H7.19501V1.83398L2.91669 7.77344ZM5.97235 6.07617H8.2702L7.19501 7.57324V6.9248H4.89716L5.97235 5.42676V6.07617Z\"\n :fill=\"color\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from \"vue\";\n\ninterface IIconProps {\n width?: number | string;\n height?: number | string;\n color?: string;\n}\n\nconst props = withDefaults(defineProps<IIconProps>(), {\n width: 15,\n height: 13,\n color: \"currentColor\",\n});\n\nconst attrs = useAttrs();\nconst { width, height, color } = props;\n</script>\n","<template>\n <div\n class=\"checkout-card w-full h-screen flex flex-col items-center justify-center text-white\"\n >\n <div class=\"flex w-1/2\">\n <BaseBack v-if=\"showBackButton\" @back=\"emit('back')\" />\n\n <div class=\"flex gap-2 w-full\">\n <div class=\"flex flex-col gap-8 w-full\">\n <div class=\"bg-off-white rounded-xl\">\n <slot />\n </div>\n\n <div class=\"flex items-center gap-2 justify-center\">\n <p class=\"text-light-white-100 text-body-2xs font-regular\">\n Powered by Buzapay\n </p>\n <IconBuzapayIcon color=\"#E8F4FF\" />\n </div>\n </div>\n\n <!-- Close Icon -->\n <div\n class=\"close-icon flex flex-col items-center justify-center self-start cursor-pointer hover:bg-gray-500\"\n @click=\"emit('close')\"\n role=\"button\"\n aria-label=\"Close\"\n >\n <p class=\"text-white\">x</p>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport BaseBack from \"./back.vue\"; // assumes you saved the emitted version as back.vue\nimport IconBuzapayIcon from \"../icons/icon-buzapay-icon.vue\";\n\ninterface IBaseCardProps {\n showBackButton?: boolean;\n}\n\nconst props = withDefaults(defineProps<IBaseCardProps>(), {\n showBackButton: false,\n});\n\nconst emit = defineEmits<{\n (e: \"back\"): void;\n (e: \"close\"): void;\n}>();\n</script>\n","<template>\n <div\n :class=\"['flex', containerLayout, className]\"\n role=\"radiogroup\"\n :aria-orientation=\"type === 'horizontal' ? 'horizontal' : 'vertical'\"\n tabindex=\"0\"\n >\n <div\n v-for=\"opt in options\"\n :key=\"opt.value\"\n role=\"radio\"\n :aria-checked=\"selected === opt.value\"\n tabindex=\"-1\"\n @click=\"setSelected(opt.value)\"\n class=\"flex items-center gap-2 cursor-pointer transition-colors duration-200\"\n >\n <div\n :class=\"[\n 'w-4 h-4 rounded-full border flex items-center justify-center',\n selected === opt.value\n ? 'bg-orange-500 border-orange-500'\n : 'bg-white border-grey-200',\n ]\"\n >\n <div\n v-if=\"selected === opt.value\"\n class=\"bg-white w-2 h-2 rounded-full\"\n />\n </div>\n <p class=\"mb-0 text-body-2xs font-medium text-heading-text\">\n {{ opt.label }}\n </p>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, ref, watch } from \"vue\";\n\ntype Layout = \"vertical\" | \"horizontal\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface IBaseRadioGroupProps {\n options: Option[];\n type?: Layout;\n /** Controlled value (v-model) */\n modelValue?: string;\n /** Uncontrolled initial value */\n defaultValue?: string;\n /** Extra classes for the container */\n className?: string;\n}\n\nconst props = withDefaults(defineProps<IBaseRadioGroupProps>(), {\n options: () => [],\n type: \"vertical\",\n modelValue: undefined,\n defaultValue: undefined,\n className: \"\",\n});\n\nconst emit = defineEmits<{\n (e: \"update:modelValue\", v: string): void;\n (e: \"selectedChange\", v: string): void;\n}>();\n\n/** Controlled vs uncontrolled */\nconst isControlled = computed(() => props.modelValue !== undefined);\nconst internal = ref<string>(\"\");\n\n/** Initialize for uncontrolled mode (and notify) */\nonMounted(() => {\n if (isControlled.value) return;\n const initial =\n props.defaultValue ?? (props.options.length ? props.options[0].value : \"\");\n internal.value = initial;\n if (initial) {\n emit(\"update:modelValue\", initial); // keep parent in sync if it listens\n emit(\"selectedChange\", initial);\n }\n});\n\n/** Keep internal in sync when parent controls it */\nwatch(\n () => props.modelValue,\n (v) => {\n if (isControlled.value) internal.value = v ?? \"\";\n },\n { immediate: true }\n);\n\nconst selected = computed(() =>\n isControlled.value ? props.modelValue ?? \"\" : internal.value\n);\n\nfunction setSelected(v: string) {\n if (!isControlled.value) internal.value = v;\n emit(\"update:modelValue\", v);\n emit(\"selectedChange\", v);\n}\n\nconst containerLayout = computed(() =>\n props.type === \"horizontal\" ? \"flex-row gap-5\" : \"flex-col gap-6\"\n);\n\nconst { options, type, className } = props;\n</script>\n","<template>\n <img\n :src=\"src\"\n :height=\"height\"\n :alt=\"alt\"\n :class=\"[customClass, isFullWidth ? 'w-full' : '']\"\n :style=\"{ width: isFullWidth ? '100%' : width + 'px' }\"\n @click=\"emit('click')\"\n />\n</template>\n\n<script setup lang=\"ts\">\ninterface IBaseImageProps {\n src: string;\n height?: number | string;\n width?: number | string;\n alt?: string;\n customClass?: string;\n isFullWidth?: boolean;\n}\n\nconst props = withDefaults(defineProps<IBaseImageProps>(), {\n height: 50,\n width: 50,\n alt: \"Image\",\n customClass: \"\",\n isFullWidth: false,\n});\n\nconst emit = defineEmits<{\n (e: \"click\"): void;\n}>();\n\nconst { src, height, width, alt, customClass, isFullWidth } = props;\n</script>\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\";\n\nexport function encryptPayload(merchantId: string, formData = {}) {\n const merchId = merchantId.replace(\"-\", \"\");\n const first16Key = merchId.slice(0, 16);\n const last16Iv = merchId.slice(-16);\n\n const key = CryptoJS.enc.Utf8.parse(first16Key);\n const iv = CryptoJS.enc.Utf8.parse(last16Iv);\n const postDataObj = JSON.stringify(formData);\n\n const encryptedData = CryptoJS.AES.encrypt(\n CryptoJS.enc.Utf8.parse(postDataObj),\n key,\n {\n keySize: 128 / 8,\n iv,\n mode: CryptoJS.mode.CBC,\n padding: CryptoJS.pad.Pkcs7,\n }\n );\n\n return {\n requestParam: encryptedData.toString(),\n };\n}\n\nexport function decryptPayload(merchantId: string, payload: string) {\n const merchId = merchantId.replace(\"-\", \"\");\n const first16Key = merchId.slice(0, 16);\n const last16Iv = merchId.slice(-16);\n\n const key = CryptoJS.enc.Utf8.parse(first16Key);\n const iv = CryptoJS.enc.Utf8.parse(last16Iv);\n\n const decryptedData = CryptoJS.AES.decrypt(payload, key, {\n keySize: 128 / 8,\n iv,\n mode: CryptoJS.mode.CBC,\n padding: CryptoJS.pad.Pkcs7,\n });\n\n const decryptedText = decryptedData.toString(CryptoJS.enc.Utf8);\n return JSON.parse(decryptedText);\n}\n","import { getBaseUrl } from \"../utils\";\n\nexport async function getCountries(\n environment: string,\n secretKey: string\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment);\n const res = await fetch(`${baseUrl}/api/v1/countries-iso`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId: secretKey,\n },\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function getCountryStates(\n countryIso3: string,\n environment: string,\n secretKey: string\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment);\n const res = await fetch(\n `${baseUrl}/api/v1/state-by-country/${countryIso3}`,\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId: secretKey,\n },\n }\n );\n return await res.json();\n } catch (error) {}\n}\n\nexport async function getStableCoins(environment: string): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment);\n const res = await fetch(`${baseUrl}/api/v1/checkout/stable-coin`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function getStableCoinNetworks(\n environment: string,\n stableCoin: string\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment);\n const res = await fetch(\n `${baseUrl}/api/v1/checkout/networks/${stableCoin}`,\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n }\n );\n return await res.json();\n } catch (error) {}\n}\n","/** Checks if value is string */\nfunction isString(str) {\n return typeof str === 'string' || str instanceof String;\n}\n\n/** Checks if value is object */\nfunction isObject(obj) {\n var _obj$constructor;\n return typeof obj === 'object' && obj != null && (obj == null || (_obj$constructor = obj.constructor) == null ? void 0 : _obj$constructor.name) === 'Object';\n}\nfunction pick(obj, keys) {\n if (Array.isArray(keys)) return pick(obj, (_, k) => keys.includes(k));\n return Object.entries(obj).reduce((acc, _ref) => {\n let [k, v] = _ref;\n if (keys(v, k)) acc[k] = v;\n return acc;\n }, {});\n}\n\n/** Direction */\nconst DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT'\n};\n\n/** Direction */\n\nfunction forceDirection(direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n default:\n return direction;\n }\n}\n\n/** Escapes regular expression control chars */\nfunction escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n}\n\n// cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\nfunction objectIncludes(b, a) {\n if (a === b) return true;\n const arrA = Array.isArray(a),\n arrB = Array.isArray(b);\n let i;\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++) if (!objectIncludes(a[i], b[i])) return false;\n return true;\n }\n if (arrA != arrB) return false;\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n const dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n const regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n const keys = Object.keys(a);\n // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = 0; i < keys.length; i++) if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString();\n }\n return false;\n}\n\n/** Selection range */\n\nexport { DIRECTION, escapeRegExp, forceDirection, isObject, isString, objectIncludes, pick };\n","import { DIRECTION } from './utils.js';\n\n/** Provides details of changing input */\nclass ActionDetails {\n /** Current input value */\n\n /** Current cursor position */\n\n /** Old input value */\n\n /** Old selection */\n\n constructor(opts) {\n Object.assign(this, opts);\n\n // double check if left part was changed (autofilling, other non-standard input triggers)\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n if (this.insertedCount) {\n // double check right part\n while (this.value.slice(this.cursorPos) !== this.oldValue.slice(this.oldSelection.end)) {\n if (this.value.length - this.cursorPos < this.oldValue.length - this.oldSelection.end) ++this.oldSelection.end;else ++this.cursorPos;\n }\n }\n }\n\n /** Start changing position */\n get startChangePos() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n\n /** Inserted symbols count */\n get insertedCount() {\n return this.cursorPos - this.startChangePos;\n }\n\n /** Inserted symbols */\n get inserted() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n\n /** Removed symbols count */\n get removedCount() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos ||\n // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n\n /** Removed symbols */\n get removed() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n\n /** Unchanged head symbols */\n get head() {\n return this.value.substring(0, this.startChangePos);\n }\n\n /** Unchanged tail symbols */\n get tail() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n\n /** Remove direction */\n get removeDirection() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE;\n\n // align right if delete at right\n return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) &&\n // if not range removed (event with backspace)\n this.oldSelection.end === this.oldSelection.start ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n}\n\nexport { ActionDetails as default };\n","/** Applies mask on element */\nfunction IMask(el, opts) {\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n}\n\nexport { IMask as default };\n","import { isString, isObject, pick } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n// export function maskedClass(mask: string): typeof MaskedPattern;\n// export function maskedClass(mask: DateConstructor): typeof MaskedDate;\n// export function maskedClass(mask: NumberConstructor): typeof MaskedNumber;\n// export function maskedClass(mask: Array<any> | ArrayConstructor): typeof MaskedDynamic;\n// export function maskedClass(mask: MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass(mask: Masked): typeof Masked;\n// export function maskedClass(mask: typeof Masked): typeof Masked;\n// export function maskedClass(mask: typeof MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: typeof MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: typeof MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: typeof MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: typeof MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: typeof MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: typeof MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: typeof MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass<Mask extends typeof Masked> (mask: Mask): Mask;\n// export function maskedClass(mask: RegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: (value: string, ...args: any[]) => boolean): typeof MaskedFunction;\n\n/** Get Masked class by mask type */\nfunction maskedClass(mask) /* TODO */{\n if (mask == null) throw new Error('mask property should be defined');\n if (mask instanceof RegExp) return IMask.MaskedRegExp;\n if (isString(mask)) return IMask.MaskedPattern;\n if (mask === Date) return IMask.MaskedDate;\n if (mask === Number) return IMask.MaskedNumber;\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic;\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask;\n if (IMask.Masked && mask instanceof IMask.Masked) return mask.constructor;\n if (mask instanceof Function) return IMask.MaskedFunction;\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n return IMask.Masked;\n}\nfunction normalizeOpts(opts) {\n if (!opts) throw new Error('Options in not defined');\n if (IMask.Masked) {\n if (opts.prototype instanceof IMask.Masked) return {\n mask: opts\n };\n\n /*\n handle cases like:\n 1) opts = Masked\n 2) opts = { mask: Masked, ...instanceOpts }\n */\n const {\n mask = undefined,\n ...instanceOpts\n } = opts instanceof IMask.Masked ? {\n mask: opts\n } : isObject(opts) && opts.mask instanceof IMask.Masked ? opts : {};\n if (mask) {\n const _mask = mask.mask;\n return {\n ...pick(mask, (_, k) => !k.startsWith('_')),\n mask: mask.constructor,\n _mask,\n ...instanceOpts\n };\n }\n }\n if (!isObject(opts)) return {\n mask: opts\n };\n return {\n ...opts\n };\n}\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n\n// From masked\n// export default function createMask<Opts extends Masked, ReturnMasked=Opts> (opts: Opts): ReturnMasked;\n// // From masked class\n// export default function createMask<Opts extends MaskedOptions<typeof Masked>, ReturnMasked extends Masked=InstanceType<Opts['mask']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedDate>, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedNumber>, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedEnum>, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedRange>, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedRegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedFunction>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedPattern>, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedDynamic>, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\n// // From mask opts\n// export default function createMask<Opts extends MaskedOptions<Masked>, ReturnMasked=Opts extends MaskedOptions<infer M> ? M : never> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedNumberOptions, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedDateFactoryOptions, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedEnumOptions, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedRangeOptions, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedPatternOptions, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedDynamicOptions, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<RegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<Function>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\n\n/** Creates new {@link Masked} depending on mask type */\nfunction createMask(opts) {\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n const nOpts = normalizeOpts(opts);\n const MaskedClass = maskedClass(nOpts.mask);\n if (!MaskedClass) throw new Error(\"Masked class is not found for provided mask \" + nOpts.mask + \", appropriate module needs to be imported manually before creating mask.\");\n if (nOpts.mask === MaskedClass) delete nOpts.mask;\n if (nOpts._mask) {\n nOpts.mask = nOpts._mask;\n delete nOpts._mask;\n }\n return new MaskedClass(nOpts);\n}\nIMask.createMask = createMask;\n\nexport { createMask as default, maskedClass, normalizeOpts };\n","import IMask from '../core/holder.js';\n\n/** Generic element API to use with mask */\nclass MaskElement {\n /** */\n\n /** */\n\n /** */\n\n /** Safely returns selection start */\n get selectionStart() {\n let start;\n try {\n start = this._unsafeSelectionStart;\n } catch {}\n return start != null ? start : this.value.length;\n }\n\n /** Safely returns selection end */\n get selectionEnd() {\n let end;\n try {\n end = this._unsafeSelectionEnd;\n } catch {}\n return end != null ? end : this.value.length;\n }\n\n /** Safely sets element selection */\n select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n try {\n this._unsafeSelect(start, end);\n } catch {}\n }\n\n /** */\n get isActive() {\n return false;\n }\n /** */\n\n /** */\n\n /** */\n}\nIMask.MaskElement = MaskElement;\n\nexport { MaskElement as default };\n","import MaskElement from './mask-element.js';\nimport IMask from '../core/holder.js';\n\nconst KEY_Z = 90;\nconst KEY_Y = 89;\n\n/** Bridge between HTMLElement and {@link Masked} */\nclass HTMLMaskElement extends MaskElement {\n /** HTMLElement to use mask on */\n\n constructor(input) {\n super();\n this.input = input;\n this._onKeydown = this._onKeydown.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onBeforeinput = this._onBeforeinput.bind(this);\n this._onCompositionEnd = this._onCompositionEnd.bind(this);\n }\n get rootElement() {\n var _this$input$getRootNo, _this$input$getRootNo2, _this$input;\n return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) == null ? void 0 : _this$input$getRootNo2.call(_this$input)) != null ? _this$input$getRootNo : document;\n }\n\n /** Is element in focus */\n get isActive() {\n return this.input === this.rootElement.activeElement;\n }\n\n /** Binds HTMLElement events to mask internal events */\n bindEvents(handlers) {\n this.input.addEventListener('keydown', this._onKeydown);\n this.input.addEventListener('input', this._onInput);\n this.input.addEventListener('beforeinput', this._onBeforeinput);\n this.input.addEventListener('compositionend', this._onCompositionEnd);\n this.input.addEventListener('drop', handlers.drop);\n this.input.addEventListener('click', handlers.click);\n this.input.addEventListener('focus', handlers.focus);\n this.input.addEventListener('blur', handlers.commit);\n this._handlers = handlers;\n }\n _onKeydown(e) {\n if (this._handlers.redo && (e.keyCode === KEY_Z && e.shiftKey && (e.metaKey || e.ctrlKey) || e.keyCode === KEY_Y && e.ctrlKey)) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n if (this._handlers.undo && e.keyCode === KEY_Z && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n if (!e.isComposing) this._handlers.selectionChange(e);\n }\n _onBeforeinput(e) {\n if (e.inputType === 'historyUndo' && this._handlers.undo) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n if (e.inputType === 'historyRedo' && this._handlers.redo) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n }\n _onCompositionEnd(e) {\n this._handlers.input(e);\n }\n _onInput(e) {\n if (!e.isComposing) this._handlers.input(e);\n }\n\n /** Unbinds HTMLElement events to mask internal events */\n unbindEvents() {\n this.input.removeEventListener('keydown', this._onKeydown);\n this.input.removeEventListener('input', this._onInput);\n this.input.removeEventListener('beforeinput', this._onBeforeinput);\n this.input.removeEventListener('compositionend', this._onCompositionEnd);\n this.input.removeEventListener('drop', this._handlers.drop);\n this.input.removeEventListener('click', this._handlers.click);\n this.input.removeEventListener('focus', this._handlers.focus);\n this.input.removeEventListener('blur', this._handlers.commit);\n this._handlers = {};\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\n/** Bridge between InputElement and {@link Masked} */\nclass HTMLInputMaskElement extends HTMLMaskElement {\n /** InputElement to use mask on */\n\n constructor(input) {\n super(input);\n this.input = input;\n }\n\n /** Returns InputElement selection start */\n get _unsafeSelectionStart() {\n return this.input.selectionStart != null ? this.input.selectionStart : this.value.length;\n }\n\n /** Returns InputElement selection end */\n get _unsafeSelectionEnd() {\n return this.input.selectionEnd;\n }\n\n /** Sets InputElement selection */\n _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n get value() {\n return this.input.value;\n }\n set value(value) {\n this.input.value = value;\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLInputMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\nclass HTMLContenteditableMaskElement extends HTMLMaskElement {\n /** Returns HTMLElement selection start */\n get _unsafeSelectionStart() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Returns HTMLElement selection end */\n get _unsafeSelectionEnd() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Sets HTMLElement selection */\n _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n const range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n\n /** HTMLElement value */\n get value() {\n return this.input.textContent || '';\n }\n set value(value) {\n this.input.textContent = value;\n }\n}\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\nexport { HTMLContenteditableMaskElement as default };\n","class InputHistory {\n constructor() {\n this.states = [];\n this.currentIndex = 0;\n }\n get currentState() {\n return this.states[this.currentIndex];\n }\n get isEmpty() {\n return this.states.length === 0;\n }\n push(state) {\n // if current index points before the last element then remove the future\n if (this.currentIndex < this.states.length - 1) this.states.length = this.currentIndex + 1;\n this.states.push(state);\n if (this.states.length > InputHistory.MAX_LENGTH) this.states.shift();\n this.currentIndex = this.states.length - 1;\n }\n go(steps) {\n this.currentIndex = Math.min(Math.max(this.currentIndex + steps, 0), this.states.length - 1);\n return this.currentState;\n }\n undo() {\n return this.go(-1);\n }\n redo() {\n return this.go(+1);\n }\n clear() {\n this.states.length = 0;\n this.currentIndex = 0;\n }\n}\nInputHistory.MAX_LENGTH = 100;\n\nexport { InputHistory as default };\n","import { DIRECTION } from '../core/utils.js';\nimport ActionDetails from '../core/action-details.js';\nimport createMask, { maskedClass } from '../masked/factory.js';\nimport MaskElement from './mask-element.js';\nimport HTMLInputMaskElement from './html-input-mask-element.js';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element.js';\nimport IMask from '../core/holder.js';\nimport InputHistory from './input-history.js';\nimport './html-mask-element.js';\n\n/** Listens to element events and controls changes between element and {@link Masked} */\nclass InputMask {\n /**\n View element\n */\n\n /** Internal {@link Masked} model */\n\n constructor(el, opts) {\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLInputMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._rawInputValue = '';\n this.history = new InputHistory();\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onUndo = this._onUndo.bind(this);\n this._onRedo = this._onRedo.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n this._bindEvents();\n\n // refresh\n this.updateValue();\n this._onChange();\n }\n maskEquals(mask) {\n var _this$masked;\n return mask == null || ((_this$masked = this.masked) == null ? void 0 : _this$masked.maskEquals(mask));\n }\n\n /** Masked */\n get mask() {\n return this.masked.mask;\n }\n set mask(mask) {\n if (this.maskEquals(mask)) return;\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n // TODO \"any\" no idea\n this.masked.updateOptions({\n mask\n });\n return;\n }\n const masked = mask instanceof IMask.Masked ? mask : createMask({\n mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n\n /** Raw value */\n get value() {\n return this._value;\n }\n set value(str) {\n if (this.value === str) return;\n this.masked.value = str;\n this.updateControl('auto');\n }\n\n /** Unmasked value */\n get unmaskedValue() {\n return this._unmaskedValue;\n }\n set unmaskedValue(str) {\n if (this.unmaskedValue === str) return;\n this.masked.unmaskedValue = str;\n this.updateControl('auto');\n }\n\n /** Raw input value */\n get rawInputValue() {\n return this._rawInputValue;\n }\n set rawInputValue(str) {\n if (this.rawInputValue === str) return;\n this.masked.rawInputValue = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Typed unmasked value */\n get typedValue() {\n return this.masked.typedValue;\n }\n set typedValue(val) {\n if (this.masked.typedValueEquals(val)) return;\n this.masked.typedValue = val;\n this.updateControl('auto');\n }\n\n /** Display value */\n get displayValue() {\n return this.masked.displayValue;\n }\n\n /** Starts listening to element events */\n _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange,\n undo: this._onUndo,\n redo: this._onRedo\n });\n }\n\n /** Stops listening to element events */\n _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n\n /** Fires custom event */\n _fireEvent(ev, e) {\n const listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(l => l(e));\n }\n\n /** Current selection start */\n get selectionStart() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n\n /** Current cursor position */\n get cursorPos() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n }\n set cursorPos(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n this._saveSelection();\n }\n\n /** Stores current selection */\n _saveSelection( /* ev */\n ) {\n if (this.displayValue !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n\n /** Syncronizes model value from view */\n updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n this._unmaskedValue = this.masked.unmaskedValue;\n this._rawInputValue = this.masked.rawInputValue;\n }\n\n /** Syncronizes view from model value, fires change events */\n updateControl(cursorPos) {\n const newUnmaskedValue = this.masked.unmaskedValue;\n const newValue = this.masked.value;\n const newRawInputValue = this.masked.rawInputValue;\n const newDisplayValue = this.displayValue;\n const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue || this._rawInputValue !== newRawInputValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n this._rawInputValue = newRawInputValue;\n if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue;\n if (cursorPos === 'auto') this.alignCursor();else if (cursorPos != null) this.cursorPos = cursorPos;\n if (isChanged) this._fireChangeEvents();\n if (!this._historyChanging && (isChanged || this.history.isEmpty)) this.history.push({\n unmaskedValue: newUnmaskedValue,\n selection: {\n start: this.selectionStart,\n end: this.cursorPos\n }\n });\n }\n\n /** Updates options with deep equal check, recreates {@link Masked} model if mask type changes */\n updateOptions(opts) {\n const {\n mask,\n ...restOpts\n } = opts; // TODO types, yes, mask is optional\n\n const updateMask = !this.maskEquals(mask);\n const updateOpts = this.masked.optionsIsChanged(restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts); // TODO\n\n if (updateMask || updateOpts) this.updateControl();\n }\n\n /** Updates cursor */\n updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos;\n\n // also queue change cursor for mobile browsers\n this._delayUpdateCursor(cursorPos);\n }\n\n /** Delays cursor update to support mobile browsers */\n _delayUpdateCursor(cursorPos) {\n this._abortUpdateCursor();\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(() => {\n if (!this.el) return; // if was destroyed\n this.cursorPos = this._changingCursorPos;\n this._abortUpdateCursor();\n }, 10);\n }\n\n /** Fires custom events */\n _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n\n /** Aborts delayed cursor update */\n _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n\n /** Aligns cursor to nearest available position */\n alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT));\n }\n\n /** Aligns cursor only if selection is empty */\n alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n this.alignCursor();\n }\n\n /** Adds listener on custom event */\n on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n this._listeners[ev].push(handler);\n return this;\n }\n\n /** Removes custom event listener */\n off(ev, handler) {\n if (!this._listeners[ev]) return this;\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n const hIndex = this._listeners[ev].indexOf(handler);\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n\n /** Handles view input event */\n _onInput(e) {\n this._inputEvent = e;\n this._abortUpdateCursor();\n const details = new ActionDetails({\n // new state\n value: this.el.value,\n cursorPos: this.cursorPos,\n // old state\n oldValue: this.displayValue,\n oldSelection: this._selection\n });\n const oldRawValue = this.masked.rawInputValue;\n const offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, {\n input: true,\n raw: true\n }).offset;\n\n // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n const removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n let cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\n this.updateControl(cursorPos);\n delete this._inputEvent;\n }\n\n /** Handles view change event and commits model value */\n _onChange() {\n if (this.displayValue !== this.el.value) this.updateValue();\n this.masked.doCommit();\n this.updateControl();\n this._saveSelection();\n }\n\n /** Handles view drop event, prevents by default */\n _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n /** Restore last selection on focus */\n _onFocus(ev) {\n this.alignCursorFriendly();\n }\n\n /** Restore last selection on focus */\n _onClick(ev) {\n this.alignCursorFriendly();\n }\n _onUndo() {\n this._applyHistoryState(this.history.undo());\n }\n _onRedo() {\n this._applyHistoryState(this.history.redo());\n }\n _applyHistoryState(state) {\n if (!state) return;\n this._historyChanging = true;\n this.unmaskedValue = state.unmaskedValue;\n this.el.select(state.selection.start, state.selection.end);\n this._saveSelection();\n this._historyChanging = false;\n }\n\n /** Unbind view events and removes element reference */\n destroy() {\n this._unbindEvents();\n this._listeners.length = 0;\n delete this.el;\n }\n}\nIMask.InputMask = InputMask;\n\nexport { InputMask as default };\n","import IMask from './holder.js';\n\n/** Provides details of changing model value */\nclass ChangeDetails {\n /** Inserted symbols */\n\n /** Additional offset if any changes occurred before tail */\n\n /** Raw inserted is used by dynamic mask */\n\n /** Can skip chars */\n\n static normalize(prep) {\n return Array.isArray(prep) ? prep : [prep, new ChangeDetails()];\n }\n constructor(details) {\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n tailShift: 0,\n skip: false\n }, details);\n }\n\n /** Aggregate changes */\n aggregate(details) {\n this.inserted += details.inserted;\n this.rawInserted += details.rawInserted;\n this.tailShift += details.tailShift;\n this.skip = this.skip || details.skip;\n return this;\n }\n\n /** Total offset considering all changes */\n get offset() {\n return this.tailShift + this.inserted.length;\n }\n get consumed() {\n return Boolean(this.rawInserted) || this.skip;\n }\n equals(details) {\n return this.inserted === details.inserted && this.tailShift === details.tailShift && this.rawInserted === details.rawInserted && this.skip === details.skip;\n }\n}\nIMask.ChangeDetails = ChangeDetails;\n\nexport { ChangeDetails as default };\n","/** Provides details of continuous extracted tail */\nclass ContinuousTailDetails {\n /** Tail value as string */\n\n /** Tail start position */\n\n /** Start position */\n\n constructor(value, from, stop) {\n if (value === void 0) {\n value = '';\n }\n if (from === void 0) {\n from = 0;\n }\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n toString() {\n return this.value;\n }\n extend(tail) {\n this.value += String(tail);\n }\n appendTo(masked) {\n return masked.append(this.toString(), {\n tail: true\n }).aggregate(masked._appendPlaceholder());\n }\n get state() {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop\n };\n }\n set state(state) {\n Object.assign(this, state);\n }\n unshift(beforePos) {\n if (!this.value.length || beforePos != null && this.from >= beforePos) return '';\n const shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n shift() {\n if (!this.value.length) return '';\n const shiftChar = this.value[this.value.length - 1];\n this.value = this.value.slice(0, -1);\n return shiftChar;\n }\n}\n\nexport { ContinuousTailDetails as default };\n","import ChangeDetails from '../core/change-details.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport { isString, DIRECTION, objectIncludes, forceDirection } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n/** Append flags */\n\n/** Extract flags */\n\n// see https://github.com/microsoft/TypeScript/issues/6223\n\n/** Provides common masking stuff */\nclass Masked {\n /** */\n\n /** */\n\n /** Transforms value before mask processing */\n\n /** Transforms each char before mask processing */\n\n /** Validates if value is acceptable */\n\n /** Does additional processing at the end of editing */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n this._value = '';\n this._update({\n ...Masked.DEFAULTS,\n ...opts\n });\n this._initialized = true;\n }\n\n /** Sets and applies new options */\n updateOptions(opts) {\n if (!this.optionsIsChanged(opts)) return;\n this.withValueRefresh(this._update.bind(this, opts));\n }\n\n /** Sets new options */\n _update(opts) {\n Object.assign(this, opts);\n }\n\n /** Mask state */\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n }\n\n /** Resets value */\n reset() {\n this._value = '';\n }\n get value() {\n return this._value;\n }\n set value(value) {\n this.resolve(value, {\n input: true\n });\n }\n\n /** Resolve new value */\n resolve(value, flags) {\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n this.reset();\n this.append(value, flags, '');\n this.doCommit();\n }\n get unmaskedValue() {\n return this.value;\n }\n set unmaskedValue(value) {\n this.resolve(value, {});\n }\n get typedValue() {\n return this.parse ? this.parse(this.value, this) : this.unmaskedValue;\n }\n set typedValue(value) {\n if (this.format) {\n this.value = this.format(value, this);\n } else {\n this.unmaskedValue = String(value);\n }\n }\n\n /** Value that includes raw user input */\n get rawInputValue() {\n return this.extractInput(0, this.displayValue.length, {\n raw: true\n });\n }\n set rawInputValue(value) {\n this.resolve(value, {\n raw: true\n });\n }\n get displayValue() {\n return this.value;\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return this.isComplete;\n }\n\n /** Finds nearest input position in direction */\n nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return Math.min(this.displayValue.length, toPos - fromPos);\n }\n\n /** Extracts value in range considering flags */\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return this.displayValue.slice(fromPos, toPos);\n }\n\n /** Extracts tail in range */\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n\n /** Appends tail */\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n\n /** Appends char */\n _appendCharRaw(ch, flags) {\n if (!ch) return new ChangeDetails();\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch\n });\n }\n\n /** Appends char */\n _appendChar(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const consistentState = this.state;\n let details;\n [ch, details] = this.doPrepareChar(ch, flags);\n if (ch) {\n details = details.aggregate(this._appendCharRaw(ch, flags));\n\n // TODO handle `skip`?\n\n // try `autofix` lookahead\n if (!details.rawInserted && this.autofix === 'pad') {\n const noFixState = this.state;\n this.state = consistentState;\n let fixDetails = this.pad(flags);\n const chDetails = this._appendCharRaw(ch, flags);\n fixDetails = fixDetails.aggregate(chDetails);\n\n // if fix was applied or\n // if details are equal use skip restoring state optimization\n if (chDetails.rawInserted || fixDetails.equals(details)) {\n details = fixDetails;\n } else {\n this.state = noFixState;\n }\n }\n }\n if (details.inserted) {\n let consistentTail;\n let appended = this.doValidate(flags) !== false;\n if (appended && checkTail != null) {\n // validation ok, check tail\n const beforeTailState = this.state;\n if (this.overwrite === true) {\n consistentTail = checkTail.state;\n for (let i = 0; i < details.rawInserted.length; ++i) {\n checkTail.unshift(this.displayValue.length - details.tailShift);\n }\n }\n let tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted.length === checkTail.toString().length;\n\n // not ok, try shift\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\n this.state = beforeTailState;\n consistentTail = checkTail.state;\n for (let i = 0; i < details.rawInserted.length; ++i) {\n checkTail.shift();\n }\n tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted.length === checkTail.toString().length;\n }\n\n // if ok, rollback state after tail\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n }\n\n // revert all if something went wrong\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n return details;\n }\n\n /** Appends optional placeholder at the end */\n _appendPlaceholder() {\n return new ChangeDetails();\n }\n\n /** Appends optional eager placeholder at the end */\n _appendEager() {\n return new ChangeDetails();\n }\n\n /** Appends symbols considering flags */\n append(str, flags, tail) {\n if (!isString(str)) throw new Error('value should be string');\n const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags != null && flags.tail) flags._beforeTailState = this.state;\n let details;\n [str, details] = this.doPrepare(str, flags);\n for (let ci = 0; ci < str.length; ++ci) {\n const d = this._appendChar(str[ci], flags, checkTail);\n if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) break;\n details.aggregate(d);\n }\n if ((this.eager === true || this.eager === 'append') && flags != null && flags.input && str) {\n details.aggregate(this._appendEager());\n }\n\n // append tail but aggregate only tailShift\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift;\n // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n return details;\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n this._value = this.displayValue.slice(0, fromPos) + this.displayValue.slice(toPos);\n return new ChangeDetails();\n }\n\n /** Calls function and reapplies current value */\n withValueRefresh(fn) {\n if (this._refreshing || !this._initialized) return fn();\n this._refreshing = true;\n const rawInput = this.rawInputValue;\n const value = this.value;\n const ret = fn();\n this.rawInputValue = rawInput;\n // append lost trailing chars at the end\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.displayValue.length), {}, '');\n this.doCommit();\n }\n delete this._refreshing;\n return ret;\n }\n runIsolated(fn) {\n if (this._isolated || !this._initialized) return fn(this);\n this._isolated = true;\n const state = this.state;\n const ret = fn(this);\n this.state = state;\n delete this._isolated;\n return ret;\n }\n doSkipInvalid(ch, flags, checkTail) {\n return Boolean(this.skipInvalid);\n }\n\n /** Prepares string before mask processing */\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepare ? this.prepare(str, this, flags) : str);\n }\n\n /** Prepares each char before mask processing */\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepareChar ? this.prepareChar(str, this, flags) : str);\n }\n\n /** Validates if value is acceptable */\n doValidate(flags) {\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n }\n\n /** Does additional processing at the end of editing */\n doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n splice(start, deleteCount, inserted, removeDirection, flags) {\n if (inserted === void 0) {\n inserted = '';\n }\n if (removeDirection === void 0) {\n removeDirection = DIRECTION.NONE;\n }\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n const tailPos = start + deleteCount;\n const tail = this.extractTail(tailPos);\n const eagerRemove = this.eager === true || this.eager === 'remove';\n let oldRawValue;\n if (eagerRemove) {\n removeDirection = forceDirection(removeDirection);\n oldRawValue = this.extractInput(0, tailPos, {\n raw: true\n });\n }\n let startChangePos = start;\n const details = new ChangeDetails();\n\n // if it is just deletion without insertion\n if (removeDirection !== DIRECTION.NONE) {\n startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !eagerRemove ? DIRECTION.NONE : removeDirection);\n\n // adjust tailShift if start was aligned\n details.tailShift = startChangePos - start;\n }\n details.aggregate(this.remove(startChangePos));\n if (eagerRemove && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {\n if (removeDirection === DIRECTION.FORCE_LEFT) {\n let valLength;\n while (oldRawValue === this.rawInputValue && (valLength = this.displayValue.length)) {\n details.aggregate(new ChangeDetails({\n tailShift: -1\n })).aggregate(this.remove(valLength - 1));\n }\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\n tail.unshift();\n }\n }\n return details.aggregate(this.append(inserted, flags, tail));\n }\n maskEquals(mask) {\n return this.mask === mask;\n }\n optionsIsChanged(opts) {\n return !objectIncludes(this, opts);\n }\n typedValueEquals(value) {\n const tval = this.typedValue;\n return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || (this.format ? this.format(value, this) === this.format(this.typedValue, this) : false);\n }\n pad(flags) {\n return new ChangeDetails();\n }\n}\nMasked.DEFAULTS = {\n skipInvalid: true\n};\nMasked.EMPTY_VALUES = [undefined, null, ''];\nIMask.Masked = Masked;\n\nexport { Masked as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport IMask from '../../core/holder.js';\n\nclass ChunksTailDetails {\n /** */\n\n constructor(chunks, from) {\n if (chunks === void 0) {\n chunks = [];\n }\n if (from === void 0) {\n from = 0;\n }\n this.chunks = chunks;\n this.from = from;\n }\n toString() {\n return this.chunks.map(String).join('');\n }\n extend(tailChunk) {\n if (!String(tailChunk)) return;\n tailChunk = isString(tailChunk) ? new ContinuousTailDetails(String(tailChunk)) : tailChunk;\n const lastChunk = this.chunks[this.chunks.length - 1];\n const extendLast = lastChunk && (\n // if stops are same or tail has no stop\n lastChunk.stop === tailChunk.stop || tailChunk.stop == null) &&\n // if tail chunk goes just after last chunk\n tailChunk.from === lastChunk.from + lastChunk.toString().length;\n if (tailChunk instanceof ContinuousTailDetails) {\n // check the ability to extend previous chunk\n if (extendLast) {\n // extend previous chunk\n lastChunk.extend(tailChunk.toString());\n } else {\n // append new chunk\n this.chunks.push(tailChunk);\n }\n } else if (tailChunk instanceof ChunksTailDetails) {\n if (tailChunk.stop == null) {\n // unwrap floating chunks to parent, keeping `from` pos\n let firstTailChunk;\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n firstTailChunk = tailChunk.chunks.shift(); // not possible to be `undefined` because length was checked above\n firstTailChunk.from += tailChunk.from;\n this.extend(firstTailChunk);\n }\n }\n\n // if tail chunk still has value\n if (tailChunk.toString()) {\n // if chunks contains stops, then popup stop to container\n tailChunk.stop = tailChunk.blockIndex;\n this.chunks.push(tailChunk);\n }\n }\n }\n appendTo(masked) {\n if (!(masked instanceof IMask.MaskedPattern)) {\n const tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n const details = new ChangeDetails();\n for (let ci = 0; ci < this.chunks.length; ++ci) {\n const chunk = this.chunks[ci];\n const lastBlockIter = masked._mapPosToBlock(masked.displayValue.length);\n const stop = chunk.stop;\n let chunkBlock;\n if (stop != null && (\n // if block not found or stop is behind lastBlock\n !lastBlockIter || lastBlockIter.index <= stop)) {\n if (chunk instanceof ChunksTailDetails ||\n // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0) {\n details.aggregate(masked._appendPlaceholder(stop));\n }\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n if (chunkBlock) {\n const tailDetails = chunkBlock.appendTail(chunk);\n details.aggregate(tailDetails);\n\n // get not inserted chars\n const remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, {\n tail: true\n }));\n } else {\n details.aggregate(masked.append(chunk.toString(), {\n tail: true\n }));\n }\n }\n return details;\n }\n get state() {\n return {\n chunks: this.chunks.map(c => c.state),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex\n };\n }\n set state(state) {\n const {\n chunks,\n ...props\n } = state;\n Object.assign(this, props);\n this.chunks = chunks.map(cstate => {\n const chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails();\n chunk.state = cstate;\n return chunk;\n });\n }\n unshift(beforePos) {\n if (!this.chunks.length || beforePos != null && this.from >= beforePos) return '';\n const chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos;\n let ci = 0;\n while (ci < this.chunks.length) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.unshift(chunkShiftPos);\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n ++ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n shift() {\n if (!this.chunks.length) return '';\n let ci = this.chunks.length - 1;\n while (0 <= ci) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.shift();\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n --ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n}\n\nexport { ChunksTailDetails as default };\n","import { DIRECTION } from '../../core/utils.js';\n\nclass PatternCursor {\n constructor(masked, pos) {\n this.masked = masked;\n this._log = [];\n const {\n offset,\n index\n } = masked._mapPosToBlock(pos) || (pos < 0 ?\n // first\n {\n index: 0,\n offset: 0\n } :\n // last\n {\n index: this.masked._blocks.length,\n offset: 0\n });\n this.offset = offset;\n this.index = index;\n this.ok = false;\n }\n get block() {\n return this.masked._blocks[this.index];\n }\n get pos() {\n return this.masked._blockStartPos(this.index) + this.offset;\n }\n get state() {\n return {\n index: this.index,\n offset: this.offset,\n ok: this.ok\n };\n }\n set state(s) {\n Object.assign(this, s);\n }\n pushState() {\n this._log.push(this.state);\n }\n popState() {\n const s = this._log.pop();\n if (s) this.state = s;\n return s;\n }\n bindBlock() {\n if (this.block) return;\n if (this.index < 0) {\n this.index = 0;\n this.offset = 0;\n }\n if (this.index >= this.masked._blocks.length) {\n this.index = this.masked._blocks.length - 1;\n this.offset = this.block.displayValue.length; // TODO this is stupid type error, `block` depends on index that was changed above\n }\n }\n _pushLeft(fn) {\n this.pushState();\n for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = ((_this$block = this.block) == null ? void 0 : _this$block.displayValue.length) || 0) {\n var _this$block;\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n _pushRight(fn) {\n this.pushState();\n for (this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0) {\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n pushLeftBeforeFilled() {\n return this._pushLeft(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_LEFT);\n if (this.offset !== 0) return true;\n });\n }\n pushLeftBeforeInput() {\n // cases:\n // filled input: 00|\n // optional empty input: 00[]|\n // nested block: XX<[]>|\n return this._pushLeft(() => {\n if (this.block.isFixed) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushLeftBeforeRequired() {\n return this._pushLeft(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushRightBeforeFilled() {\n return this._pushRight(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_RIGHT);\n if (this.offset !== this.block.value.length) return true;\n });\n }\n pushRightBeforeInput() {\n return this._pushRight(() => {\n if (this.block.isFixed) return;\n\n // const o = this.offset;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n // HACK cases like (STILL DOES NOT WORK FOR NESTED)\n // aa|X\n // aa<X|[]>X_ - this will not work\n // if (o && o === this.offset && this.block instanceof PatternInputDefinition) continue;\n return true;\n });\n }\n pushRightBeforeRequired() {\n return this._pushRight(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n\n // TODO check |[*]XX_\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n return true;\n });\n }\n}\n\nexport { PatternCursor as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION, isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport '../../core/holder.js';\n\nclass PatternFixedDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n Object.assign(this, opts);\n this._value = '';\n this.isFixed = true;\n }\n get value() {\n return this._value;\n }\n get unmaskedValue() {\n return this.isUnmasking ? this.value : '';\n }\n get rawInputValue() {\n return this._isRawInput ? this.value : '';\n }\n get displayValue() {\n return this.value;\n }\n reset() {\n this._isRawInput = false;\n this._value = '';\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n return new ChangeDetails();\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this._value.length;\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n return this._isRawInput ? toPos - fromPos : 0;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return Boolean(this._value);\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (this.isFilled) return new ChangeDetails();\n const appendEager = this.eager === true || this.eager === 'append';\n const appended = this.char === ch;\n const isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !appendEager) && !flags.tail;\n const details = new ChangeDetails({\n inserted: this.char,\n rawInserted: isResolved ? this.char : ''\n });\n this._value = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n return details;\n }\n _appendEager() {\n return this._appendChar(this.char, {\n tail: true\n });\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n this._value = details.inserted = this.char;\n return details;\n }\n extractTail() {\n return new ContinuousTailDetails('');\n }\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n append(str, flags, tail) {\n const details = this._appendChar(str[0], flags);\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n return details;\n }\n doCommit() {}\n get state() {\n return {\n _value: this._value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n this._isRawInput = Boolean(state._rawInputValue);\n }\n pad(flags) {\n return this._appendPlaceholder();\n }\n}\n\nexport { PatternFixedDefinition as default };\n","import createMask from '../factory.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION } from '../../core/utils.js';\nimport '../../core/holder.js';\n\nclass PatternInputDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n const {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager,\n ...maskOpts\n } = opts;\n this.masked = createMask(maskOpts);\n Object.assign(this, {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager\n });\n }\n reset() {\n this.isFilled = false;\n this.masked.reset();\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n if (fromPos === 0 && toPos >= 1) {\n this.isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n return new ChangeDetails();\n }\n get value() {\n return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : '');\n }\n get unmaskedValue() {\n return this.masked.unmaskedValue;\n }\n get rawInputValue() {\n return this.masked.rawInputValue;\n }\n get displayValue() {\n return this.masked.value && this.displayChar || this.value;\n }\n get isComplete() {\n return Boolean(this.masked.value) || this.isOptional;\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (this.isFilled) return new ChangeDetails();\n const state = this.masked.state;\n // simulate input\n let details = this.masked._appendChar(ch, this.currentMaskFlags(flags));\n if (details.inserted && this.doValidate(flags) === false) {\n details = new ChangeDetails();\n this.masked.state = state;\n }\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n details.inserted = this.placeholderChar;\n }\n details.skip = !details.inserted && !this.isOptional;\n this.isFilled = Boolean(details.inserted);\n return details;\n }\n append(str, flags, tail) {\n // TODO probably should be done via _appendChar\n return this.masked.append(str, this.currentMaskFlags(flags), tail);\n }\n _appendPlaceholder() {\n if (this.isFilled || this.isOptional) return new ChangeDetails();\n this.isFilled = true;\n return new ChangeDetails({\n inserted: this.placeholderChar\n });\n }\n _appendEager() {\n return new ChangeDetails();\n }\n extractTail(fromPos, toPos) {\n return this.masked.extractTail(fromPos, toPos);\n }\n appendTail(tail) {\n return this.masked.appendTail(tail);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this.value.length;\n const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return this.isComplete ? boundPos : minPos;\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n case DIRECTION.NONE:\n default:\n return boundPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.value.slice(fromPos, toPos).length;\n }\n doValidate(flags) {\n return this.masked.doValidate(this.currentMaskFlags(flags)) && (!this.parent || this.parent.doValidate(this.currentMaskFlags(flags)));\n }\n doCommit() {\n this.masked.doCommit();\n }\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue,\n masked: this.masked.state,\n isFilled: this.isFilled\n };\n }\n set state(state) {\n this.masked.state = state.masked;\n this.isFilled = state.isFilled;\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta;\n return {\n ...flags,\n _beforeTailState: (flags == null || (_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.masked) || (flags == null ? void 0 : flags._beforeTailState)\n };\n }\n pad(flags) {\n return new ChangeDetails();\n }\n}\nPatternInputDefinition.DEFAULT_DEFINITIONS = {\n '0': /\\d/,\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // http://stackoverflow.com/a/22075070\n '*': /./\n};\n\nexport { PatternInputDefinition as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by RegExp */\nclass MaskedRegExp extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const mask = opts.mask;\n if (mask) opts.validate = value => value.search(mask) >= 0;\n super._update(opts);\n }\n}\nIMask.MaskedRegExp = MaskedRegExp;\n\nexport { MaskedRegExp as default };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport { DIRECTION } from '../core/utils.js';\nimport Masked from './base.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport ChunksTailDetails from './pattern/chunk-tail-details.js';\nimport PatternCursor from './pattern/cursor.js';\nimport PatternFixedDefinition from './pattern/fixed-definition.js';\nimport PatternInputDefinition from './pattern/input-definition.js';\nimport './regexp.js';\nimport '../core/continuous-tail-details.js';\n\n/** Pattern mask */\nclass MaskedPattern extends Masked {\n /** */\n\n /** */\n\n /** Single char for empty input */\n\n /** Single char for filled input */\n\n /** Show placeholder only when needed */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n super({\n ...MaskedPattern.DEFAULTS,\n ...opts,\n definitions: Object.assign({}, PatternInputDefinition.DEFAULT_DEFINITIONS, opts == null ? void 0 : opts.definitions)\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n super._update(opts);\n this._rebuildMask();\n }\n _rebuildMask() {\n const defs = this.definitions;\n this._blocks = [];\n this.exposeBlock = undefined;\n this._stops = [];\n this._maskedBlocks = {};\n const pattern = this.mask;\n if (!pattern || !defs) return;\n let unmaskingBlock = false;\n let optionalBlock = false;\n for (let i = 0; i < pattern.length; ++i) {\n if (this.blocks) {\n const p = pattern.slice(i);\n const bNames = Object.keys(this.blocks).filter(bName => p.indexOf(bName) === 0);\n // order by key length\n bNames.sort((a, b) => b.length - a.length);\n // use block name with max length\n const bName = bNames[0];\n if (bName) {\n const {\n expose,\n repeat,\n ...bOpts\n } = normalizeOpts(this.blocks[bName]); // TODO type Opts<Arg & Extra>\n const blockOpts = {\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n overwrite: this.overwrite,\n autofix: this.autofix,\n ...bOpts,\n repeat,\n parent: this\n };\n const maskedBlock = repeat != null ? new IMask.RepeatBlock(blockOpts /* TODO */) : createMask(blockOpts);\n if (maskedBlock) {\n this._blocks.push(maskedBlock);\n if (expose) this.exposeBlock = maskedBlock;\n\n // store block index\n if (!this._maskedBlocks[bName]) this._maskedBlocks[bName] = [];\n this._maskedBlocks[bName].push(this._blocks.length - 1);\n }\n i += bName.length - 1;\n continue;\n }\n }\n let char = pattern[i];\n let isInput = (char in defs);\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n continue;\n }\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n isInput = false;\n }\n const def = isInput ? new PatternInputDefinition({\n isOptional: optionalBlock,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n ...normalizeOpts(defs[char]),\n parent: this\n }) : new PatternFixedDefinition({\n char,\n eager: this.eager,\n isUnmasking: unmaskingBlock\n });\n this._blocks.push(def);\n }\n }\n get state() {\n return {\n ...super.state,\n _blocks: this._blocks.map(b => b.state)\n };\n }\n set state(state) {\n if (!state) {\n this.reset();\n return;\n }\n const {\n _blocks,\n ...maskedState\n } = state;\n this._blocks.forEach((b, bi) => b.state = _blocks[bi]);\n super.state = maskedState;\n }\n reset() {\n super.reset();\n this._blocks.forEach(b => b.reset());\n }\n get isComplete() {\n return this.exposeBlock ? this.exposeBlock.isComplete : this._blocks.every(b => b.isComplete);\n }\n get isFilled() {\n return this._blocks.every(b => b.isFilled);\n }\n get isFixed() {\n return this._blocks.every(b => b.isFixed);\n }\n get isOptional() {\n return this._blocks.every(b => b.isOptional);\n }\n doCommit() {\n this._blocks.forEach(b => b.doCommit());\n super.doCommit();\n }\n get unmaskedValue() {\n return this.exposeBlock ? this.exposeBlock.unmaskedValue : this._blocks.reduce((str, b) => str += b.unmaskedValue, '');\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.unmaskedValue = unmaskedValue;\n this.appendTail(tail);\n this.doCommit();\n } else super.unmaskedValue = unmaskedValue;\n }\n get value() {\n return this.exposeBlock ? this.exposeBlock.value :\n // TODO return _value when not in change?\n this._blocks.reduce((str, b) => str += b.value, '');\n }\n set value(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.value = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.value = value;\n }\n get typedValue() {\n return this.exposeBlock ? this.exposeBlock.typedValue : super.typedValue;\n }\n set typedValue(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.typedValue = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.typedValue = value;\n }\n get displayValue() {\n return this._blocks.reduce((str, b) => str += b.displayValue, '');\n }\n appendTail(tail) {\n return super.appendTail(tail).aggregate(this._appendPlaceholder());\n }\n _appendEager() {\n var _this$_mapPosToBlock;\n const details = new ChangeDetails();\n let startBlockIndex = (_this$_mapPosToBlock = this._mapPosToBlock(this.displayValue.length)) == null ? void 0 : _this$_mapPosToBlock.index;\n if (startBlockIndex == null) return details;\n\n // TODO test if it works for nested pattern masks\n if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex;\n for (let bi = startBlockIndex; bi < this._blocks.length; ++bi) {\n const d = this._blocks[bi]._appendEager();\n if (!d.inserted) break;\n details.aggregate(d);\n }\n return details;\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const blockIter = this._mapPosToBlock(this.displayValue.length);\n const details = new ChangeDetails();\n if (!blockIter) return details;\n for (let bi = blockIter.index, block; block = this._blocks[bi]; ++bi) {\n var _flags$_beforeTailSta;\n const blockDetails = block._appendChar(ch, {\n ...flags,\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) == null || (_flags$_beforeTailSta = _flags$_beforeTailSta._blocks) == null ? void 0 : _flags$_beforeTailSta[bi]\n });\n details.aggregate(blockDetails);\n if (blockDetails.consumed) break; // go next char\n }\n return details;\n }\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n this._forEachBlocksInRange(fromPos, toPos, (b, bi, bFromPos, bToPos) => {\n const blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = this._findStopBefore(bi);\n blockChunk.from = this._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n chunkTail.extend(blockChunk);\n });\n return chunkTail;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n if (fromPos === toPos) return '';\n let input = '';\n this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => {\n input += b.extractInput(fromPos, toPos, flags);\n });\n return input;\n }\n _findStopBefore(blockIndex) {\n let stopBefore;\n for (let si = 0; si < this._stops.length; ++si) {\n const stop = this._stops[si];\n if (stop <= blockIndex) stopBefore = stop;else break;\n }\n return stopBefore;\n }\n\n /** Appends placeholder depending on laziness */\n _appendPlaceholder(toBlockIndex) {\n const details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n const startBlockIter = this._mapPosToBlock(this.displayValue.length);\n if (!startBlockIter) return details;\n const startBlockIndex = startBlockIter.index;\n const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(b => {\n if (!b.lazy || toBlockIndex != null) {\n var _blocks2;\n details.aggregate(b._appendPlaceholder((_blocks2 = b._blocks) == null ? void 0 : _blocks2.length));\n }\n });\n return details;\n }\n\n /** Finds block in pos */\n _mapPosToBlock(pos) {\n let accVal = '';\n for (let bi = 0; bi < this._blocks.length; ++bi) {\n const block = this._blocks[bi];\n const blockStartPos = accVal.length;\n accVal += block.displayValue;\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos\n };\n }\n }\n }\n _blockStartPos(blockIndex) {\n return this._blocks.slice(0, blockIndex).reduce((pos, b) => pos += b.displayValue.length, 0);\n }\n _forEachBlocksInRange(fromPos, toPos, fn) {\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const fromBlockIter = this._mapPosToBlock(fromPos);\n if (fromBlockIter) {\n const toBlockIter = this._mapPosToBlock(toPos);\n // process first block\n const isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n const fromBlockStartPos = fromBlockIter.offset;\n const fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].displayValue.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (let bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].displayValue.length);\n }\n\n // process last block\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const removeDetails = super.remove(fromPos, toPos);\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n return removeDetails;\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n if (!this._blocks.length) return 0;\n const cursor = new PatternCursor(this, cursorPos);\n if (direction === DIRECTION.NONE) {\n // -------------------------------------------------\n // NONE should only go out from fixed to the right!\n // -------------------------------------------------\n if (cursor.pushRightBeforeInput()) return cursor.pos;\n cursor.popState();\n if (cursor.pushLeftBeforeInput()) return cursor.pos;\n return this.displayValue.length;\n }\n\n // FORCE is only about a|* otherwise is 0\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // try to break fast when *|a\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeFilled();\n if (cursor.ok && cursor.pos === cursorPos) return cursorPos;\n cursor.popState();\n }\n\n // forward flow\n cursor.pushLeftBeforeInput();\n cursor.pushLeftBeforeRequired();\n cursor.pushLeftBeforeFilled();\n\n // backward flow\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n }\n if (cursor.ok) return cursor.pos;\n if (direction === DIRECTION.FORCE_LEFT) return 0;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return 0;\n }\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // forward flow\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.pushRightBeforeFilled()) return cursor.pos;\n if (direction === DIRECTION.FORCE_RIGHT) return this.displayValue.length;\n\n // backward flow\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\n }\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n let total = 0;\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n total += b.totalInputPositions(bFromPos, bToPos);\n });\n return total;\n }\n\n /** Get block by name */\n maskedBlock(name) {\n return this.maskedBlocks(name)[0];\n }\n\n /** Get all blocks by name */\n maskedBlocks(name) {\n const indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(gi => this._blocks[gi]);\n }\n pad(flags) {\n const details = new ChangeDetails();\n this._forEachBlocksInRange(0, this.displayValue.length, b => details.aggregate(b.pad(flags)));\n return details;\n }\n}\nMaskedPattern.DEFAULTS = {\n ...Masked.DEFAULTS,\n lazy: true,\n placeholderChar: '_'\n};\nMaskedPattern.STOP_CHAR = '`';\nMaskedPattern.ESCAPE_CHAR = '\\\\';\nMaskedPattern.InputDefinition = PatternInputDefinition;\nMaskedPattern.FixedDefinition = PatternFixedDefinition;\nIMask.MaskedPattern = MaskedPattern;\n\nexport { MaskedPattern as default };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport MaskedPattern from './pattern.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which accepts ranges */\nclass MaskedRange extends MaskedPattern {\n /**\n Optionally sets max length of pattern.\n Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\n */\n\n /** Min bound */\n\n /** Max bound */\n\n get _matchFrom() {\n return this.maxLength - String(this.from).length;\n }\n constructor(opts) {\n super(opts); // mask will be created in _update\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n to = this.to || 0,\n from = this.from || 0,\n maxLength = this.maxLength || 0,\n autofix = this.autofix,\n ...patternOpts\n } = opts;\n this.to = to;\n this.from = from;\n this.maxLength = Math.max(String(to).length, maxLength);\n this.autofix = autofix;\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n let sameCharsCount = 0;\n while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) ++sameCharsCount;\n patternOpts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(this.maxLength - sameCharsCount);\n super._update(patternOpts);\n }\n get isComplete() {\n return super.isComplete && Boolean(this.value);\n }\n boundaries(str) {\n let minstr = '';\n let maxstr = '';\n const [, placeholder, num] = str.match(/^(\\D*)(\\d*)(\\D*)/) || [];\n if (num) {\n minstr = '0'.repeat(placeholder.length) + num;\n maxstr = '9'.repeat(placeholder.length) + num;\n }\n minstr = minstr.padEnd(this.maxLength, '0');\n maxstr = maxstr.padEnd(this.maxLength, '9');\n return [minstr, maxstr];\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let details;\n [ch, details] = super.doPrepareChar(ch.replace(/\\D/g, ''), flags);\n if (!ch) details.skip = !this.isComplete;\n return [ch, details];\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (!this.autofix || this.value.length + 1 > this.maxLength) return super._appendCharRaw(ch, flags);\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n const [minstr, maxstr] = this.boundaries(this.value + ch);\n if (Number(maxstr) < this.from) return super._appendCharRaw(fromStr[this.value.length], flags);\n if (Number(minstr) > this.to) {\n if (!flags.tail && this.autofix === 'pad' && this.value.length + 1 < this.maxLength) {\n return super._appendCharRaw(fromStr[this.value.length], flags).aggregate(this._appendCharRaw(ch, flags));\n }\n return super._appendCharRaw(toStr[this.value.length], flags);\n }\n return super._appendCharRaw(ch, flags);\n }\n doValidate(flags) {\n const str = this.value;\n const firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n const [minstr, maxstr] = this.boundaries(str);\n return this.from <= Number(maxstr) && Number(minstr) <= this.to && super.doValidate(flags);\n }\n pad(flags) {\n const details = new ChangeDetails();\n if (this.value.length === this.maxLength) return details;\n const value = this.value;\n const padLength = this.maxLength - this.value.length;\n if (padLength) {\n this.reset();\n for (let i = 0; i < padLength; ++i) {\n details.aggregate(super._appendCharRaw('0', flags));\n }\n\n // append tail\n value.split('').forEach(ch => this._appendCharRaw(ch));\n }\n return details;\n }\n}\nIMask.MaskedRange = MaskedRange;\n\nexport { MaskedRange as default };\n","import MaskedPattern from './pattern.js';\nimport MaskedRange from './range.js';\nimport IMask from '../core/holder.js';\nimport { isString } from '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\nconst DefaultPattern = 'd{.}`m{.}`Y';\n\n// Make format and parse required when pattern is provided\n\n/** Date mask */\nclass MaskedDate extends MaskedPattern {\n static extractPatternOptions(opts) {\n const {\n mask,\n pattern,\n ...patternOpts\n } = opts;\n return {\n ...patternOpts,\n mask: isString(mask) ? mask : pattern\n };\n }\n\n /** Pattern mask for date according to {@link MaskedDate#format} */\n\n /** Start date */\n\n /** End date */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n super(MaskedDate.extractPatternOptions({\n ...MaskedDate.DEFAULTS,\n ...opts\n }));\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n mask,\n pattern,\n blocks,\n ...patternOpts\n } = {\n ...MaskedDate.DEFAULTS,\n ...opts\n };\n const patternBlocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS());\n // adjust year block\n if (opts.min) patternBlocks.Y.from = opts.min.getFullYear();\n if (opts.max) patternBlocks.Y.to = opts.max.getFullYear();\n if (opts.min && opts.max && patternBlocks.Y.from === patternBlocks.Y.to) {\n patternBlocks.m.from = opts.min.getMonth() + 1;\n patternBlocks.m.to = opts.max.getMonth() + 1;\n if (patternBlocks.m.from === patternBlocks.m.to) {\n patternBlocks.d.from = opts.min.getDate();\n patternBlocks.d.to = opts.max.getDate();\n }\n }\n Object.assign(patternBlocks, this.blocks, blocks);\n super._update({\n ...patternOpts,\n mask: isString(mask) ? mask : pattern,\n blocks: patternBlocks\n });\n }\n doValidate(flags) {\n const date = this.date;\n return super.doValidate(flags) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\n }\n\n /** Checks if date is exists */\n isDateExist(str) {\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n }\n\n /** Parsed Date */\n get date() {\n return this.typedValue;\n }\n set date(date) {\n this.typedValue = date;\n }\n get typedValue() {\n return this.isComplete ? super.typedValue : null;\n }\n set typedValue(value) {\n super.typedValue = value;\n }\n maskEquals(mask) {\n return mask === Date || super.maskEquals(mask);\n }\n optionsIsChanged(opts) {\n return super.optionsIsChanged(MaskedDate.extractPatternOptions(opts));\n }\n}\nMaskedDate.GET_DEFAULT_BLOCKS = () => ({\n d: {\n mask: MaskedRange,\n from: 1,\n to: 31,\n maxLength: 2\n },\n m: {\n mask: MaskedRange,\n from: 1,\n to: 12,\n maxLength: 2\n },\n Y: {\n mask: MaskedRange,\n from: 1900,\n to: 9999\n }\n});\nMaskedDate.DEFAULTS = {\n ...MaskedPattern.DEFAULTS,\n mask: Date,\n pattern: DefaultPattern,\n format: (date, masked) => {\n if (!date) return '';\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = date.getFullYear();\n return [day, month, year].join('.');\n },\n parse: (str, masked) => {\n const [day, month, year] = str.split('.').map(Number);\n return new Date(year, month - 1, day);\n }\n};\nIMask.MaskedDate = MaskedDate;\n\nexport { MaskedDate as default };\n","import { DIRECTION, objectIncludes } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/** Dynamic mask for choosing appropriate mask in run-time */\nclass MaskedDynamic extends Masked {\n constructor(opts) {\n super({\n ...MaskedDynamic.DEFAULTS,\n ...opts\n });\n this.currentMask = undefined;\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n if ('mask' in opts) {\n this.exposeMask = undefined;\n // mask could be totally dynamic with only `dispatch` option\n this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(m => {\n const {\n expose,\n ...maskOpts\n } = normalizeOpts(m);\n const masked = createMask({\n overwrite: this._overwrite,\n eager: this._eager,\n skipInvalid: this._skipInvalid,\n ...maskOpts\n });\n if (expose) this.exposeMask = masked;\n return masked;\n }) : [];\n\n // this.currentMask = this.doDispatch(''); // probably not needed but lets see\n }\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = this._applyDispatch(ch, flags);\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendChar(ch, this.currentMaskFlags(flags)));\n }\n return details;\n }\n _applyDispatch(appended, flags, tail) {\n if (appended === void 0) {\n appended = '';\n }\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n const prevValueBeforeTail = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._value : this.value;\n const inputValue = this.rawInputValue;\n const insertValue = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._rawInputValue : inputValue;\n const tailValue = inputValue.slice(insertValue.length);\n const prevMask = this.currentMask;\n const details = new ChangeDetails();\n const prevMaskState = prevMask == null ? void 0 : prevMask.state;\n\n // clone flags to prevent overwriting `_beforeTailState`\n this.currentMask = this.doDispatch(appended, {\n ...flags\n }, tail);\n\n // restore state after dispatch\n if (this.currentMask) {\n if (this.currentMask !== prevMask) {\n // if mask changed reapply input\n this.currentMask.reset();\n if (insertValue) {\n this.currentMask.append(insertValue, {\n raw: true\n });\n details.tailShift = this.currentMask.value.length - prevValueBeforeTail.length;\n }\n if (tailValue) {\n details.tailShift += this.currentMask.append(tailValue, {\n raw: true,\n tail: true\n }).tailShift;\n }\n } else if (prevMaskState) {\n // Dispatch can do something bad with state, so\n // restore prev mask state\n this.currentMask.state = prevMaskState;\n }\n }\n return details;\n }\n _appendPlaceholder() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendPlaceholder());\n }\n return details;\n }\n _appendEager() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendEager());\n }\n return details;\n }\n appendTail(tail) {\n const details = new ChangeDetails();\n if (tail) details.aggregate(this._applyDispatch('', {}, tail));\n return details.aggregate(this.currentMask ? this.currentMask.appendTail(tail) : super.appendTail(tail));\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta, _flags$_beforeTailSta2;\n return {\n ...flags,\n _beforeTailState: ((_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.currentMaskRef) === this.currentMask && ((_flags$_beforeTailSta2 = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta2.currentMask) || flags._beforeTailState\n };\n }\n doDispatch(appended, flags, tail) {\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n return this.dispatch(appended, this, flags, tail);\n }\n doValidate(flags) {\n return super.doValidate(flags) && (!this.currentMask || this.currentMask.doValidate(this.currentMaskFlags(flags)));\n }\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepare(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepare(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepareChar(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepareChar(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n reset() {\n var _this$currentMask;\n (_this$currentMask = this.currentMask) == null || _this$currentMask.reset();\n this.compiledMasks.forEach(m => m.reset());\n }\n get value() {\n return this.exposeMask ? this.exposeMask.value : this.currentMask ? this.currentMask.value : '';\n }\n set value(value) {\n if (this.exposeMask) {\n this.exposeMask.value = value;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.value = value;\n }\n get unmaskedValue() {\n return this.exposeMask ? this.exposeMask.unmaskedValue : this.currentMask ? this.currentMask.unmaskedValue : '';\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeMask) {\n this.exposeMask.unmaskedValue = unmaskedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.exposeMask ? this.exposeMask.typedValue : this.currentMask ? this.currentMask.typedValue : '';\n }\n set typedValue(typedValue) {\n if (this.exposeMask) {\n this.exposeMask.typedValue = typedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n return;\n }\n let unmaskedValue = String(typedValue);\n\n // double check it\n if (this.currentMask) {\n this.currentMask.typedValue = typedValue;\n unmaskedValue = this.currentMask.unmaskedValue;\n }\n this.unmaskedValue = unmaskedValue;\n }\n get displayValue() {\n return this.currentMask ? this.currentMask.displayValue : '';\n }\n get isComplete() {\n var _this$currentMask2;\n return Boolean((_this$currentMask2 = this.currentMask) == null ? void 0 : _this$currentMask2.isComplete);\n }\n get isFilled() {\n var _this$currentMask3;\n return Boolean((_this$currentMask3 = this.currentMask) == null ? void 0 : _this$currentMask3.isFilled);\n }\n remove(fromPos, toPos) {\n const details = new ChangeDetails();\n if (this.currentMask) {\n details.aggregate(this.currentMask.remove(fromPos, toPos))\n // update with dispatch\n .aggregate(this._applyDispatch());\n }\n return details;\n }\n get state() {\n var _this$currentMask4;\n return {\n ...super.state,\n _rawInputValue: this.rawInputValue,\n compiledMasks: this.compiledMasks.map(m => m.state),\n currentMaskRef: this.currentMask,\n currentMask: (_this$currentMask4 = this.currentMask) == null ? void 0 : _this$currentMask4.state\n };\n }\n set state(state) {\n const {\n compiledMasks,\n currentMaskRef,\n currentMask,\n ...maskedState\n } = state;\n if (compiledMasks) this.compiledMasks.forEach((m, mi) => m.state = compiledMasks[mi]);\n if (currentMaskRef != null) {\n this.currentMask = currentMaskRef;\n this.currentMask.state = currentMask;\n }\n super.state = maskedState;\n }\n extractInput(fromPos, toPos, flags) {\n return this.currentMask ? this.currentMask.extractInput(fromPos, toPos, flags) : '';\n }\n extractTail(fromPos, toPos) {\n return this.currentMask ? this.currentMask.extractTail(fromPos, toPos) : super.extractTail(fromPos, toPos);\n }\n doCommit() {\n if (this.currentMask) this.currentMask.doCommit();\n super.doCommit();\n }\n nearestInputPos(cursorPos, direction) {\n return this.currentMask ? this.currentMask.nearestInputPos(cursorPos, direction) : super.nearestInputPos(cursorPos, direction);\n }\n get overwrite() {\n return this.currentMask ? this.currentMask.overwrite : this._overwrite;\n }\n set overwrite(overwrite) {\n this._overwrite = overwrite;\n }\n get eager() {\n return this.currentMask ? this.currentMask.eager : this._eager;\n }\n set eager(eager) {\n this._eager = eager;\n }\n get skipInvalid() {\n return this.currentMask ? this.currentMask.skipInvalid : this._skipInvalid;\n }\n set skipInvalid(skipInvalid) {\n this._skipInvalid = skipInvalid;\n }\n get autofix() {\n return this.currentMask ? this.currentMask.autofix : this._autofix;\n }\n set autofix(autofix) {\n this._autofix = autofix;\n }\n maskEquals(mask) {\n return Array.isArray(mask) ? this.compiledMasks.every((m, mi) => {\n if (!mask[mi]) return;\n const {\n mask: oldMask,\n ...restOpts\n } = mask[mi];\n return objectIncludes(m, restOpts) && m.maskEquals(oldMask);\n }) : super.maskEquals(mask);\n }\n typedValueEquals(value) {\n var _this$currentMask5;\n return Boolean((_this$currentMask5 = this.currentMask) == null ? void 0 : _this$currentMask5.typedValueEquals(value));\n }\n}\n/** Currently chosen mask */\n/** Currently chosen mask */\n/** Compliled {@link Masked} options */\n/** Chooses {@link Masked} depending on input value */\nMaskedDynamic.DEFAULTS = {\n ...Masked.DEFAULTS,\n dispatch: (appended, masked, flags, tail) => {\n if (!masked.compiledMasks.length) return;\n const inputValue = masked.rawInputValue;\n\n // simulate input\n const inputs = masked.compiledMasks.map((m, index) => {\n const isCurrent = masked.currentMask === m;\n const startInputPos = isCurrent ? m.displayValue.length : m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT);\n if (m.rawInputValue !== inputValue) {\n m.reset();\n m.append(inputValue, {\n raw: true\n });\n } else if (!isCurrent) {\n m.remove(startInputPos);\n }\n m.append(appended, masked.currentMaskFlags(flags));\n m.appendTail(tail);\n return {\n index,\n weight: m.rawInputValue.length,\n totalInputPositions: m.totalInputPositions(0, Math.max(startInputPos, m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT)))\n };\n });\n\n // pop masks with longer values first\n inputs.sort((i1, i2) => i2.weight - i1.weight || i2.totalInputPositions - i1.totalInputPositions);\n return masked.compiledMasks[inputs[0].index];\n }\n};\nIMask.MaskedDynamic = MaskedDynamic;\n\nexport { MaskedDynamic as default };\n","import MaskedPattern from './pattern.js';\nimport IMask from '../core/holder.js';\nimport ChangeDetails from '../core/change-details.js';\nimport { DIRECTION } from '../core/utils.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport './base.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which validates enum values */\nclass MaskedEnum extends MaskedPattern {\n constructor(opts) {\n super({\n ...MaskedEnum.DEFAULTS,\n ...opts\n }); // mask will be created in _update\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n enum: enum_,\n ...eopts\n } = opts;\n if (enum_) {\n const lengths = enum_.map(e => e.length);\n const requiredLength = Math.min(...lengths);\n const optionalLength = Math.max(...lengths) - requiredLength;\n eopts.mask = '*'.repeat(requiredLength);\n if (optionalLength) eopts.mask += '[' + '*'.repeat(optionalLength) + ']';\n this.enum = enum_;\n }\n super._update(eopts);\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const matchFrom = Math.min(this.nearestInputPos(0, DIRECTION.FORCE_RIGHT), this.value.length);\n const matches = this.enum.filter(e => this.matchValue(e, this.unmaskedValue + ch, matchFrom));\n if (matches.length) {\n if (matches.length === 1) {\n this._forEachBlocksInRange(0, this.value.length, (b, bi) => {\n const mch = matches[0][bi];\n if (bi >= this.value.length || mch === b.value) return;\n b.reset();\n b._appendChar(mch, flags);\n });\n }\n const d = super._appendCharRaw(matches[0][this.value.length], flags);\n if (matches.length === 1) {\n matches[0].slice(this.unmaskedValue.length).split('').forEach(mch => d.aggregate(super._appendCharRaw(mch)));\n }\n return d;\n }\n return new ChangeDetails({\n skip: !this.isComplete\n });\n }\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n // just drop tail\n return new ContinuousTailDetails('', fromPos);\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n if (fromPos === toPos) return new ChangeDetails();\n const matchFrom = Math.min(super.nearestInputPos(0, DIRECTION.FORCE_RIGHT), this.value.length);\n let pos;\n for (pos = fromPos; pos >= 0; --pos) {\n const matches = this.enum.filter(e => this.matchValue(e, this.value.slice(matchFrom, pos), matchFrom));\n if (matches.length > 1) break;\n }\n const details = super.remove(pos, toPos);\n details.tailShift += pos - fromPos;\n return details;\n }\n get isComplete() {\n return this.enum.indexOf(this.value) >= 0;\n }\n}\n/** Match enum value */\nMaskedEnum.DEFAULTS = {\n ...MaskedPattern.DEFAULTS,\n matchValue: (estr, istr, matchFrom) => estr.indexOf(istr, matchFrom) === matchFrom\n};\nIMask.MaskedEnum = MaskedEnum;\n\nexport { MaskedEnum as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by custom Function */\nclass MaskedFunction extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update({\n ...opts,\n validate: opts.mask\n });\n }\n}\nIMask.MaskedFunction = MaskedFunction;\n\nexport { MaskedFunction as default };\n","import { escapeRegExp, DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\nvar _MaskedNumber;\n/** Number mask */\nclass MaskedNumber extends Masked {\n /** Single char */\n\n /** Single char */\n\n /** Array of single chars */\n\n /** */\n\n /** */\n\n /** Digits after point */\n\n /** Flag to remove leading and trailing zeros in the end of editing */\n\n /** Flag to pad trailing zeros after point in the end of editing */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n super({\n ...MaskedNumber.DEFAULTS,\n ...opts\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n this._updateRegExps();\n }\n _updateRegExps() {\n const start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n const mid = '\\\\d*';\n const end = (this.scale ? \"(\" + escapeRegExp(this.radix) + \"\\\\d{0,\" + this.scale + \"})?\" : '') + '$';\n this._numberRegExp = new RegExp(start + mid + end);\n this._mapToRadixRegExp = new RegExp(\"[\" + this.mapToRadix.map(escapeRegExp).join('') + \"]\", 'g');\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n }\n _removeThousandsSeparators(value) {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n _insertThousandsSeparators(value) {\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n const parts = value.split(this.radix);\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n return parts.join(this.radix);\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const [prepCh, details] = super.doPrepareChar(this._removeThousandsSeparators(this.scale && this.mapToRadix.length && (\n /*\n radix should be mapped when\n 1) input is done from keyboard = flags.input && flags.raw\n 2) unmasked value is set = !flags.input && !flags.raw\n and should not be mapped when\n 1) value is set = flags.input && !flags.raw\n 2) raw value is set = !flags.input && flags.raw\n */\n flags.input && flags.raw || !flags.input && !flags.raw) ? ch.replace(this._mapToRadixRegExp, this.radix) : ch), flags);\n if (ch && !prepCh) details.skip = true;\n if (prepCh && !this.allowPositive && !this.value && prepCh !== '-') details.aggregate(this._appendChar('-'));\n return [prepCh, details];\n }\n _separatorsCount(to, extendOnSeparators) {\n if (extendOnSeparators === void 0) {\n extendOnSeparators = false;\n }\n let count = 0;\n for (let pos = 0; pos < to; ++pos) {\n if (this._value.indexOf(this.thousandsSeparator, pos) === pos) {\n ++count;\n if (extendOnSeparators) to += this.thousandsSeparator.length;\n }\n }\n return count;\n }\n _separatorsCountFromSlice(slice) {\n if (slice === void 0) {\n slice = this._value;\n }\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n return this._removeThousandsSeparators(super.extractInput(fromPos, toPos, flags));\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n this._value = this._removeThousandsSeparators(this.value);\n const oldValue = this._value;\n this._value += ch;\n const num = this.number;\n let accepted = !isNaN(num);\n let skip = false;\n if (accepted) {\n let fixedNum;\n if (this.min != null && this.min < 0 && this.number < this.min) fixedNum = this.min;\n if (this.max != null && this.max > 0 && this.number > this.max) fixedNum = this.max;\n if (fixedNum != null) {\n if (this.autofix) {\n this._value = this.format(fixedNum, this).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n skip || (skip = oldValue === this._value && !flags.tail); // if not changed on tail it's still ok to proceed\n } else {\n accepted = false;\n }\n }\n accepted && (accepted = Boolean(this._value.match(this._numberRegExp)));\n }\n let appendDetails;\n if (!accepted) {\n this._value = oldValue;\n appendDetails = new ChangeDetails();\n } else {\n appendDetails = new ChangeDetails({\n inserted: this._value.slice(oldValue.length),\n rawInserted: skip ? '' : ch,\n skip\n });\n }\n this._value = this._insertThousandsSeparators(this._value);\n const beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\n appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\n return appendDetails;\n }\n _findSeparatorAround(pos) {\n if (this.thousandsSeparator) {\n const searchFrom = pos - this.thousandsSeparator.length + 1;\n const separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\n if (separatorPos <= pos) return separatorPos;\n }\n return -1;\n }\n _adjustRangeWithSeparators(from, to) {\n const separatorAroundFromPos = this._findSeparatorAround(from);\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n const separatorAroundToPos = this._findSeparatorAround(to);\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n return [from, to];\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n const valueBeforePos = this.value.slice(0, fromPos);\n const valueAfterPos = this.value.slice(toPos);\n const prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n return new ChangeDetails({\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length\n });\n }\n nearestInputPos(cursorPos, direction) {\n if (!this.thousandsSeparator) return cursorPos;\n switch (direction) {\n case DIRECTION.NONE:\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n {\n const separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n if (separatorAtLeftPos >= 0) {\n const separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) {\n return separatorAtLeftPos;\n }\n }\n break;\n }\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n {\n const separatorAtRightPos = this._findSeparatorAround(cursorPos);\n if (separatorAtRightPos >= 0) {\n return separatorAtRightPos + this.thousandsSeparator.length;\n }\n }\n }\n return cursorPos;\n }\n doCommit() {\n if (this.value) {\n const number = this.number;\n let validnum = number;\n\n // check bounds\n if (this.min != null) validnum = Math.max(validnum, this.min);\n if (this.max != null) validnum = Math.min(validnum, this.max);\n if (validnum !== number) this.unmaskedValue = this.format(validnum, this);\n let formatted = this.value;\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros && this.scale > 0) formatted = this._padFractionalZeros(formatted);\n this._value = formatted;\n }\n super.doCommit();\n }\n _normalizeZeros(value) {\n const parts = this._removeThousandsSeparators(value).split(this.radix);\n\n // remove leading zeros\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, (match, sign, zeros, num) => sign + num);\n // add leading zero\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\n if (parts.length > 1) {\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\n if (!parts[1].length) parts.length = 1; // remove fractional\n }\n return this._insertThousandsSeparators(parts.join(this.radix));\n }\n _padFractionalZeros(value) {\n if (!value) return value;\n const parts = value.split(this.radix);\n if (parts.length < 2) parts.push('');\n parts[1] = parts[1].padEnd(this.scale, '0');\n return parts.join(this.radix);\n }\n doSkipInvalid(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const dropFractional = this.scale === 0 && ch !== this.thousandsSeparator && (ch === this.radix || ch === MaskedNumber.UNMASKED_RADIX || this.mapToRadix.includes(ch));\n return super.doSkipInvalid(ch, flags, checkTail) && !dropFractional;\n }\n get unmaskedValue() {\n return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, MaskedNumber.UNMASKED_RADIX);\n }\n set unmaskedValue(unmaskedValue) {\n super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.parse(this.unmaskedValue, this);\n }\n set typedValue(n) {\n this.rawInputValue = this.format(n, this).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n }\n\n /** Parsed Number */\n get number() {\n return this.typedValue;\n }\n set number(number) {\n this.typedValue = number;\n }\n get allowNegative() {\n return this.min != null && this.min < 0 || this.max != null && this.max < 0;\n }\n get allowPositive() {\n return this.min != null && this.min > 0 || this.max != null && this.max > 0;\n }\n typedValueEquals(value) {\n // handle 0 -> '' case (typed = 0 even if value = '')\n // for details see https://github.com/uNmAnNeR/imaskjs/issues/134\n return (super.typedValueEquals(value) || MaskedNumber.EMPTY_VALUES.includes(value) && MaskedNumber.EMPTY_VALUES.includes(this.typedValue)) && !(value === 0 && this.value === '');\n }\n}\n_MaskedNumber = MaskedNumber;\nMaskedNumber.UNMASKED_RADIX = '.';\nMaskedNumber.EMPTY_VALUES = [...Masked.EMPTY_VALUES, 0];\nMaskedNumber.DEFAULTS = {\n ...Masked.DEFAULTS,\n mask: Number,\n radix: ',',\n thousandsSeparator: '',\n mapToRadix: [_MaskedNumber.UNMASKED_RADIX],\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n scale: 2,\n normalizeZeros: true,\n padFractionalZeros: false,\n parse: Number,\n format: n => n.toLocaleString('en-US', {\n useGrouping: false,\n maximumFractionDigits: 20\n })\n};\nIMask.MaskedNumber = MaskedNumber;\n\nexport { MaskedNumber as default };\n","import createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\n\n/** Mask pipe source and destination types */\nconst PIPE_TYPE = {\n MASKED: 'value',\n UNMASKED: 'unmaskedValue',\n TYPED: 'typedValue'\n};\n/** Creates new pipe function depending on mask type, source and destination options */\nfunction createPipe(arg, from, to) {\n if (from === void 0) {\n from = PIPE_TYPE.MASKED;\n }\n if (to === void 0) {\n to = PIPE_TYPE.MASKED;\n }\n const masked = createMask(arg);\n return value => masked.runIsolated(m => {\n m[from] = value;\n return m[to];\n });\n}\n\n/** Pipes value through mask depending on mask type, source and destination options */\nfunction pipe(value, mask, from, to) {\n return createPipe(mask, from, to)(value);\n}\nIMask.PIPE_TYPE = PIPE_TYPE;\nIMask.createPipe = createPipe;\nIMask.pipe = pipe;\n\nexport { PIPE_TYPE, createPipe, pipe };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport MaskedPattern from './pattern.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern mask */\nclass RepeatBlock extends MaskedPattern {\n get repeatFrom() {\n var _ref;\n return (_ref = Array.isArray(this.repeat) ? this.repeat[0] : this.repeat === Infinity ? 0 : this.repeat) != null ? _ref : 0;\n }\n get repeatTo() {\n var _ref2;\n return (_ref2 = Array.isArray(this.repeat) ? this.repeat[1] : this.repeat) != null ? _ref2 : Infinity;\n }\n constructor(opts) {\n super(opts);\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n var _ref3, _ref4, _this$_blocks;\n const {\n repeat,\n ...blockOpts\n } = normalizeOpts(opts); // TODO type\n this._blockOpts = Object.assign({}, this._blockOpts, blockOpts);\n const block = createMask(this._blockOpts);\n this.repeat = (_ref3 = (_ref4 = repeat != null ? repeat : block.repeat) != null ? _ref4 : this.repeat) != null ? _ref3 : Infinity; // TODO type\n\n super._update({\n mask: 'm'.repeat(Math.max(this.repeatTo === Infinity && ((_this$_blocks = this._blocks) == null ? void 0 : _this$_blocks.length) || 0, this.repeatFrom)),\n blocks: {\n m: block\n },\n eager: block.eager,\n overwrite: block.overwrite,\n skipInvalid: block.skipInvalid,\n lazy: block.lazy,\n placeholderChar: block.placeholderChar,\n displayChar: block.displayChar\n });\n }\n _allocateBlock(bi) {\n if (bi < this._blocks.length) return this._blocks[bi];\n if (this.repeatTo === Infinity || this._blocks.length < this.repeatTo) {\n this._blocks.push(createMask(this._blockOpts));\n this.mask += 'm';\n return this._blocks[this._blocks.length - 1];\n }\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = new ChangeDetails();\n for (let bi = (_this$_mapPosToBlock$ = (_this$_mapPosToBlock = this._mapPosToBlock(this.displayValue.length)) == null ? void 0 : _this$_mapPosToBlock.index) != null ? _this$_mapPosToBlock$ : Math.max(this._blocks.length - 1, 0), block, allocated;\n // try to get a block or\n // try to allocate a new block if not allocated already\n block = (_this$_blocks$bi = this._blocks[bi]) != null ? _this$_blocks$bi : allocated = !allocated && this._allocateBlock(bi); ++bi) {\n var _this$_mapPosToBlock$, _this$_mapPosToBlock, _this$_blocks$bi, _flags$_beforeTailSta;\n const blockDetails = block._appendChar(ch, {\n ...flags,\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) == null || (_flags$_beforeTailSta = _flags$_beforeTailSta._blocks) == null ? void 0 : _flags$_beforeTailSta[bi]\n });\n if (blockDetails.skip && allocated) {\n // remove the last allocated block and break\n this._blocks.pop();\n this.mask = this.mask.slice(1);\n break;\n }\n details.aggregate(blockDetails);\n if (blockDetails.consumed) break; // go next char\n }\n return details;\n }\n _trimEmptyTail(fromPos, toPos) {\n var _this$_mapPosToBlock2, _this$_mapPosToBlock3;\n if (fromPos === void 0) {\n fromPos = 0;\n }\n const firstBlockIndex = Math.max(((_this$_mapPosToBlock2 = this._mapPosToBlock(fromPos)) == null ? void 0 : _this$_mapPosToBlock2.index) || 0, this.repeatFrom, 0);\n let lastBlockIndex;\n if (toPos != null) lastBlockIndex = (_this$_mapPosToBlock3 = this._mapPosToBlock(toPos)) == null ? void 0 : _this$_mapPosToBlock3.index;\n if (lastBlockIndex == null) lastBlockIndex = this._blocks.length - 1;\n let removeCount = 0;\n for (let blockIndex = lastBlockIndex; firstBlockIndex <= blockIndex; --blockIndex, ++removeCount) {\n if (this._blocks[blockIndex].unmaskedValue) break;\n }\n if (removeCount) {\n this._blocks.splice(lastBlockIndex - removeCount + 1, removeCount);\n this.mask = this.mask.slice(removeCount);\n }\n }\n reset() {\n super.reset();\n this._trimEmptyTail();\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const removeDetails = super.remove(fromPos, toPos);\n this._trimEmptyTail(fromPos, toPos);\n return removeDetails;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos == null && this.repeatTo === Infinity) return Infinity;\n return super.totalInputPositions(fromPos, toPos);\n }\n get state() {\n return super.state;\n }\n set state(state) {\n this._blocks.length = state._blocks.length;\n this.mask = this.mask.slice(0, this._blocks.length);\n super.state = state;\n }\n}\nIMask.RepeatBlock = RepeatBlock;\n\nexport { RepeatBlock as default };\n","export { default as InputMask } from './controls/input.js';\nimport IMask from './core/holder.js';\nexport { default as HTMLContenteditableMaskElement } from './controls/html-contenteditable-mask-element.js';\nexport { default as HTMLInputMaskElement } from './controls/html-input-mask-element.js';\nexport { default as HTMLMaskElement } from './controls/html-mask-element.js';\nexport { default as MaskElement } from './controls/mask-element.js';\nexport { default as ChangeDetails } from './core/change-details.js';\nexport { DIRECTION, forceDirection } from './core/utils.js';\nexport { default as Masked } from './masked/base.js';\nexport { default as MaskedDate } from './masked/date.js';\nexport { default as MaskedDynamic } from './masked/dynamic.js';\nexport { default as MaskedEnum } from './masked/enum.js';\nexport { default as createMask, normalizeOpts } from './masked/factory.js';\nexport { default as MaskedFunction } from './masked/function.js';\nexport { default as MaskedNumber } from './masked/number.js';\nexport { default as MaskedPattern } from './masked/pattern.js';\nexport { default as ChunksTailDetails } from './masked/pattern/chunk-tail-details.js';\nexport { default as PatternFixedDefinition } from './masked/pattern/fixed-definition.js';\nexport { default as PatternInputDefinition } from './masked/pattern/input-definition.js';\nexport { PIPE_TYPE, createPipe, pipe } from './masked/pipe.js';\nexport { default as MaskedRange } from './masked/range.js';\nexport { default as MaskedRegExp } from './masked/regexp.js';\nexport { default as RepeatBlock } from './masked/repeat.js';\nimport './core/action-details.js';\nimport './controls/input-history.js';\nimport './core/continuous-tail-details.js';\nimport './masked/pattern/cursor.js';\n\ntry {\n globalThis.IMask = IMask;\n} catch {}\n\nexport { IMask as default };\n","<template>\n <div :class=\"['flex flex-col gap-2', className]\">\n <p v-if=\"label\" class=\"mb-0 text-body-2xs font-normal text-heading-text\">\n {{ label }} <span v-if=\"required\" class=\"text-orange-required\"> *</span>\n </p>\n\n <div\n :class=\"[\n 'border-c px-3 py-2 flex items-center justify-between rounded-md h-12',\n containerBg,\n containerBorder,\n ]\"\n >\n <slot name=\"prefix\" />\n\n <input\n ref=\"inputEl\"\n :type=\"type\"\n :value=\"formattedValue\"\n :disabled=\"disabled\"\n :mask=\"mask\"\n :placeholder=\"\n placeholder ?? (label ? `Enter ${label.toLowerCase()}` : undefined)\n \"\n :inputmode=\"isAmountInput ? 'decimal' : undefined\"\n class=\"search-input bg-transparent outline-none border-none focus:outline-none focus:ring-0 text-body-2xs text-light-copy font-normal w-full\"\n @input=\"handleInput\"\n @blur=\"handleBlur\"\n @keydown=\"handleKeyDown\"\n />\n\n <template v-if=\"!loading\">\n <slot name=\"suffix\" />\n\n <BaseImage\n v-if=\"showCopyIcon && rawValue.trim() !== ''\"\n src=\"assets/images/copyIcon.svg\"\n alt=\"copy\"\n :width=\"16\"\n :height=\"16\"\n customClass=\"cursor-pointer hover:opacity-70 transition-opacity\"\n @click=\"copyHandler\"\n />\n </template>\n <div\n v-else\n class=\"animate-spin h-4 w-4 border-2 border-current border-t-transparent rounded-full\"\n />\n </div>\n\n <p v-if=\"hint || localHint\" class=\"text-body-3xs text-light-copy\">\n {{ localHint || hint }}\n </p>\n\n <p v-if=\"validationError || localError\" class=\"text-body-3xs text-red-500\">\n {{ localError || validationError }}\n </p>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n ref,\n watch,\n computed,\n nextTick,\n onMounted,\n onBeforeUnmount,\n} from \"vue\";\nimport { formatAmount, restrictToNumericKeys } from \"../../utils\";\nimport BaseImage from \"./image.vue\";\nimport IMask, { InputMask } from \"imask\";\n\ntype Rule = \"numeric\";\n\ninterface IBaseInputProps {\n label?: string;\n type?: string; // HTMLInputTypeAttribute\n placeholder?: string;\n validationError?: string;\n hint?: string;\n mask?: string; // not implemented\n rules?: Rule[];\n isAmountInput?: boolean;\n required?: boolean;\n disabled?: boolean;\n loading?: boolean;\n showCopyIcon?: boolean;\n\n /** v-model support (controlled) */\n modelValue?: string;\n\n /** uncontrolled initial value */\n defaultValue?: string;\n\n /** classes / slots */\n className?: string;\n}\n\nconst props = withDefaults(defineProps<IBaseInputProps>(), {\n label: \"\",\n type: \"text\",\n placeholder: undefined,\n validationError: \"\",\n hint: \"\",\n mask: \"\",\n rules: () => [],\n isAmountInput: false,\n required: false,\n disabled: false,\n loading: false,\n showCopyIcon: false,\n modelValue: undefined,\n defaultValue: \"\",\n className: \"\",\n});\n\nconst emit = defineEmits<{\n (e: \"update:modelValue\", v: string): void;\n (e: \"blur\", v: string): void;\n (e: \"copied\"): void;\n}>();\n\n/** Controlled vs uncontrolled */\nconst isControlled = computed(() => props.modelValue !== undefined);\nconst rawValue = ref<string>(props.modelValue ?? props.defaultValue ?? \"\");\nconst localHint = ref(\"\");\nconst localError = ref(\"\");\nconst inputEl = ref<HTMLInputElement | null>(null);\nlet imaskInstance: InputMask | null = null\n\nwatch(\n () => props.modelValue,\n (v) => {\n if (!isControlled.value) return\n rawValue.value = v ?? ''\n if (imaskInstance) {\n // Avoid feedback loops: only set if different\n if (imaskInstance.value !== (v ?? '')) {\n imaskInstance.value = v ?? ''\n }\n }\n }\n)\n\n/** formatted value for amount input */\nconst formattedValue = computed(() =>\n props.isAmountInput\n ? formatAmount(rawValue.value.replace(/,/g, \"\"))\n : rawValue.value\n);\n\nfunction handleInput(e: Event) {\n const el = e.target as HTMLInputElement;\n const incoming = el.value.replace(/,/g, \"\");\n if (!isControlled.value) rawValue.value = incoming;\n emit(\"update:modelValue\", incoming);\n\n // Move caret to end after formatting\n nextTick(() => {\n const target = inputEl.value;\n if (target) {\n const len = target.value.length;\n target.setSelectionRange(len, len);\n }\n });\n}\n\nfunction handleBlur() {\n emit(\"blur\", rawValue.value);\n}\n\nfunction handleKeyDown(e: KeyboardEvent) {\n if (props.rules.includes(\"numeric\")) restrictToNumericKeys(e);\n}\n\nconst containerBg = computed(() =>\n props.disabled ? \"bg-grey-50 cursor-not-allowed\" : \"bg-white\"\n);\nconst containerBorder = computed(() =>\n props.validationError || localError.value\n ? \"border-red-300 bg-red-50\"\n : \"border-grey-100\"\n);\n\nfunction copyToClipboard(text: string) {\n return navigator.clipboard.writeText(text);\n}\n\nfunction copyHandler() {\n copyToClipboard(rawValue.value)\n .then(() => {\n localError.value = \"\";\n localHint.value = \"Text copied to clipboard\";\n emit(\"copied\");\n })\n .catch(() => {\n localHint.value = \"\";\n localError.value = \"Failed to copy text to clipboard\";\n });\n}\n\nonMounted(() => {\n if (!inputEl.value) return\n\n // Build IMask options from your prop. If prop is a string mask, pass it directly.\n const maskOptions = props.mask\n ? { mask: props.mask } // e.g. '0000 0000 0000 0000'\n : undefined; // no mask -> do nothing\n\n if (maskOptions) {\n imaskInstance = IMask(inputEl.value, maskOptions)\n\n // keep mask in sync with initial value (controlled/uncontrolled)\n if (rawValue.value) {\n imaskInstance.value = rawValue.value\n }\n\n // When user types and mask accepts changes:\n imaskInstance.on('accept', () => {\n // If you want the masked string (with spaces): use imaskInstance.value\n // If you want the raw digits: use imaskInstance.unmaskedValue\n const next = imaskInstance?.value ?? ''\n\n if (!isControlled.value) rawValue.value = next\n emit('update:modelValue', next)\n\n // optional: keep caret at end if you also format elsewhere\n nextTick(() => {\n const el = inputEl.value\n if (el) {\n const len = el.value.length\n el.setSelectionRange(len, len)\n }\n })\n })\n\n // When fully complete (optional)\n // imaskInstance.on('complete', () => { ... })\n }\n})\n\nonBeforeUnmount(() => {\n imaskInstance?.destroy()\n imaskInstance = null\n})\n</script>\n","<template>\n <svg\n :width=\"width\"\n :height=\"height\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n v-bind=\"attrs\"\n >\n <g opacity=\"0.6\">\n <path\n d=\"M16.5813 7.83128L10.3313 14.0813C10.2434 14.1691 10.1242 14.2184 10 14.2184C9.87581 14.2184 9.75667 14.1691 9.66878 14.0813L3.41878 7.83128C3.33598 7.74242 3.2909 7.62489 3.29304 7.50345C3.29518 7.38201 3.34438 7.26615 3.43026 7.18026C3.51615 7.09438 3.63201 7.04518 3.75345 7.04304C3.87489 7.0409 3.99242 7.08598 4.08128 7.16878L10 13.0867L15.9188 7.16878C16.0076 7.08598 16.1252 7.0409 16.2466 7.04304C16.368 7.04518 16.4839 7.09438 16.5698 7.18026C16.6557 7.26615 16.7049 7.38201 16.707 7.50345C16.7092 7.62489 16.6641 7.74242 16.5813 7.83128Z\"\n :fill=\"color\"\n />\n </g>\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from \"vue\";\n\ninterface IIconProps {\n width?: number | string;\n height?: number | string;\n color?: string;\n}\n\nconst props = withDefaults(defineProps<IIconProps>(), {\n width: 24,\n height: 24,\n color: \"currentColor\",\n});\n\nconst attrs = useAttrs();\nconst { width, height, color } = props;\n</script>\n","<template>\n <svg\n :width=\"width\"\n :height=\"height\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n v-bind=\"attrs\"\n >\n <g opacity=\"0.7\">\n <path\n d=\"M2.73508 9.73495L7.73508 4.73495C7.80539 4.66473 7.9007 4.62528 8.00008 4.62528C8.09945 4.62528 8.19476 4.66473 8.26508 4.73495L13.2651 9.73495C13.3313 9.80604 13.3674 9.90006 13.3657 9.99722C13.364 10.0944 13.3246 10.1871 13.2559 10.2558C13.1872 10.3245 13.0945 10.3638 12.9973 10.3655C12.9002 10.3673 12.8062 10.3312 12.7351 10.265L8.00008 5.53058L3.26508 10.265C3.19399 10.3312 3.09997 10.3673 3.00282 10.3655C2.90566 10.3638 2.81297 10.3245 2.74427 10.2558C2.67556 10.1871 2.6362 10.0944 2.63449 9.99722C2.63277 9.90006 2.66884 9.80604 2.73508 9.73495Z\"\n :fill=\"color\"\n />\n </g>\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from \"vue\";\n\ninterface IIconProps {\n width?: number | string;\n height?: number | string;\n color?: string;\n}\n\nconst props = withDefaults(defineProps<IIconProps>(), {\n width: 24,\n height: 24,\n color: \"currentColor\",\n});\n\nconst attrs = useAttrs();\nconst { width, height, color } = props;\n</script>\n","<template>\n <p class=\"mb-0 text-body-3xs font-medium text-orange-500\">\n {{ hint }}\n </p>\n</template>\n\n<script setup lang=\"ts\">\ninterface IBaseHintProps {\n hint: string;\n}\n\ndefineProps<IBaseHintProps>();\n</script>\n","<template>\n <div :class=\"['flex flex-col gap-2 relative', className]\">\n <p v-if=\"label\" class=\"mb-0 text-body-2xs font-normal text-heading-text\">\n {{ label }} <span v-if=\"required\" class=\"text-orange-required\"> *</span>\n </p>\n\n <!-- Trigger -->\n <div\n ref=\"triggerRef\"\n :class=\"[\n 'border-c rounded-md flex items-center justify-between h-12 cursor-pointer px-3 py-2',\n containerBg,\n containerBorder,\n ]\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n :aria-expanded=\"open\"\n :aria-controls=\"open ? 'select-menu' : undefined\"\n :aria-disabled=\"disabled || undefined\"\n :aria-activedescendant=\"\n open && activeIndex >= 0 ? `option-${activeIndex}` : undefined\n \"\n tabindex=\"0\"\n @click=\"toggleMenu\"\n @keydown=\"onTriggerKeyDown\"\n >\n <div class=\"flex items-center gap-2\">\n <slot name=\"prefix\" />\n\n <div class=\"flex items-center gap-2\">\n <!-- Country flag in trigger -->\n <BaseImage\n v-if=\"\n selected && itemImageType === 'country' && selected.countryCode\n \"\n :src=\"`https://flagcdn.com/w40/${selected.countryCode.toLowerCase()}.png`\"\n :alt=\"selected.countryCode\"\n :width=\"28\"\n customClass=\"rounded-lg\"\n />\n\n <p\n class=\"text-body-2xs font-normal mb-0\"\n :class=\"selected?.label ? 'text-sub-copy' : 'text-grey-500'\"\n >\n {{ displayText }}\n </p>\n </div>\n </div>\n\n <span\n v-if=\"loading\"\n class=\"inline-block h-4 w-4 border-2 border-current border-t-transparent rounded-full animate-spin\"\n />\n <IconChevronUp v-else-if=\"open\" color=\"#8FAECA\" />\n <IconChevronDown v-else color=\"#8FAECA\" />\n </div>\n\n <!-- Menu -->\n <div\n v-if=\"open\"\n ref=\"menuRef\"\n id=\"select-menu\"\n class=\"border-c bg-white rounded-md border-grey-border text-body-xs font-normal text-input-grey w-full mt-2 max-h-22rem overflow-y-auto\"\n role=\"listbox\"\n :aria-label=\"label || 'Options'\"\n :style=\"{ position: 'absolute', top: '100%', zIndex: 10 }\"\n @keydown=\"onMenuKeyDown\"\n >\n <div v-if=\"hasSearch\" class=\"px-4 pt-2 pb-1\">\n <input\n ref=\"searchRef\"\n type=\"text\"\n :placeholder=\"`Search ${label || 'options'}`\"\n class=\"bg-transparent outline-none border-b pb-2 w-full focus:outline-none focus:ring-0 text-body-2xs text-light-copy font-normal\"\n @input=\"onSearchInput\"\n />\n </div>\n\n <div\n v-for=\"(opt, i) in filtered\"\n :key=\"opt.value\"\n @click=\"commit(opt.value)\"\n :id=\"`option-${i}`\"\n data-option\n role=\"option\"\n :aria-selected=\"selected?.value === opt.value\"\n :class=\"[\n 'px-4 py-3 first:pt-0 hover:bg-gray-100 flex items-center gap-2 cursor-pointer',\n i === activeIndex ? 'bg-gray-100' : '',\n ]\"\n >\n <!-- Country flag in list -->\n <BaseImage\n v-if=\"itemImageType === 'country' && opt.countryCode\"\n :src=\"`https://flagcdn.com/w40/${opt.countryCode.toLowerCase()}.png`\"\n :alt=\"opt.countryCode\"\n :width=\"28\"\n customClass=\"rounded-lg\"\n />\n\n <!-- (Bank logos can be handled similarly in future) -->\n\n <p class=\"mb-0 text-body-2xs font-medium\">\n {{ opt.label }}\n </p>\n </div>\n </div>\n\n <BaseHint v-if=\"hint\" :hint=\"hint\" />\n <BaseInputError v-if=\"validationError\" :errorMessage=\"validationError\" />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n computed,\n onBeforeUnmount,\n onMounted,\n ref,\n watch,\n nextTick,\n toRefs,\n} from \"vue\";\nimport IconChevronDown from \"../icons/icon-chevron-down.vue\";\nimport IconChevronUp from \"../icons/icon-chevron-up.vue\";\nimport BaseHint from \"./hint.vue\";\nimport BaseInputError from \"./input-error.vue\";\nimport BaseImage from \"./image.vue\";\n\ntype ImageType = \"country\" | \"bank\" | null;\n\nexport interface SelectOption {\n label: string;\n value: string;\n countryCode?: string;\n bankCode?: string;\n}\n\ninterface IBaseSelectProps {\n options: SelectOption[];\n /** Controlled value (v-model) */\n modelValue?: string;\n /** Uncontrolled initial value */\n defaultValue?: string;\n /** Emits change when selection changes */\n className?: string;\n\n placeholder?: string;\n hasSearch?: boolean;\n disabled?: boolean;\n loading?: boolean;\n validationError?: string;\n label?: string;\n hint?: string;\n required?: boolean;\n itemImageType?: ImageType;\n}\n\nconst props = withDefaults(defineProps<IBaseSelectProps>(), {\n options: () => [],\n modelValue: undefined,\n defaultValue: undefined,\n className: \"\",\n placeholder: \"Select an option\",\n hasSearch: true,\n disabled: false,\n loading: false,\n validationError: \"\",\n label: \"\",\n hint: \"\",\n required: false,\n itemImageType: null,\n});\n\nconst emit = defineEmits<{\n (e: \"update:modelValue\", v: string): void;\n /** Parity with React onChange */\n (e: \"change\", v: string): void;\n}>();\n\n/** Local state */\nconst open = ref(false);\nconst internalValue = ref<string>(props.defaultValue ?? props.modelValue ?? \"\");\nconst filtered = ref<SelectOption[]>([...props.options]);\nconst activeIndex = ref<number>(-1);\n\nconst triggerRef = ref<HTMLDivElement | null>(null);\nconst menuRef = ref<HTMLDivElement | null>(null);\nconst searchRef = ref<HTMLInputElement | null>(null);\n\n/** Controlled vs uncontrolled */\nconst isControlled = computed(() => props.modelValue !== undefined);\nwatch(\n () => props.modelValue,\n (v) => {\n if (isControlled.value) internalValue.value = v ?? \"\";\n }\n);\n\n/** Reset filtered when options change */\nwatch(\n () => props.options,\n (opts) => {\n filtered.value = [...opts];\n },\n { immediate: true }\n);\n\n/** Selected option */\nconst selected = computed(() => {\n const val = isControlled.value ? props.modelValue : internalValue.value;\n return props.options.find((o) => o.value === val) ?? null;\n});\n\n/** Display text */\nconst displayText = computed(() => {\n return (\n selected.value?.label ||\n props.placeholder ||\n (props.label ? `Select ${props.label}` : \"Select an option\")\n );\n});\n\n/** Open/close helpers */\nfunction openMenu() {\n if (props.disabled || open.value) return;\n filtered.value = [...props.options];\n\n // set active index to current selection or first\n const idx = selected.value\n ? Math.max(\n 0,\n props.options.findIndex((o) => o.value === selected.value!.value)\n )\n : 0;\n activeIndex.value = idx;\n\n open.value = true;\n\n // focus search if enabled\n nextTick(() => {\n if (props.hasSearch && searchRef.value) {\n searchRef.value.focus();\n searchRef.value.select();\n }\n });\n}\nfunction closeMenu() {\n if (!open.value) return;\n open.value = false;\n activeIndex.value = -1;\n}\nfunction toggleMenu() {\n if (props.disabled) return;\n open.value ? closeMenu() : openMenu();\n}\n\n/** Outside click */\nfunction onDocMouseDown(e: MouseEvent) {\n if (!open.value) return;\n const t = e.target as Node;\n const tri = triggerRef.value;\n const menu = menuRef.value;\n if (tri && !tri.contains(t) && menu && !menu.contains(t)) closeMenu();\n}\nwatch(open, (v) => {\n if (v) document.addEventListener(\"mousedown\", onDocMouseDown);\n else document.removeEventListener(\"mousedown\", onDocMouseDown);\n});\nonBeforeUnmount(() =>\n document.removeEventListener(\"mousedown\", onDocMouseDown)\n);\n\n/** Selection */\nfunction commit(val: string) {\n if (!isControlled.value) internalValue.value = val;\n emit(\"update:modelValue\", val);\n emit(\"change\", val);\n closeMenu();\n}\n\n/** Search */\nfunction onSearchInput(e: Event) {\n const q = (e.target as HTMLInputElement).value.toLowerCase();\n const list = props.options.filter((o) => o.label.toLowerCase().includes(q));\n filtered.value = list;\n activeIndex.value = list.length ? 0 : -1;\n}\n\n/** Keyboard on trigger */\nfunction onTriggerKeyDown(e: KeyboardEvent) {\n if (props.disabled) return;\n switch (e.key) {\n case \"Enter\":\n case \" \":\n case \"Spacebar\":\n case \"ArrowDown\":\n e.preventDefault();\n if (!open.value) openMenu();\n else moveActive(1);\n break;\n case \"ArrowUp\":\n e.preventDefault();\n if (!open.value) openMenu();\n else moveActive(-1);\n break;\n case \"Escape\":\n if (open.value) {\n e.preventDefault();\n closeMenu();\n }\n break;\n }\n}\n\n/** Keyboard in menu */\nfunction onMenuKeyDown(e: KeyboardEvent) {\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n moveActive(1);\n break;\n case \"ArrowUp\":\n e.preventDefault();\n moveActive(-1);\n break;\n case \"Home\":\n e.preventDefault();\n activeIndex.value = filtered.value.length ? 0 : -1;\n scrollActiveIntoView(0);\n break;\n case \"End\":\n e.preventDefault();\n activeIndex.value = filtered.value.length - 1;\n scrollActiveIntoView(filtered.value.length - 1);\n break;\n case \"Enter\":\n e.preventDefault();\n if (activeIndex.value >= 0) {\n const opt = filtered.value[activeIndex.value];\n if (opt) commit(opt.value);\n }\n break;\n case \"Escape\":\n e.preventDefault();\n closeMenu();\n break;\n case \"Tab\":\n closeMenu();\n break;\n }\n}\n\nfunction moveActive(delta: number) {\n if (!filtered.value.length) return;\n const max = filtered.value.length - 1;\n const next =\n activeIndex.value < 0\n ? 0\n : Math.min(max, Math.max(0, activeIndex.value + delta));\n activeIndex.value = next;\n scrollActiveIntoView(next);\n}\n\nfunction scrollActiveIntoView(index: number) {\n const menu = menuRef.value;\n if (!menu) return;\n const items = menu.querySelectorAll<HTMLElement>(\"[data-option]\");\n if (index >= 0 && index < items.length) {\n items[index]?.scrollIntoView({ block: \"nearest\" });\n }\n}\n\n/** UI helpers */\nconst containerBg = computed(() =>\n props.disabled ? \"bg-grey-100 cursor-not-allowed\" : \"bg-white\"\n);\nconst containerBorder = computed(() =>\n props.validationError ? \"border-red-300\" : \"border-grey-100 bg-white\"\n);\n\n/** Expose a few props in template */\nconst {\n options,\n placeholder,\n hasSearch,\n disabled,\n loading,\n validationError,\n label,\n hint,\n required,\n itemImageType,\n className,\n} = toRefs(props);\n</script>\n","<!-- PayByCard.vue -->\n<template>\n <div class=\"flex flex-col gap-6\">\n <!-- Billing Step -->\n <div v-if=\"formIndex === 0\" class=\"grid grid-cols-2 gap-6 overflow-y-auto\">\n <div class=\"col-span-2\">\n <BaseInput\n label=\"Address Line 1\"\n required\n v-model=\"billingForm.address1\"\n @update:modelValue=\"(e: string) => {\n billingForm.address1 = e;\n if (billingErrors.address1) billingErrors.address1 = '';\n }\"\n :validation-error=\"billingErrors.address1 ?? ''\"\n />\n </div>\n\n <div class=\"col-span-2\">\n <BaseInput\n label=\"Address Line 2\"\n v-model=\"billingForm.address2\"\n @update:modelValue=\"(e: string) => (billingForm.address2 = e)\"\n :validation-error=\"billingErrors.address2 ?? ''\"\n />\n </div>\n\n <BaseSelect\n label=\"Select Country\"\n required\n :options=\"countries\"\n :loading=\"loadingCountries\"\n v-model=\"billingForm.country\"\n @update:modelValue=\"\n async (e: string) => {\n billingForm.country = e;\n billingForm.state = '';\n await getStates(e);\n if (billingErrors.country) billingErrors.country = '';\n }\n \"\n :validation-error=\"billingErrors.country ?? ''\"\n />\n\n <BaseSelect\n label=\"Select State\"\n required\n :options=\"countryStates\"\n :loading=\"loadingStates\"\n v-model=\"billingForm.state\"\n @update:modelValue=\"(e: string) => {\n billingForm.state = e;\n if (billingErrors.state) billingErrors.state = '';\n }\"\n :validation-error=\"billingErrors.state ?? ''\"\n />\n\n <BaseInput\n label=\"City\"\n required\n v-model=\"billingForm.city\"\n @update:modelValue=\"(e: string) => {\n billingForm.city = e;\n if (billingErrors.city) billingErrors.city = '';\n }\"\n :validation-error=\"billingErrors.city ?? ''\"\n />\n\n <BaseInput\n label=\"Postal Code\"\n required\n v-model=\"billingForm.postalCode\"\n @update:modelValue=\"(e: string) => {\n billingForm.postalCode = e;\n if (billingErrors.postalCode) billingErrors.postalCode = '';\n }\"\n :validation-error=\"billingErrors.postalCode ?? ''\"\n />\n\n <BaseInput\n label=\"Email\"\n required\n v-model=\"billingForm.emailAddress\"\n @update:modelValue=\"(e: string) => {\n billingForm.emailAddress = e;\n if (billingErrors.emailAddress) billingErrors.emailAddress = '';\n }\"\n :validation-error=\"billingErrors.emailAddress ?? ''\"\n />\n\n <BaseInput\n label=\"Phone Number\"\n required\n v-model=\"billingForm.phoneNumber\"\n @update:modelValue=\"(e: string) => {\n billingForm.phoneNumber = e;\n if (billingErrors.phoneNumber) billingErrors.phoneNumber = '';\n }\"\n :validation-error=\"billingErrors.phoneNumber ?? ''\"\n />\n </div>\n\n <!-- Card Step -->\n <div\n v-if=\"formIndex === 1\"\n class=\"grid grid-cols-2 gap-6 overflow-y-auto\"\n :style=\"{ maxHeight: '320px' }\"\n >\n <div class=\"col-span-2\">\n <BaseInput\n label=\"Card Name\"\n required\n v-model=\"payForm.customerName\"\n @update:modelValue=\"(e: string) => {\n payForm.customerName = e;\n if (payErrors.customerName) payErrors.customerName = '';\n }\"\n :validation-error=\"payErrors.customerName ?? ''\"\n />\n </div>\n\n <div class=\"col-span-2\">\n <BaseInput\n label=\"Card Number\"\n required\n :rules=\"['numeric']\"\n mask=\"0000 0000 0000 0000\"\n placeholder=\"0000 0000 0000 0000\"\n v-model=\"payForm.cardNo\"\n @update:modelValue=\"(e: string) => {\n payForm.cardNo = e;\n if (payErrors.cardNo) payErrors.cardNo = '';\n cardNumberInputHandler(e);\n }\"\n :validation-error=\"payErrors.cardNo ?? ''\"\n />\n </div>\n\n <BaseInput\n label=\"Expiry Date\"\n required\n v-model=\"payForm.expireDate\"\n mask=\"00/00\"\n placeholder=\"00/00\"\n @update:modelValue=\"(e: string) => {\n payForm.expireDate = e;\n if (payErrors.expireDate) payErrors.expireDate = '';\n }\"\n :validation-error=\"payErrors.expireDate ?? ''\"\n />\n\n <BaseInput\n label=\"CVV\"\n required\n :rules=\"['numeric']\"\n v-model=\"payForm.cvv\"\n mask=\"000\"\n placeholder=\"000\"\n @update:modelValue=\"(e: string) => {\n payForm.cvv = e;\n if (payErrors.cvv) payErrors.cvv = '';\n }\"\n :validation-error=\"payErrors.cvv ?? ''\"\n />\n\n <BaseInput\n v-if=\"cardType === 'Verve'\"\n label=\"Card Pin\"\n required\n :rules=\"['numeric']\"\n v-model=\"payForm.cardPin\"\n mask=\"0000\"\n placeholder=\"0000\"\n @update:modelValue=\"(e: string) => {\n payForm.cardPin = e;\n if (payErrors.cardPin) payErrors.cardPin = '';\n }\"\n :validation-error=\"payErrors.cardPin ?? ''\"\n />\n </div>\n\n <BaseButton\n :label=\"formIndex === 0 ? 'Proceed' : `Pay ${formatAmountHandler}`\"\n type=\"primary\"\n customClass=\"w-full\"\n :loading=\"isMakingPayment\"\n @Click=\"proceedHandler\"\n :disabled=\"isMakingPayment\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, reactive, ref } from \"vue\";\nimport {\n IAuthorizeCardPaymentPayload,\n IBillingDetails,\n ICardDetails,\n IPaymentObject,\n ISuccessObject,\n} from \"../types/checkout.type\";\nimport { ICountry, ISelectOption, IState } from \"../types/resource.type\";\nimport {\n cardTypeHandler,\n checkObjectTruthy,\n formatAmount,\n getQueryParams,\n validateGroup,\n} from \"../utils\";\nimport {\n authorizeCardPayment,\n createPaymentLink,\n decryptPayload,\n encryptPayload,\n getCountries,\n getCountryStates,\n} from \"../apis\";\nimport BaseInput from \"./base/input.vue\";\nimport BaseSelect from \"./base/select.vue\";\nimport BaseButton from \"./base/button.vue\";\n\n/**\n * Props:\n * - Functions used below should be provided by the host app.\n * - This avoids adding imports/logic here, as requested.\n */\nconst props = defineProps<{\n secretKey: string;\n paymentObject: IPaymentObject;\n environment?: \"sandbox\" | \"prod\";\n onPaymentAuthorized?: (data: ISuccessObject) => void;\n}>();\n\nconst environment = props.environment ?? \"sandbox\";\n\n/** Local state */\nconst formIndex = ref(0);\nconst message = ref(\"\");\nconst isMakingPayment = ref(false);\nconst loading = ref(false);\nconst cardType = ref(\"\");\nconst transactionReference = ref(\"\");\nconst loadingCountries = ref(false);\nconst loadingStates = ref(false);\n\nconst rawCountries = ref<ICountry[]>([]);\nconst countries = ref<ISelectOption[]>([]);\nconst countryStates = ref<ISelectOption[]>([]);\n\n/** Forms */\nconst billingForm = reactive<Record<string, string>>({\n address1: \"\",\n address2: \"\",\n postalCode: \"\",\n state: \"\",\n city: \"\",\n country: \"\",\n emailAddress: \"\",\n phoneNumber: \"\",\n});\n\nconst payForm = reactive<Record<string, string>>({\n customerName: \"\",\n cardNo: \"\",\n expireDate: \"\",\n cvv: \"\",\n cardPin: \"\", // Only required for Verve cards\n});\n\n/** Error states */\nconst billingErrors = reactive<Record<string, string>>({});\nconst payErrors = reactive<Record<string, string>>({});\n\n/** Validation rules */\nconst billingRules = reactive<Record<string, string>>({\n address1: \"required\",\n address2: \"\",\n country: \"required\",\n state: \"required\",\n city: \"required\",\n postalCode: \"required|no_special|char_length:6\",\n emailAddress: \"required|email\",\n phoneNumber: \"required\",\n});\n\nconst payRules = reactive<Record<string, string>>({\n customerName: \"required\",\n cardNo: \"required|num_spaces\",\n expireDate: \"required\",\n cvv: \"required|numeric\",\n cardPin: \"\",\n});\n\n/** Labels */\nconst billingLabels: Record<string, string> = {\n address1: \"Address Line 1\",\n address2: \"Address Line 2\",\n postalCode: \"Postal Code\",\n state: \"State\",\n city: \"City\",\n country: \"Country\",\n emailAddress: \"Email\",\n phoneNumber: \"Phone Number\",\n};\n\nconst payLabels: Record<string, string> = {\n customerName: \"Card Name\",\n cardNo: \"Card Number\",\n expireDate: \"Expiry Date\",\n cvv: \"CVV\",\n cardPin: \"Card PIN\",\n};\n\n/** Amount label */\nconst formatAmountHandler = computed(() =>\n formatAmount(props.paymentObject.amount, props.paymentObject.currency)\n);\n\n/** Handlers */\nasync function proceedHandler() {\n if (formIndex.value === 0) {\n const errs = validateGroup(billingForm, billingRules, billingLabels);\n Object.assign(billingErrors, errs);\n if (Object.keys(errs).length === 0) {\n formIndex.value = 1;\n }\n return;\n }\n\n if (formIndex.value === 1) {\n const errs = validateGroup(payForm, payRules, payLabels);\n Object.assign(payErrors, errs);\n if (Object.keys(errs).length > 0) return;\n\n try {\n isMakingPayment.value = true;\n message.value = \"\";\n\n const cardDetails: ICardDetails = {\n pan: payForm.cardNo ?? \"\",\n expiryDate: payForm.expireDate ?? \"\",\n cvv: payForm.cvv ?? \"\",\n cardScheme: cardType.value,\n nameOnCard: payForm.customerName ?? \"\",\n ...(cardType.value === \"Verve\" ? { pin: payForm.cardPin ?? \"\" } : {}),\n };\n\n const billingDetails: IBillingDetails = {\n address1: billingForm.address1 ?? \"\",\n address2: billingForm.address2 ?? \"\",\n postalCode: billingForm.postalCode ?? \"\",\n state: billingForm.state ?? \"\",\n city: billingForm.city ?? \"\",\n country: billingForm.country ?? \"\",\n emailAddress: billingForm.emailAddress ?? \"\",\n phoneNumber: billingForm.phoneNumber ?? \"\",\n };\n\n const encryptedCardDetails = encryptPayload(props.secretKey, cardDetails);\n\n const payload: IAuthorizeCardPaymentPayload = {\n customerId: props.paymentObject?.email || payForm.customerName || \"\",\n amount: String(props.paymentObject?.amount ?? \"\"),\n currency: props.paymentObject?.currency || \"USD\",\n narration: props.paymentObject?.narration || \"Test transaction\",\n encryptedCardDetails: encryptedCardDetails.requestParam,\n billingDetails,\n redirectUrl: props.paymentObject?.redirectUrl || \"\",\n paymentReference: transactionReference.value,\n isCheckout: true,\n };\n\n const request = { ...payload, merchantId: props.secretKey };\n\n let response: any = await authorizeCardPayment(environment, request);\n\n if (response?.responseParam) {\n response = decryptPayload(environment, response.responseParam);\n }\n\n if (response?.isSuccessful) {\n // 3DS flow\n if (response.threeDsInteractionRequired === true) {\n const threeDsData = {\n transactionReference: response.transactionReference,\n threeDsHtml: response.threeDsHtml,\n amount: response.amount,\n responseMessage: response.responseMessage,\n paReq: response.threeDsHtml?.paReq,\n termUrl: response.threeDsHtml?.termUrl,\n action: response.threeDsHtml?.action,\n acsUrl: response.threeDsHtml?.acsUrl,\n md: response.threeDsHtml?.md,\n };\n\n localStorage.setItem(\"threeDsData\", JSON.stringify(threeDsData));\n const threeDsUrl = `${window.location.origin}/account/three-ds-confirm`;\n window.open(threeDsUrl, \"_blank\", \"noopener,noreferrer\");\n\n message.value =\n \"3D Secure authentication opened in new tab. Please complete the verification\";\n isMakingPayment.value = false;\n return;\n }\n\n if (\n response.responseMessage === \"Payer Interaction Required\" &&\n response.threeDsHtml\n ) {\n const threeDsData = {\n transactionReference: response.transactionReference,\n threeDsHtml: response.threeDsHtml,\n amount: response.amount,\n responseMessage: response.responseMessage,\n paReq: response.threeDsHtml?.paReq,\n termUrl: response.threeDsHtml?.termUrl,\n action: response.threeDsHtml?.action,\n acsUrl: response.threeDsHtml?.acsUrl,\n md: response.threeDsHtml?.md,\n };\n\n localStorage.setItem(\"threeDsData\", JSON.stringify(threeDsData));\n const threeDsUrl = `${window.location.origin}/account/three-ds-confirm`;\n window.open(threeDsUrl, \"_blank\", \"noopener,noreferrer\");\n\n message.value =\n \"3D Secure authentication opened in new tab. Please complete the verification\";\n isMakingPayment.value = false;\n return;\n }\n\n if (response.transactionReference?.trim()) {\n props.onPaymentAuthorized?.({\n paymentId: response.transactionReference,\n paymentDate: response?.data?.updatedAt,\n paymentStatus: \"Authorized\",\n });\n }\n\n message.value = \"Card payment authorized successfully\";\n isMakingPayment.value = false;\n return;\n }\n\n // Failure path\n message.value = response?.responseMessage || \"Payment failed\";\n props.onPaymentAuthorized?.({\n paymentId: response?.transactionReference,\n paymentDate: response?.data?.updatedAt,\n paymentStatus: \"Payment failed\",\n });\n isMakingPayment.value = false;\n } catch (err: any) {\n let friendly = \"Payment failed\";\n if (err?.error?.responseParam) {\n try {\n const decryptedError = decryptPayload(\n environment,\n err.error.responseParam\n );\n friendly = decryptedError?.responseMessage || friendly;\n } catch {\n friendly =\n err?.error?.responseMessage || err?.error?.message || friendly;\n }\n } else {\n friendly =\n err?.error?.responseMessage ||\n err?.error?.message ||\n \"Payment failed\";\n }\n\n message.value = friendly;\n isMakingPayment.value = false;\n }\n }\n}\n\nasync function generatePaymentLinkHandler() {\n if (!props.secretKey) {\n message.value = \"Secret key is required.\";\n return;\n }\n if (!checkObjectTruthy<IPaymentObject>(props.paymentObject)) {\n message.value = \"Kindly ensure you are passing all the required data.\";\n return;\n }\n\n loading.value = true;\n message.value = \"\";\n try {\n const response = await createPaymentLink(\n props.paymentObject,\n environment,\n props.secretKey\n );\n\n if (response?.isSuccessful && response.launchUrl) {\n const queryParams = getQueryParams(response.launchUrl);\n transactionReference.value = queryParams[\"paymentReference\"];\n message.value = \"Payment link created successfully\";\n } else {\n message.value = \"Failed to create payment link\";\n }\n } catch (e: any) {\n message.value = e?.message || \"Failed to create payment link\";\n } finally {\n loading.value = false;\n }\n}\n\nasync function getAllCountries() {\n loadingCountries.value = true;\n try {\n const response = await getCountries(environment, props.secretKey);\n\n if (response?.isSuccessful) {\n rawCountries.value = response.data;\n countries.value = (response.data ?? []).map((c: ICountry) => ({\n label: c.countryName,\n value: c.iso2,\n }));\n }\n } catch (e: any) {\n message.value = e?.message || \"Failed to get countries\";\n } finally {\n loadingCountries.value = false;\n }\n}\n\nasync function getStates(countryIso2: string) {\n const country = rawCountries.value.find((c) => c.iso2 === countryIso2);\n if (!country) return;\n loadingStates.value = true;\n try {\n const response = await getCountryStates(\n country.iso3,\n environment,\n props.secretKey\n );\n\n if (response?.isSuccessful) {\n countryStates.value = (response.data ?? []).map((s: IState) => ({\n label: s.name,\n value: s.name,\n }));\n }\n } catch (e: any) {\n message.value = e?.message || \"Failed to get country states\";\n } finally {\n loadingStates.value = false;\n }\n}\n\nfunction cardNumberInputHandler(event: string): void {\n cardType.value = cardTypeHandler(event);\n payRules.cardPin = cardType.value === \"Verve\" ? \"required|numeric\" : \"\";\n}\n\nonMounted(async () => {\n await generatePaymentLinkHandler();\n await getAllCountries();\n});\n</script>\n","<template>\n <svg\n :width=\"width\"\n :height=\"height\"\n viewBox=\"0 0 16 17\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n v-bind=\"attrs\"\n >\n <path\n d=\"M11.4002 1.6875H8.60016C5.9935 1.6875 4.8335 2.8475 4.8335 5.45417V6.1875C4.8335 6.46083 5.06016 6.6875 5.3335 6.6875H7.40016C9.46683 6.6875 10.1668 7.3875 10.1668 9.45417V11.5208C10.1668 11.7942 10.3935 12.0208 10.6668 12.0208H11.4002C14.0068 12.0208 15.1668 10.8608 15.1668 8.25417V5.45417C15.1668 2.8475 14.0068 1.6875 11.4002 1.6875ZM5.8335 5.6875V5.45417C5.8335 3.3875 6.5335 2.6875 8.60016 2.6875H11.4002C13.4668 2.6875 14.1668 3.3875 14.1668 5.45417V8.25417C14.1668 10.3208 13.4668 11.0208 11.4002 11.0208H11.1668V9.45417C11.1668 6.8475 10.0068 5.6875 7.40016 5.6875H5.8335Z\"\n :fill=\"color\"\n />\n <path\n d=\"M7.40016 5.6875H4.60016C1.9935 5.6875 0.833496 6.8475 0.833496 9.45417V12.2542C0.833496 14.8608 1.9935 16.0208 4.60016 16.0208H7.40016C10.0068 16.0208 11.1668 14.8608 11.1668 12.2542V9.45417C11.1668 6.8475 10.0068 5.6875 7.40016 5.6875ZM4.60016 15.0208C2.5335 15.0208 1.8335 14.3208 1.8335 12.2542V9.45417C1.8335 7.3875 2.5335 6.6875 4.60016 6.6875H7.40016C9.46683 6.6875 10.1668 7.3875 10.1668 9.45417V12.2542C10.1668 14.3208 9.46683 15.0208 7.40016 15.0208H4.60016Z\"\n :fill=\"color\"\n />\n <path\n d=\"M5.35302 12.6542C5.22635 12.6542 5.09969 12.6075 4.99969 12.5075L3.69969 11.2075C3.50635 11.0142 3.50635 10.6942 3.69969 10.5008C3.89302 10.3075 4.21302 10.3075 4.40635 10.5008L5.35302 11.4475L7.59302 9.2075C7.78635 9.01417 8.10635 9.01417 8.29969 9.2075C8.49302 9.40083 8.49302 9.72083 8.29969 9.91417L5.69969 12.5075C5.60635 12.6008 5.47969 12.6542 5.35302 12.6542Z\"\n :fill=\"color\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from \"vue\";\n\ninterface IIconProps {\n width?: number | string;\n height?: number | string;\n color?: string;\n}\n\nconst props = withDefaults(defineProps<IIconProps>(), {\n width: 16,\n height: 17,\n color: \"currentColor\",\n});\n\nconst attrs = useAttrs();\nconst { width, height, color } = props;\n</script>\n","<template>\n <IconCopySuccess class=\"cursor-pointer\" :color=\"color\" @click=\"copyHandler\" />\n</template>\n\n<script setup lang=\"ts\">\nimport IconCopySuccess from \"../icons/icon-copy-success.vue\";\n\ninterface IBaseCopyProps {\n copyText: string;\n color?: string;\n}\n\nconst props = defineProps<IBaseCopyProps>();\n\nfunction copyToClipboard(text: string) {\n return navigator.clipboard.writeText(text);\n}\n\nfunction copyHandler() {\n copyToClipboard(props.copyText)\n .then(() => {\n // success: optionally emit an event or show toast\n })\n .catch((err) => {\n console.error(\"Copy failed:\", err);\n });\n}\n</script>\n","<template>\n <div\n v-if=\"type === 'vertical'\"\n :class=\"['flex flex-col gap-1', alignRight ? 'text-right items-end' : '']\"\n >\n <p :class=\"labelCustomClass\">{{ upperLabel }}</p>\n\n <div class=\"flex items-center gap-1\">\n <BaseImage\n v-if=\"showPrefixImg\"\n :src=\"valueImageSrc\"\n :alt=\"value\"\n :width=\"22\"\n :customClass=\"valueImageCustomClass\"\n />\n\n <p v-if=\"!hasValueCopy\" :class=\"valueCustomClass\">{{ value }}</p>\n <p v-else :class=\"[valueCustomClass, 'truncate']\">\n {{ truncatedValue }}\n </p>\n\n <BaseCopy v-if=\"hasValueCopy\" :copyText=\"value\" color=\"#9DBFDE\" />\n\n <BaseImage\n v-if=\"showSuffixImg\"\n :src=\"valueImageSrc\"\n :alt=\"value\"\n :width=\"22\"\n :customClass=\"valueImageCustomClass\"\n />\n </div>\n </div>\n\n <!-- horizontal -->\n <div v-else class=\"flex items-center justify-between\">\n <p :class=\"labelCustomClass\">{{ upperLabel }}</p>\n\n <div class=\"flex items-center gap-1\">\n <BaseImage\n v-if=\"showPrefixImg\"\n :src=\"valueImageSrc\"\n :alt=\"value\"\n :width=\"22\"\n :customClass=\"valueImageCustomClass\"\n />\n\n <p :class=\"valueCustomClass\">{{ value }}</p>\n\n <BaseCopy v-if=\"hasValueCopy\" :copyText=\"value\" color=\"#9DBFDE\" />\n\n <BaseImage\n v-if=\"showSuffixImg\"\n :src=\"valueImageSrc\"\n :alt=\"value\"\n :width=\"22\"\n :customClass=\"valueImageCustomClass\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { truncateString } from \"../../utils\";\nimport BaseImage from \"./image.vue\";\nimport BaseCopy from \"./copy.vue\";\n\ntype LayoutType = \"vertical\" | \"horizontal\";\ntype ImagePosition = \"prefix\" | \"suffix\";\n\ninterface IBaseLabelInfoProps {\n type?: LayoutType;\n label?: string;\n labelCustomClass?: string;\n valueImageSrc?: string;\n valueImageCustomClass?: string;\n valueImagePosition?: ImagePosition;\n hasValueCopy?: boolean;\n value?: string;\n valueCustomClass?: string;\n alignRight?: boolean;\n}\n\nconst props = withDefaults(defineProps<IBaseLabelInfoProps>(), {\n type: \"vertical\",\n label: \"\",\n labelCustomClass: \"text-body-4xs font-medium text-light-copy\",\n valueImageSrc: \"\",\n valueImageCustomClass: \"\",\n valueImagePosition: \"prefix\",\n hasValueCopy: false,\n value: \"\",\n valueCustomClass: \"text-body-2xs font-medium text-sub-copy\",\n alignRight: false,\n});\n\nconst upperLabel = computed(() => (props.label ?? \"\").toUpperCase());\nconst showPrefixImg = computed(\n () => !!props.valueImageSrc && props.valueImagePosition === \"prefix\"\n);\nconst showSuffixImg = computed(\n () => !!props.valueImageSrc && props.valueImagePosition === \"suffix\"\n);\nconst truncatedValue = computed(() => truncateString(props.value, 40));\n\nconst {\n type,\n labelCustomClass,\n valueImageSrc,\n valueImageCustomClass,\n hasValueCopy,\n value,\n valueCustomClass,\n alignRight,\n} = props;\n</script>\n","<!-- PayByTransfer.vue -->\n<template>\n <div class=\"flex flex-col gap-10\">\n <!-- Step 0: collect customer name -->\n <div v-if=\"formIndex === 0\" class=\"flex flex-col gap-10\">\n <BaseInput\n label=\"Customer Name\"\n required\n v-model=\"transferForm.customerName\"\n @update:modelValue=\"(e: string) => {\n transferForm.customerName = e\n if (transferForm.customerName) transferErrors.customerName = ''\n }\"\n :validationError=\"transferErrors.customerName ?? ''\"\n />\n\n <BaseButton\n :label=\"`Pay ${formatAmountHandler}`\"\n type=\"primary\"\n customClass=\"w-full\"\n :loading=\"isMakingPayment\"\n :onClick=\"payHandler\"\n />\n </div>\n\n <!-- Step 1: show virtual account details and confirm -->\n <div v-else-if=\"formIndex === 1\" class=\"flex flex-col gap-10\">\n <div class=\"bg-[#EFF7FF] p-4 rounded-lg flex flex-col gap-6\">\n <BaseLabelInfo\n label=\"Bank Name\"\n :value=\"`${paymentAccountDetails?.bank ?? ''} ${\n paymentAccountDetails?.accountName ?? ''\n }`\"\n />\n\n <div class=\"flex items-center justify-between\">\n <BaseLabelInfo\n label=\"Account Number\"\n :value=\"paymentAccountDetails?.accountNumber\"\n />\n <BaseCopy\n color=\"#9DBFDE\"\n :copyText=\"paymentAccountDetails?.accountNumber ?? ''\"\n />\n </div>\n\n <div class=\"flex items-center justify-between\">\n <BaseLabelInfo label=\"Amount\" :value=\"formatAmountHandler\" />\n <BaseCopy color=\"#9DBFDE\" :copyText=\"formatAmountHandler\" />\n </div>\n </div>\n\n <p\n class=\"w-2/3 mx-auto text-center text-body-2xs font-medium text-sub-copy\"\n >\n This account is for this transaction only and expires in\n <span class=\"text-orange-500\">\n {{ remainingSeconds >= 0 ? countDownTime : \"00:00\" }}\n </span>\n </p>\n\n <div class=\"flex flex-col gap-4\">\n <BaseButton\n label=\"I have paid the money\"\n type=\"primary\"\n customClass=\"w-full\"\n :loading=\"isFetchingPaymentDetails\"\n :onClick=\"getReferenceDetails\"\n />\n <button\n type=\"button\"\n @click=\"onCancel?.()\"\n class=\"text-heading-text text-body-2xs font-medium text-center py-2 cursor-pointer\"\n >\n Cancel Payment\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, reactive, ref } from \"vue\";\nimport {\n IPaymentAccountResponse,\n IPaymentObject,\n IPaymentReferenceDetail,\n ISuccessObject,\n} from \"../types/checkout.type\";\nimport {\n checkObjectTruthy,\n formatAmount,\n getQueryParams,\n validateGroup,\n} from \"../utils\";\nimport {\n createPaymentLink,\n generatePaymentAccount,\n getPaymentReferenceDetails,\n} from \"../apis\";\nimport BaseInput from \"./base/input.vue\";\nimport BaseLabelInfo from \"./base/label-info.vue\";\nimport BaseButton from \"./base/button.vue\";\nimport BaseCopy from \"./base/copy.vue\";\n\nconst props = defineProps<{\n secretKey: string;\n paymentObject: IPaymentObject;\n environment?: \"sandbox\" | \"prod\";\n onPaymentAuthorized?: (data: ISuccessObject) => void;\n onCancel?: () => void;\n}>();\n\nconst environment = props.environment ?? \"sandbox\";\n\n/** UI state */\nconst formIndex = ref(0);\nconst isMakingPayment = ref(false);\nconst isConfirmCall = ref(false);\nconst isPaymentConfirmed = ref(false);\n\nconst transactionReference = ref(\"\");\nconst paymentReferenceStatus = ref(\"\");\n\nconst isFetchingPaymentDetails = ref(false);\nconst paymentReferenceDetails = ref<IPaymentReferenceDetail | null>(null);\nconst paymentAccountDetails = ref<IPaymentAccountResponse | null>(null);\nconst paymentMade = ref(false);\n\nconst loading = ref(false);\nconst message = ref(\"\");\n\n/** Countdown */\nconst remainingSeconds = ref(60);\nconst countDownTime = ref(\"00:00\");\nconst intervalRef = ref<number | null>(null);\n\n/** Form + errors */\nconst transferForm = reactive<Record<string, string>>({\n customerName: \"\",\n});\n\nconst transferErrors = reactive<Record<string, string>>({});\n\nconst transferRules: Record<string, string> = {\n customerName: \"required\",\n};\n\nconst transferLabels: Record<string, string> = {\n customerName: \"Customer Name\",\n};\n\n/** Amount label */\nconst formatAmountHandler = computed(() =>\n formatAmount(props.paymentObject.amount, props.paymentObject.currency)\n);\n\n/** Actions */\nasync function payHandler() {\n if (formIndex.value === 0) {\n const errs = validateGroup(transferForm, transferRules, transferLabels);\n Object.assign(transferErrors, errs);\n\n if (Object.keys(errs).length === 0) {\n const payload = {\n paymentReference: transactionReference.value,\n channel: \"virtual_account\",\n customerName: transferForm.customerName ?? \"\",\n merchantId: props.secretKey,\n };\n isMakingPayment.value = true;\n\n try {\n const response = await generatePaymentAccount(environment, payload);\n if ((response as any)?.isSuccessful) {\n // some backends nest under data; keep flexible\n const data =\n (response as any).data?.data ?? (response as any).data ?? null;\n paymentAccountDetails.value = data as IPaymentAccountResponse;\n startTimer();\n message.value = \"Virtual account generated successfully for payment.\";\n isMakingPayment.value = true;\n formIndex.value = 1;\n } else {\n isMakingPayment.value = false;\n message.value =\n (response as any)?.responseMessage || \"Failed to generate account\";\n }\n } catch (err: any) {\n isMakingPayment.value = false;\n message.value =\n err?.error?.responseMessage || err?.error?.message || \"Error\";\n }\n }\n return;\n }\n}\n\nasync function getReferenceDetails() {\n isFetchingPaymentDetails.value = true;\n try {\n const response = await getPaymentReferenceDetails(\n environment,\n transactionReference.value\n );\n\n if (response?.isSuccessful) {\n const data =\n (response as any).data?.data ?? (response as any).data ?? null;\n paymentReferenceDetails.value = data as IPaymentReferenceDetail;\n\n const made =\n data?.paymentStatus === \"Payment Received\" ||\n data?.paymentStatus === \"Received\";\n paymentMade.value = made;\n\n const noServerStatus =\n data?.finalTransactionStatus == null || data?.paymentStatus == null;\n\n if (noServerStatus) {\n if (isConfirmCall.value) {\n message.value = \"Transaction not confirmed !!\";\n }\n\n if (!isPaymentConfirmed.value && !made) {\n paymentReferenceStatus.value = \"pending\";\n props.onPaymentAuthorized?.({\n paymentId: transactionReference.value,\n paymentDate: data?.updatedAt,\n paymentStatus: \"pending\",\n });\n } else {\n paymentReferenceStatus.value = \"confirmed\";\n props.onPaymentAuthorized?.({\n paymentId: transactionReference.value,\n paymentDate: data?.updatedAt,\n paymentStatus: \"confirmed\",\n });\n }\n } else if (\n data?.finalTransactionStatus === \"Success\" ||\n data?.paymentStatus === \"Received\" ||\n data?.paymentStatus === \"Payment Received\"\n ) {\n paymentReferenceStatus.value = \"confirmed\";\n isPaymentConfirmed.value = true;\n message.value = \"Transaction confirmed !!\";\n\n props.onPaymentAuthorized?.({\n paymentId: transactionReference.value,\n paymentDate: data?.updatedAt,\n paymentStatus: \"confirmed\",\n });\n }\n } else if (\n !response?.isSuccessful &&\n (response as any)?.responseCode === \"119\"\n ) {\n paymentReferenceStatus.value = \"used\";\n message.value = (response as any)?.responseMessage || \"\";\n props.onPaymentAuthorized?.({\n paymentId: transactionReference.value,\n paymentDate: null,\n paymentStatus: \"used\",\n });\n }\n } catch (err: any) {\n paymentReferenceStatus.value = \"\";\n message.value =\n err?.error?.responseMessage ||\n err?.error?.message ||\n \"Something went wrong\";\n } finally {\n isFetchingPaymentDetails.value = false;\n }\n}\n\nasync function generatePaymentLinkHandler() {\n if (!props.secretKey) {\n message.value = \"Secret key is required.\";\n return;\n }\n if (!checkObjectTruthy<IPaymentObject>(props.paymentObject)) {\n message.value = \"Kindly ensure you are passing all the required data.\";\n return;\n }\n\n loading.value = true;\n message.value = \"\";\n try {\n const response = await createPaymentLink(\n props.paymentObject,\n environment,\n props.secretKey\n );\n\n if (response?.isSuccessful && response.launchUrl) {\n const queryParams = getQueryParams(response.launchUrl);\n transactionReference.value = queryParams[\"paymentReference\"];\n message.value = \"Payment link created successfully\";\n } else {\n message.value = \"Failed to create payment link\";\n }\n } catch (e: any) {\n message.value = e?.message || \"Failed to create payment link\";\n } finally {\n loading.value = false;\n }\n}\n\n/** Timer utilities */\nfunction updateDisplay(secs: number) {\n const minutes = String(Math.floor(secs / 60)).padStart(2, \"0\");\n const seconds = String(secs % 60).padStart(2, \"0\");\n countDownTime.value = `${minutes}:${seconds}`;\n}\n\nfunction startTimer() {\n if (intervalRef.value) {\n clearInterval(intervalRef.value);\n intervalRef.value = null;\n }\n\n updateDisplay(remainingSeconds.value);\n\n intervalRef.value = window.setInterval(() => {\n const next = remainingSeconds.value - 1;\n if (next < 0) {\n if (intervalRef.value) {\n clearInterval(intervalRef.value);\n intervalRef.value = null;\n }\n countDownTime.value = \"00:00\";\n remainingSeconds.value = 0;\n return;\n }\n remainingSeconds.value = next;\n updateDisplay(next);\n }, 1000);\n}\n\nfunction stopTimer() {\n if (intervalRef.value) {\n clearInterval(intervalRef.value);\n intervalRef.value = null;\n }\n}\n\nonMounted(async () => {\n await generatePaymentLinkHandler();\n});\n</script>\n","<template>\n <svg\n :width=\"width\"\n :height=\"height\"\n viewBox=\"0 0 28 28\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n v-bind=\"attrs\"\n >\n <g clip-path=\"url(#clip0_10908_387048)\">\n <path\n d=\"M14 0C21.7324 0 28 6.26763 28 14C28 21.7324 21.7324 28 14 28C6.26763 28 0 21.7324 0 14C0 6.26763 6.26763 0 14 0ZM16.933 4.865C16.7195 4.76 16.506 4.865 16.4535 5.07762C16.4001 5.131 16.4001 5.18438 16.4001 5.29025V6.034L16.4089 6.125C16.4546 6.30501 16.5652 6.46177 16.7195 6.56512C20.8792 8.05262 23.0125 12.6726 21.4655 16.7615C20.6657 18.9928 18.9061 20.6911 16.7195 21.4883C16.506 21.5941 16.4001 21.7534 16.4001 22.0194V22.7631L16.4045 22.8401C16.4128 22.9241 16.4479 23.0033 16.5047 23.0658C16.5614 23.1284 16.6367 23.171 16.7195 23.1875C16.7729 23.1875 16.8796 23.1875 16.933 23.135C18.1331 22.7602 19.2473 22.1517 20.2113 21.3446C21.1753 20.5375 21.9701 19.5476 22.5499 18.432C23.1298 17.3164 23.4833 16.0972 23.59 14.8444C23.6967 13.5917 23.5546 12.3302 23.1718 11.1326C22.2128 8.10512 19.866 5.8205 16.933 4.865ZM11.2805 4.8125C11.2271 4.8125 11.1204 4.8125 11.067 4.865C9.86688 5.23978 8.75274 5.84826 7.78874 6.6554C6.82475 7.46254 6.02993 8.4524 5.45006 9.56797C4.87019 10.6836 4.51673 11.9028 4.41001 13.1556C4.30329 14.4083 4.44543 15.6698 4.82825 16.8674C5.78725 19.8424 8.08062 22.1261 11.067 23.0816C11.2805 23.1875 11.494 23.0816 11.5465 22.869C11.5999 22.8165 11.5999 22.7622 11.5999 22.6564V21.9126L11.5911 21.8426C11.5544 21.6947 11.417 21.5259 11.2805 21.4349C7.12075 19.9474 4.9875 15.3274 6.5345 11.2385C7.33425 9.00725 9.09388 7.30887 11.2805 6.51175C11.494 6.40587 11.5999 6.24663 11.5999 5.98063V5.23688L11.5955 5.15987C11.5872 5.07585 11.5521 4.99673 11.4954 4.93418C11.4386 4.87163 11.3633 4.82898 11.2805 4.8125ZM14.3736 7.574H13.573L13.496 7.581C13.321 7.616 13.1933 7.7665 13.146 7.99925V9.22075L12.9649 9.24875C11.4704 9.51475 10.5341 10.5464 10.5341 11.823C10.5341 13.5748 11.5999 14.2651 13.8399 14.5311C15.3335 14.7963 15.813 15.1156 15.813 15.9653C15.813 16.814 15.0666 17.3985 14.0534 17.3985C12.6665 17.3985 12.187 16.8149 12.0269 16.0177C11.9744 15.806 11.8134 15.6992 11.6532 15.6992H10.7467L10.6776 15.7054C10.5913 15.7193 10.513 15.7641 10.4572 15.8313C10.4014 15.8985 10.3718 15.9838 10.374 16.0711V16.1236L10.4029 16.2811C10.6566 17.5271 11.5106 18.4187 13.2003 18.6734V19.9483L13.2072 20.0252C13.2422 20.1985 13.3936 20.3263 13.6273 20.3726H14.427L14.504 20.3656C14.679 20.3306 14.8067 20.1801 14.854 19.9483V18.6725L15.0351 18.6375C16.534 18.3207 17.5201 17.2366 17.5201 15.8576C17.5201 13.9991 16.4001 13.3621 14.1601 13.0961C12.5598 12.8835 12.2404 12.4591 12.2404 11.7154C12.2404 10.9716 12.7741 10.4939 13.8399 10.4939C14.7998 10.4939 15.3335 10.8124 15.5995 11.6095C15.6272 11.6866 15.6779 11.7533 15.7447 11.8007C15.8115 11.8481 15.8912 11.8739 15.9731 11.8746H16.8262L16.8954 11.8694C16.982 11.8556 17.0606 11.8108 17.1166 11.7434C17.1726 11.6759 17.2022 11.5904 17.1999 11.5027V11.4503L17.1675 11.2989C17.0361 10.755 16.7366 10.2664 16.3115 9.90255C15.8864 9.53872 15.3574 9.31821 14.7997 9.27238V7.99925L14.7928 7.92225C14.7578 7.74812 14.6073 7.62038 14.3736 7.574Z\"\n :fill=\"color\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_10908_387048\">\n <rect width=\"28\" height=\"28\" :fill=\"color\" />\n </clipPath>\n </defs>\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from \"vue\";\n\ninterface IIconProps {\n width?: number | string;\n height?: number | string;\n color?: string;\n}\n\nconst props = withDefaults(defineProps<IIconProps>(), {\n width: 28,\n height: 28,\n color: \"currentColor\",\n});\n\nconst attrs = useAttrs();\nconst { width, height, color } = props;\n</script>\n","<template>\n <svg\n :width=\"width\"\n :height=\"height\"\n viewBox=\"0 0 28 28\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n v-bind=\"attrs\"\n >\n <g clip-path=\"url(#clip0_10908_387045)\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M14 28C6.26763 28 0 21.7324 0 14C0 6.26763 6.26763 0 14 0C21.7324 0 28 6.26763 28 14C28 21.7324 21.7324 28 14 28ZM15.6818 12.0689V9.99863H20.419V6.84162H7.52063V9.99863H12.2579V12.068C8.40787 12.2447 5.5125 13.0077 5.5125 13.9212C5.5125 14.8347 8.40787 15.5969 12.2579 15.7745V22.4088H15.6818V15.7727C19.5256 15.596 22.414 14.8339 22.414 13.9212C22.414 13.0086 19.5256 12.2465 15.6818 12.0689ZM15.6818 15.2101V15.2084C15.5855 15.2154 15.0894 15.2451 13.9825 15.2451C13.0987 15.2451 12.4766 15.2189 12.2579 15.2084V15.211C8.85587 15.0614 6.31662 14.469 6.31662 13.7602C6.31662 13.0524 8.85587 12.46 12.2579 12.3077V14.6212C12.4801 14.637 13.1171 14.6746 13.9974 14.6746C15.0535 14.6746 15.5829 14.6309 15.6818 14.6221V12.3095C19.0768 12.4609 21.6099 13.0532 21.6099 13.7602C21.6099 14.469 19.0768 15.0596 15.6818 15.2101Z\"\n :fill=\"color\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_10908_387045\">\n <rect width=\"28\" height=\"28\" :fill=\"color\" />\n </clipPath>\n </defs>\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from \"vue\";\n\ninterface IIconProps {\n width?: number | string;\n height?: number | string;\n color?: string;\n}\n\nconst props = withDefaults(defineProps<IIconProps>(), {\n width: 28,\n height: 28,\n color: \"currentColor\",\n});\n\nconst attrs = useAttrs();\nconst { width, height, color } = props;\n</script>\n","<template>\n <p v-if=\"cur !== 'USDT' && cur !== 'USDC'\" :class=\"textClass\">\n {{ formatAmount(amount, cur) }}\n </p>\n <div v-else class=\"flex items-center gap-1\">\n <IconUsdt\n v-if=\"cur === 'USDT'\"\n :width=\"iconWidth\"\n :height=\"iconHeight\"\n :color=\"iconColorClass\"\n />\n <IconUsdc\n v-if=\"cur === 'USDC'\"\n :width=\"iconWidth\"\n :height=\"iconHeight\"\n :color=\"iconColorClass\"\n />\n <p :class=\"textClass\">{{ formatAmount(amount) }}</p>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { formatAmount } from \"../../utils\";\nimport IconUsdc from \"../icons/icon-usdc.vue\";\nimport IconUsdt from \"../icons/icon-usdt.vue\";\n\ninterface IBaseCurrencyAmountProps {\n currency: string;\n amount: number | string;\n textClass?: string;\n iconColorClass?: string;\n iconWidth?: number | string;\n iconHeight?: number | string;\n}\n\nconst props = withDefaults(defineProps<IBaseCurrencyAmountProps>(), {\n textClass: \"\",\n iconColorClass: \"\",\n iconWidth: 16,\n iconHeight: 16,\n});\n\nconst cur = computed(() => props.currency?.toUpperCase());\n</script>\n","<template>\n <svg\n :width=\"width\"\n :height=\"height\"\n viewBox=\"0 0 16 17\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n v-bind=\"attrs\"\n >\n <path\n d=\"M10.3265 14.1948C10.1998 14.1948 10.0731 14.1481 9.97313 14.0481C9.77979 13.8548 9.77979 13.5348 9.97313 13.3414L13.3131 10.0014C13.5065 9.80811 13.8265 9.80811 14.0198 10.0014C14.2131 10.1948 14.2131 10.5148 14.0198 10.7081L10.6798 14.0481C10.5798 14.1414 10.4531 14.1948 10.3265 14.1948Z\"\n :fill=\"color\"\n />\n <path\n d=\"M13.6668 10.8477H2.3335C2.06016 10.8477 1.8335 10.621 1.8335 10.3477C1.8335 10.0743 2.06016 9.84766 2.3335 9.84766H13.6668C13.9402 9.84766 14.1668 10.0743 14.1668 10.3477C14.1668 10.621 13.9402 10.8477 13.6668 10.8477Z\"\n :fill=\"color\"\n />\n <path\n d=\"M2.33329 6.86079C2.20663 6.86079 2.07996 6.81413 1.97996 6.71413C1.78663 6.52079 1.78663 6.20079 1.97996 6.00746L5.31996 2.66746C5.51329 2.47413 5.83329 2.47413 6.02663 2.66746C6.21996 2.86079 6.21996 3.18079 6.02663 3.37413L2.68663 6.71413C2.59329 6.80746 2.45996 6.86079 2.33329 6.86079Z\"\n :fill=\"color\"\n />\n <path\n d=\"M13.6668 6.86133H2.3335C2.06016 6.86133 1.8335 6.63466 1.8335 6.36133C1.8335 6.08799 2.06016 5.86133 2.3335 5.86133H13.6668C13.9402 5.86133 14.1668 6.08799 14.1668 6.36133C14.1668 6.63466 13.9402 6.86133 13.6668 6.86133Z\"\n :fill=\"color\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from \"vue\";\n\ninterface IIconProps {\n width?: number | string;\n height?: number | string;\n color?: string;\n}\n\nconst props = withDefaults(defineProps<IIconProps>(), {\n width: 16,\n height: 17,\n color: \"currentColor\",\n});\n\nconst attrs = useAttrs();\nconst { width, height, color } = props;\n</script>\n","<!-- PayByStableCoin.vue -->\n<template>\n <div class=\"flex flex-col gap-6\">\n <!-- Step 0: choose coin + network -->\n <template v-if=\"formIndex === 0\">\n <div class=\"grid grid-cols-1 gap-6\">\n <BaseSelect\n label=\"Select Crypto\"\n required\n :options=\"stableCoins\"\n :loading=\"loadingStableCoins\"\n :value=\"stableCoinForm.stableCoin\"\n :onChange=\"(e: string) => {\n stableCoinForm.stableCoin = e\n getAllStableCoinNetworks(e)\n if (stableCoinErrors.stableCoin) stableCoinErrors.stableCoin = ''\n }\"\n :validationError=\"stableCoinErrors.stableCoin ?? ''\"\n />\n\n <BaseSelect\n label=\"Select Network\"\n required\n :options=\"networkList\"\n :loading=\"loadingStableCoinNetworks\"\n :value=\"stableCoinForm.network\"\n :onChange=\"(e: string) => {\n stableCoinForm.network = e\n if (stableCoinErrors.network) stableCoinErrors.network = ''\n }\"\n :validationError=\"stableCoinErrors.network ?? ''\"\n />\n </div>\n\n <BaseButton\n :label=\"`Pay ${formatAmountHandler}`\"\n type=\"primary\"\n customClass=\"w-full\"\n :loading=\"generatingAddress\"\n :onClick=\"payHandler\"\n />\n </template>\n\n <!-- Step 1: show deposit details + confirm -->\n <div v-else class=\"flex flex-col gap-6\">\n <div class=\"mx-auto\">\n <!-- Optional QR image slot (host can provide) -->\n <p class=\"mb-0 text-body-4xs text-light-copy font-normal text-center\">\n {{ generateAddressPayload?.currency }}\n </p>\n </div>\n\n <div\n class=\"flex flex-col gap-6 border-c border-grey-100 p-4 rounded-2xl bg-light-white-50\"\n >\n <div class=\"border-b border-grey-border pb-4 flex flex-col gap-2\">\n <p class=\"mb-0 text-body-3xs text-light-copy font-normal\">Network</p>\n\n <div class=\"flex justify-between\">\n <div class=\"flex flex-col gap-1\">\n <p class=\"mb-0 text-body-2xs font-medium text-sub-copy\">\n {{ addressDetails?.chain }}\n </p>\n\n <div class=\"flex items-center gap-2\">\n <p class=\"mb-0 text-body-3xs text-light-copy font-normal\">\n *Est. arrival = 3 mins\n </p>\n <p class=\"mb-0 text-body-3xs text-light-copy font-normal\">|</p>\n\n <BaseCurrencyAmount\n :currency=\"generateAddressPayload?.currency ?? ''\"\n :amount=\"addressDetails?.networkFee ?? 0\"\n textClass=\"mb-0 text-body-3xs text-light-copy font-normal\"\n iconColorClass=\"#557591\"\n :iconWidth=\"12\"\n :iconHeight=\"12\"\n />\n </div>\n </div>\n\n <!-- Assume globally registered -->\n <IconArrowSwap />\n </div>\n </div>\n\n <div class=\"pb-4 flex flex-col gap-2\">\n <p class=\"mb-0 text-body-3xs text-light-copy font-normal\">\n Deposit Address >\n </p>\n\n <div class=\"flex justify-between\">\n <p\n class=\"mb-0 text-body-2xs font-medium text-sub-copy w-2/3 break-words\"\n >\n {{ addressDetails?.walletAddress }}\n </p>\n\n <BaseCopy :copyText=\"addressDetails?.walletAddress ?? ''\" />\n </div>\n </div>\n </div>\n\n <div class=\"flex flex-col gap-2\">\n <div\n class=\"flex items-center justify-between border-b border-grey-border py-3\"\n >\n <p class=\"mb-0 text-body-2xs font-medium text-primary-black\">\n Network fee\n </p>\n <BaseCurrencyAmount\n :currency=\"generateAddressPayload?.currency ?? ''\"\n :amount=\"addressDetails?.networkFee ?? 0\"\n textClass=\"mb-0 text-body-2xs font-extrabold text-primary-black\"\n iconColorClass=\"#231F20\"\n />\n </div>\n\n <div class=\"flex items-center justify-between py-4\">\n <p class=\"mb-0 text-body-lg font-semibold text-primary-black\">Pay</p>\n <BaseCurrencyAmount\n :currency=\"generateAddressPayload?.currency ?? ''\"\n :amount=\"amountPlusNetworkFee\"\n textClass=\"mb-0 text-body-lg font-extrabold text-primary-black\"\n iconColorClass=\"#231F20\"\n :iconWidth=\"20\"\n :iconHeight=\"20\"\n />\n </div>\n </div>\n\n <div class=\"flex flex-col gap-6\">\n <BaseButton\n label=\"Confirm Payment\"\n type=\"primary\"\n customClass=\"w-full\"\n :loading=\"isConfirmingPayment\"\n :onClick=\"confirmPaymentHandler\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, reactive, ref } from \"vue\";\nimport {\n IGenerateStableCoinAddress,\n IGenerateStableCoinAddressResponse,\n IPaymentObject,\n IPaymentReferenceDetail,\n ISuccessObject,\n} from \"../types/checkout.type\";\nimport { ISelectOption } from \"../types/resource.type\";\nimport {\n checkObjectTruthy,\n formatAmount,\n getQueryParams,\n validateGroup,\n} from \"../utils\";\nimport {\n createPaymentLink,\n generateStableCoinAddress,\n getPaymentReferenceDetails,\n getStableCoinNetworks,\n getStableCoins,\n} from \"../apis\";\nimport BaseSelect from \"./base/select.vue\";\nimport BaseCurrencyAmount from \"./base/currency-amount.vue\";\nimport BaseButton from \"./base/button.vue\";\nimport BaseCopy from \"./base/copy.vue\";\nimport IconArrowSwap from \"./icons/icon-arrow-swap.vue\";\n\nconst props = defineProps<{\n secretKey: string;\n paymentObject: IPaymentObject;\n environment?: \"sandbox\" | \"prod\";\n onPaymentAuthorized?: (data: ISuccessObject) => void;\n}>();\n\nconst environment = props.environment ?? \"sandbox\";\n\n/** Local state */\nconst formIndex = ref<number>(0);\nconst message = ref(\"\");\nconst loading = ref(false);\n\nconst generatingAddress = ref(false);\nconst loadingStableCoins = ref(false);\nconst loadingStableCoinNetworks = ref(false);\n\nconst transactionReference = ref(\"\");\nconst stableCoins = ref<ISelectOption[]>([]);\nconst networkList = ref<ISelectOption[]>([]);\n\nconst addressDetails = ref<IGenerateStableCoinAddressResponse | null>(null);\nconst generateAddressPayload = ref<IGenerateStableCoinAddress | null>(null);\n\nconst isConfirmingPayment = ref(false);\nconst paymentReferenceDetails = ref<IPaymentReferenceDetail | null>(null);\nconst paymentReferenceStatus = ref<string>(\"\");\n\n/** Form + errors */\nconst stableCoinForm = reactive<Record<string, string>>({\n stableCoin: \"\",\n network: \"\",\n});\nconst stableCoinErrors = reactive<Record<string, string>>({});\n\n/** Rules & labels */\nconst stableCoinRules: Record<string, string> = {\n stableCoin: \"required\",\n network: \"required\",\n};\nconst stableCoinLabels: Record<string, string> = {\n stableCoin: \"Stable Coin\",\n network: \"Network\",\n};\n\n/** Format amount text */\nconst formatAmountHandler = computed(() =>\n formatAmount(props.paymentObject.amount, props.paymentObject.currency)\n);\n\n/** Derived */\nconst amountPlusNetworkFee = computed(() => {\n if (!addressDetails.value) return 0;\n const base = Number(addressDetails.value.transactionAmount) || 0;\n return base + (addressDetails.value.networkFee || 0);\n});\n\n/** Data fetching */\nasync function generatePaymentLinkHandler() {\n if (!props.secretKey) {\n message.value = \"Secret key is required.\";\n return;\n }\n if (!checkObjectTruthy<IPaymentObject>(props.paymentObject)) {\n message.value = \"Kindly ensure you are passing all the required data.\";\n return;\n }\n\n loading.value = true;\n message.value = \"\";\n try {\n const response = await createPaymentLink(\n props.paymentObject,\n environment,\n props.secretKey\n );\n\n if (response?.isSuccessful && response.launchUrl) {\n const queryParams = getQueryParams(response.launchUrl);\n transactionReference.value = queryParams[\"paymentReference\"];\n message.value = \"Payment link created successfully\";\n } else {\n message.value = \"Failed to create payment link\";\n }\n } catch (e: any) {\n message.value = e?.message || \"Failed to create payment link\";\n } finally {\n loading.value = false;\n }\n}\n\nasync function generateAddress(payload: IGenerateStableCoinAddress) {\n if (!payload) return;\n generatingAddress.value = true;\n try {\n const response = await generateStableCoinAddress(environment, payload);\n if (response?.isSuccessful) {\n addressDetails.value = (response as any).data;\n formIndex.value = 1;\n } else {\n message.value =\n (response as any)?.responseMessage || \"Failed to generate address\";\n }\n } catch (e: any) {\n message.value = e?.message || \"Failed to generate address\";\n } finally {\n generatingAddress.value = false;\n }\n}\n\nasync function getAllStableCoins() {\n loadingStableCoins.value = true;\n try {\n const response = await getStableCoins(environment);\n if (response?.isSuccessful) {\n stableCoins.value =\n (response.data ?? []).map((c: { name: string }) => ({\n label: c.name,\n value: c.name,\n })) ?? [];\n }\n } catch (e: any) {\n message.value = e?.message || \"Failed to get stable coins\";\n } finally {\n loadingStableCoins.value = false;\n }\n}\n\nasync function getAllStableCoinNetworks(stableCoin: string) {\n loadingStableCoinNetworks.value = true;\n try {\n const response = await getStableCoinNetworks(environment, stableCoin);\n if (response?.isSuccessful) {\n const nets = (response as any).networks ?? response.data?.networks ?? [];\n networkList.value = (nets ?? []).map((n: string) => ({\n label: n,\n value: n,\n }));\n }\n } catch (e: any) {\n message.value = e?.message || \"Failed to get stable coin networks\";\n } finally {\n loadingStableCoinNetworks.value = false;\n }\n}\n\n/** Confirm payment */\nasync function confirmPaymentHandler(): Promise<void> {\n isConfirmingPayment.value = true;\n try {\n const response = await getPaymentReferenceDetails(\n environment,\n transactionReference.value\n );\n\n if (response?.isSuccessful) {\n const data = (response as any).data;\n paymentReferenceDetails.value = data;\n\n const needsConfirm =\n data?.finalTransactionStatus == null || data?.paymentStatus == null;\n\n if (needsConfirm) {\n message.value = \"Transaction not confirmed !!\";\n paymentReferenceStatus.value = \"pending\";\n props.onPaymentAuthorized?.({\n paymentId: transactionReference.value,\n paymentDate: data?.updatedAt ?? \"\",\n paymentStatus: \"pending\",\n });\n } else if (\n data?.finalTransactionStatus === \"Success\" ||\n data?.paymentStatus === \"Payment Received\"\n ) {\n message.value = \"Transaction confirmed !!\";\n paymentReferenceStatus.value = \"confirmed\";\n props.onPaymentAuthorized?.({\n paymentId: transactionReference.value,\n paymentDate: data?.updatedAt,\n paymentStatus: \"confirmed\",\n });\n }\n } else if (\n !response?.isSuccessful &&\n (response as any)?.responseCode === \"119\"\n ) {\n paymentReferenceStatus.value = \"used\";\n message.value = (response as any)?.responseMessage || \"\";\n props.onPaymentAuthorized?.({\n paymentId: transactionReference.value,\n paymentDate: null,\n paymentStatus: \"used\",\n });\n }\n } catch (err: any) {\n paymentReferenceStatus.value = \"\";\n message.value =\n err?.error?.responseMessage ||\n err?.error?.message ||\n \"Something went wrong\";\n } finally {\n isConfirmingPayment.value = false;\n }\n}\n\n/** Primary action */\nasync function payHandler() {\n const errs = validateGroup(stableCoinForm, stableCoinRules, stableCoinLabels);\n Object.assign(stableCoinErrors, errs);\n if (Object.keys(errs).length === 0) {\n const payload: IGenerateStableCoinAddress = {\n paymentReference: transactionReference.value,\n currency: stableCoinForm.stableCoin,\n chain: stableCoinForm.network,\n transactionAmount: props.paymentObject.amount,\n merchantId: props.secretKey,\n };\n generateAddressPayload.value = payload;\n await generateAddress(payload);\n }\n}\n\nonMounted(async () => {\n await generatePaymentLinkHandler();\n await getAllStableCoins();\n});\n</script>\n","<template>\n <svg\n :width=\"width\"\n :height=\"height\"\n viewBox=\"0 0 67 67\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n v-bind=\"attrs\"\n >\n <path\n d=\"M33.6705 0.0820312C15.2758 0.0820312 0.36377 14.9941 0.36377 33.3888C0.36377 51.7846 15.2758 66.6956 33.6705 66.6956C52.0663 66.6956 66.9773 51.7846 66.9773 33.3888C66.9773 14.9941 52.0663 0.0820312 33.6705 0.0820312ZM33.6705 62.5978C17.6011 62.5978 4.52712 49.4583 4.52712 33.3887C4.52712 17.3192 17.6011 4.24525 33.6705 4.24525C49.74 4.24525 62.814 17.3193 62.814 33.3887C62.814 49.4581 49.74 62.5978 33.6705 62.5978ZM46.9631 21.2016L27.4213 40.8662L18.621 32.0659C17.8081 31.253 16.4904 31.253 15.6765 32.0659C14.8636 32.8788 14.8636 34.1965 15.6765 35.0094L25.9797 45.3137C26.7926 46.1255 28.1103 46.1255 28.9243 45.3137C29.0179 45.22 29.0981 45.1179 29.171 45.0118L49.9086 24.1461C50.7205 23.3332 50.7205 22.0155 49.9086 21.2016C49.0947 20.3888 47.777 20.3888 46.9631 21.2016Z\"\n :fill=\"color\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from \"vue\";\n\ninterface IIconProps {\n width?: number | string;\n height?: number | string;\n color?: string;\n}\n\nconst props = withDefaults(defineProps<IIconProps>(), {\n width: 67,\n height: 67,\n color: \"currentColor\",\n});\n\nconst attrs = useAttrs();\nconst { width, height, color } = props;\n</script>\n","<template>\n <div class=\"flex flex-col gap-8 p-16\">\n <div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col gap-8\">\n <IconCheckCircle color=\"#F47A1F\" class=\"mx-auto\" />\n\n <div class=\"flex flex-col text-center\" style=\"gap: 2px\">\n <p class=\"text-heading-text font-medium text-header-2xl\">₦2,500.00</p>\n <p class=\"text-sub-copy font-regular text-body-3xs\">\n Has been paid successfully\n </p>\n </div>\n </div>\n\n <div class=\"flex flex-col\">\n <div class=\"py-4 border-b border-grey-100\">\n <BaseLabelInfo\n type=\"horizontal\"\n label=\"Order ID\"\n value=\"9900009000-8890-8829hd7\"\n />\n </div>\n\n <div class=\"py-4\">\n <BaseLabelInfo\n type=\"horizontal\"\n label=\"Payment date\"\n value=\"July 24, 2025\"\n />\n </div>\n </div>\n </div>\n\n <div class=\"mx-auto\" style=\"width: 80%\">\n <BaseButton\n label=\"Return to Merchant Website\"\n type=\"secondary\"\n customClass=\"w-full\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport BaseButton from \"./button.vue\";\nimport BaseLabelInfo from \"./label-info.vue\";\nimport IconCheckCircle from \"../icons/icon-check-circle.vue\";\n\ninterface IBaseSuccessProps {}\n\ndefineProps<IBaseSuccessProps>();\n</script>\n","<!-- BzpCheckoutCard.vue -->\n<template>\n <BaseCard>\n <div class=\"grid grid-cols-3\">\n <div\n v-if=\"checkoutState === 'PENDING'\"\n class=\"bg-[#EFF7FF] px-6 py-8 flex flex-col gap-5 col-span-1 rounded-l-xl\"\n >\n <p class=\"text-heading-text text-body-xs font-semibold\">Pay with</p>\n <BaseRadioGroup\n :options=\"filteredPaymentTypeOptions\"\n @selectedChange=\"(e: string) => paymentTypeHandler(e)\"\n />\n </div>\n\n <div :class=\"checkoutState === 'SUCCESS' ? 'col-span-3' : 'col-span-2'\">\n <div\n v-if=\"checkoutState === 'PENDING'\"\n class=\"flex items-center justify-between px-12 py-8\"\n >\n <BaseImage\n v-if=\"options?.imageUrl\"\n :src=\"options?.imageUrl ?? ''\"\n alt=\"Merchant Logo\"\n :width=\"52\"\n :height=\"52\"\n customClass=\"rounded-lg\"\n />\n <div\n v-else\n class=\"bg-heading-text rounded flex flex-col justify-center\"\n :style=\"{ width: '52px', height: '52px' }\"\n >\n <p class=\"text-white text-center text-body-2xs font-medium\">Logo</p>\n </div>\n\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-body-2xs font-regular text-sub-copy text-right\">\n {{ paymentObject.merchantName }}\n </p>\n <p class=\"text-body-2xs font-regular text-sub-copy text-right\">\n Pay:\n <span class=\"text-orange-500 font-extrabold\">\n {{ formatAmount(paymentObject.amount, paymentObject.currency) }}\n </span>\n </p>\n </div>\n </div>\n\n <div\n v-if=\"checkoutState === 'PENDING'\"\n class=\"overflow-y-scroll px-10 pb-10 pt-2\"\n >\n <PayByCard\n v-if=\"paymentType === 'CARD'\"\n :secretKey=\"secretKey\"\n :environment=\"environment\"\n :paymentObject=\"paymentObject\"\n :onPaymentAuthorized=\"setSuccess\"\n />\n <PayByTransfer\n v-else-if=\"paymentType === 'BANK_TRANSFER'\"\n :secretKey=\"secretKey\"\n :environment=\"environment\"\n :paymentObject=\"paymentObject\"\n :onPaymentAuthorized=\"setSuccess\"\n />\n <PayByStableCoin\n v-else\n :secretKey=\"secretKey\"\n :environment=\"environment\"\n :paymentObject=\"paymentObject\"\n :onPaymentAuthorized=\"setSuccess\"\n />\n </div>\n\n <BaseSuccess\n v-if=\"checkoutState === 'SUCCESS'\"\n :amount=\"paymentObject.amount\"\n :currency=\"paymentObject.currency\"\n :redirectUrl=\"paymentObject.redirectUrl\"\n :successObject=\"successObject\"\n />\n </div>\n </div>\n </BaseCard>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch } from \"vue\";\nimport { IPaymentObject, ISuccessObject } from \"../types/checkout.type\";\nimport { ISelectOption } from \"../types/resource.type\";\nimport { formatAmount } from \"../utils\";\nimport BaseCard from \"../components/base/card.vue\";\nimport BaseRadioGroup from \"../components/base/radio-group.vue\";\nimport BaseImage from \"../components/base/image.vue\";\nimport PayByCard from \"../components/pay-by-card.vue\";\nimport PayByTransfer from \"../components/pay-by-transfer.vue\";\nimport PayByStableCoin from \"../components/pay-by-stable-coin.vue\";\nimport BaseSuccess from \"../components/base/success.vue\";\n\nexport interface CheckoutIframeStyle {\n [cssProp: string]: string | number;\n}\n\nexport interface CheckoutCardOptions {\n imageUrl?: string;\n numberPlaceholder?: string;\n expiryPlaceholder?: string;\n cvcPlaceholder?: string;\n styles?: {\n base?: CheckoutIframeStyle;\n invalid?: CheckoutIframeStyle;\n focus?: CheckoutIframeStyle;\n };\n}\n\nconst props = defineProps<{\n secretKey: string;\n environment?: \"sandbox\" | \"prod\";\n paymentObject?: IPaymentObject;\n options?: CheckoutCardOptions;\n}>();\n\nconst environment = props.environment ?? \"sandbox\";\nconst paymentObject = props.paymentObject ?? {\n merchantName: \"\",\n amount: 0,\n currency: \"\",\n email: \"\",\n phoneNumber: \"\",\n narration: \"\",\n redirectUrl: \"\",\n};\n\nconst checkoutState = ref<\"SUCCESS\" | \"PENDING\" | \"USED\">(\"PENDING\");\n\nconst paymentTypeOptions = ref<ISelectOption[]>([\n { label: \"Card\", value: \"CARD\" },\n { label: \"Bank Transfer\", value: \"BANK_TRANSFER\" },\n { label: \"Stable Coin\", value: \"STABLE_COIN\" },\n]);\n\nconst filteredPaymentTypeOptions = ref<ISelectOption[]>([]);\nconst paymentType = ref<string>(\"\");\n\nconst successObject = ref<ISuccessObject>({\n paymentDate: \"\",\n paymentId: \"\",\n paymentStatus: \"\",\n});\n\nfunction paymentTypeHandler(event: string): void {\n paymentType.value = event;\n}\n\nfunction setSuccess(event: ISuccessObject): void {\n successObject.value = { ...event };\n if (event.paymentStatus === \"Authorized\") {\n checkoutState.value = \"SUCCESS\";\n } else if (event.paymentStatus === \"Payment failed\") {\n checkoutState.value = \"PENDING\";\n } else if (event.paymentStatus === \"used\") {\n checkoutState.value = \"USED\";\n } else {\n checkoutState.value = \"PENDING\";\n }\n}\n\n// Update available payment types whenever currency changes\nwatch(\n () => paymentObject.currency,\n (curr) => {\n let options: ISelectOption[] = [];\n if (curr === \"USD\") {\n options = paymentTypeOptions.value.filter(\n (o) => o.value !== \"BANK_TRANSFER\"\n );\n } else {\n options = paymentTypeOptions.value.filter(\n (o) => o.value !== \"STABLE_COIN\"\n );\n }\n filteredPaymentTypeOptions.value = options;\n },\n { immediate: true }\n);\n\n// Default to the first available payment type\nwatch(\n () => filteredPaymentTypeOptions.value,\n (opts) => {\n if (opts.length) {\n paymentType.value = opts[0].value;\n }\n },\n { immediate: true }\n);\n\n// Expose for template\nconst secretKey = props.secretKey;\nconst options = props.options;\n</script>\n"],"names":["ConfigKey","createMidenPG","config","app","useMidenPG","cfg","inject","checkObjectTruthy","obj","getQueryParams","url","params","value","key","getBaseUrl","mode","currencySign","currency","formatAmount","num","truncateString","str","restrictToNumericKeys","event","allowedKeys","validateRegex","regex","parseRules","rules","chunk","rule","val","getValidationErrorMessage","rulesStr","inputValue","label","errors","lowerLabel","v","hasNum","r","validateGroup","values","rulesMap","prettyLabels","out","field","err","CardSchemes","VISA_RE","MC_RE","AMEX_RE","DISCOVER_RE","JCB_RE","DINERS_RE","MAESTRO_RE","UNIONPAY_RE","UATP_RE","VERVE_BIN6_RANGES","VERVE_BIN6_SINGLES","PAYPAK_BIN6","JAYWAN_BIN7","MADA_ONLY_BIN6","MADA_VISA_BIN6","MADA_MC_BIN6","UNIONPAY_3DS_BIN6","UNIONPAY_NON3DS_BIN6","cardTypeHandler","cardNumber","scheme","detect","digits","bin6","isVerve","bin7","length","start","end","props","__props","attrs","useAttrs","size","color","className","_openBlock","_createElementBlock","_mergeProps","_unref","_createElementVNode","emit","__emit","isDisabled","computed","handleClick","getButtonBgClass","type","disabled","getButtonSizeClass","getLabelSizeClass","_normalizeClass","paddingClassX","customClass","_renderSlot","_ctx","loading","_createBlock","IconLoader","_hoisted_2","_hoisted_1","_toDisplayString","errorMessage","createPaymentLink","paymentObject","environment","secretKey","baseUrl","authorizeCardPayment","merchantId","rest","generatePaymentAccount","getPaymentReferenceDetails","paymentReference","generateStableCoinAddress","resolvedStyle","containerRef","ref","iframeRef","message","destroyIframe","launchIframe","iframe","s","_a","generatePaymentLinkHandler","response","e","onMounted","watch","newUrl","onBeforeUnmount","_createVNode","launchUrl","CheckoutIframe","BaseButton","BaseInputError","width","height","$emit","IconChevronLeft","_cache","showBackButton","BaseBack","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","IconBuzapayIcon","isControlled","internal","initial","selected","setSelected","containerLayout","options","_Fragment","_renderList","opt","$event","src","alt","isFullWidth","_normalizeStyle","__viteBrowserExternal","root","factory","module","this","CryptoJS","Math","undefined","crypto","global","require","require$$0","cryptoSecureRandomInt","create","F","subtype","C","C_lib","Base","overrides","instance","properties","propertyName","WordArray","words","sigBytes","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","i","thatByte","j","clone","nBytes","C_enc","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","utf8Str","BufferedBlockAlgorithm","data","doFlush","processedWords","dataWords","dataSigBytes","blockSize","blockSizeBytes","nBlocksReady","nWordsReady","nBytesReady","offset","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","a","b","c","d","FF","GG","HH","II","nBitsTotal","nBitsLeft","nBitsTotalH","nBitsTotalL","H_i","x","t","n","W","SHA1","K","isPrime","sqrtN","factor","getFractionalBits","nPrime","SHA256","f","g","h","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","el","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","y","newX","newY","LFSR","roundConstantMsw","roundConstantLsw","bitPosition","SHA3","state","nBlockSizeLanes","M2i","M2i1","lane","round","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","ar","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","padding","modeCreator","CipherParams","cipherParams","formatter","C_format","OpenSSLFormatter","openSSLStr","ciphertextWords","encryptor","cipherCfg","plaintext","format","C_kdf","OpenSSLKdf","ivSize","derivedParams","CFB","generateKeystreamAndEncrypt","keystream","CTR","Encryptor","counter","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","left","right","Xl","Xr","temp","BlowFish_Decrypt","BlowFishInit","keysize","Row","Col","keyIndex","index","Data1","Data2","res","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","encryptPayload","formData","merchId","first16Key","last16Iv","postDataObj","decryptPayload","payload","decryptedText","getCountries","getCountryStates","countryIso3","getStableCoins","getStableCoinNetworks","stableCoin","isString","isObject","_obj$constructor","pick","keys","_","k","acc","_ref","DIRECTION","forceDirection","direction","escapeRegExp","objectIncludes","arrA","arrB","dateA","dateB","regexpA","regexpB","ActionDetails","opts","IMask","maskedClass","normalizeOpts","instanceOpts","_mask","createMask","nOpts","MaskedClass","MaskElement","KEY_Z","KEY_Y","HTMLMaskElement","_this$input$getRootNo","_this$input$getRootNo2","_this$input","handlers","HTMLInputMaskElement","HTMLContenteditableMaskElement","selection","anchorOffset","focusOffset","range","InputHistory","steps","InputMask","_this$masked","masked","ev","listeners","l","pos","cursorPos","newUnmaskedValue","newValue","newRawInputValue","newDisplayValue","isChanged","restOpts","updateMask","updateOpts","handler","hIndex","details","oldRawValue","removeDirection","ChangeDetails","prep","ContinuousTailDetails","from","stop","tail","beforePos","shiftChar","Masked","flags","fromPos","toPos","checkTail","consistentState","noFixState","fixDetails","chDetails","consistentTail","appended","beforeTailState","tailDetails","ci","fn","rawInput","ret","deleteCount","inserted","tailPos","eagerRemove","startChangePos","valLength","tval","ChunksTailDetails","chunks","tailChunk","lastChunk","extendLast","firstTailChunk","lastBlockIter","chunkBlock","remainChars","cstate","chunkShiftPos","PatternCursor","_this$block","PatternFixedDefinition","minPos","maxPos","appendEager","isResolved","PatternInputDefinition","parent","isOptional","placeholderChar","displayChar","lazy","eager","maskOpts","boundPos","_flags$_beforeTailSta","MaskedRegExp","MaskedPattern","defs","pattern","unmaskingBlock","optionalBlock","p","bNames","bName","expose","repeat","bOpts","blockOpts","maskedBlock","char","isInput","def","_blocks","maskedState","bi","unmaskedValue","_this$_mapPosToBlock","startBlockIndex","blockIter","blockDetails","chunkTail","bFromPos","bToPos","blockChunk","stopBefore","si","toBlockIndex","startBlockIter","endBlockIndex","_blocks2","accVal","blockStartPos","fromBlockIter","toBlockIter","isSameBlock","fromBlockStartPos","fromBlockEndPos","removeDetails","cursor","total","name","indices","gi","MaskedRange","to","maxLength","autofix","patternOpts","fromStr","toStr","sameCharsCount","minstr","maxstr","placeholder","padLength","DefaultPattern","MaskedDate","blocks","patternBlocks","date","day","month","year","MaskedDynamic","m","prevValueBeforeTail","insertValue","tailValue","prevMask","prevMaskState","_flags$_beforeTailSta2","currentDetails","_this$currentMask","typedValue","_this$currentMask2","_this$currentMask3","_this$currentMask4","compiledMasks","currentMaskRef","currentMask","mi","overwrite","skipInvalid","oldMask","_this$currentMask5","inputs","isCurrent","startInputPos","MaskedEnum","enum_","eopts","lengths","requiredLength","optionalLength","matchFrom","matches","mch","estr","istr","MaskedFunction","_MaskedNumber","MaskedNumber","mid","parts","prepCh","extendOnSeparators","count","slice","prevBeforeTailValue","prevBeforeTailSeparatorsCount","oldValue","accepted","skip","fixedNum","appendDetails","beforeTailValue","beforeTailSeparatorsCount","searchFrom","separatorPos","separatorAroundFromPos","separatorAroundToPos","valueBeforePos","valueAfterPos","separatorAtLeftPos","separatorAtLeftEndPos","separatorAtRightPos","number","validnum","formatted","match","sign","zeros","dropFractional","PIPE_TYPE","createPipe","arg","pipe","RepeatBlock","_ref2","_ref3","_ref4","_this$_blocks","_this$_mapPosToBlock$","allocated","_this$_blocks$bi","_this$_mapPosToBlock2","_this$_mapPosToBlock3","firstBlockIndex","lastBlockIndex","removeCount","rawValue","localHint","localError","inputEl","imaskInstance","formattedValue","handleInput","incoming","nextTick","target","len","handleBlur","handleKeyDown","containerBg","containerBorder","copyToClipboard","text","copyHandler","maskOptions","next","required","isAmountInput","showCopyIcon","BaseImage","hint","validationError","open","internalValue","filtered","activeIndex","triggerRef","menuRef","searchRef","o","displayText","openMenu","idx","closeMenu","toggleMenu","onDocMouseDown","tri","menu","commit","onSearchInput","q","list","onTriggerKeyDown","onMenuKeyDown","moveActive","scrollActiveIntoView","delta","max","items","hasSearch","itemImageType","toRefs","_createTextVNode","IconChevronUp","IconChevronDown","_hoisted_8","_hoisted_11","BaseHint","formIndex","isMakingPayment","cardType","transactionReference","loadingCountries","loadingStates","rawCountries","countries","countryStates","billingForm","reactive","payForm","billingErrors","payErrors","billingRules","payRules","billingLabels","payLabels","formatAmountHandler","proceedHandler","errs","cardDetails","billingDetails","encryptedCardDetails","request","_b","_c","_d","_e","threeDsData","_f","_g","_h","_i","_j","threeDsUrl","_k","_l","_m","_n","_o","_p","_r","_q","_t","_s","friendly","_u","decryptedError","_v","_w","_x","_y","queryParams","getAllCountries","getStates","countryIso2","country","cardNumberInputHandler","BaseInput","BaseSelect","_hoisted_7","IconCopySuccess","upperLabel","showPrefixImg","showSuffixImg","truncatedValue","labelCustomClass","valueImageSrc","valueImageCustomClass","hasValueCopy","valueCustomClass","alignRight","BaseCopy","isConfirmCall","isPaymentConfirmed","paymentReferenceStatus","isFetchingPaymentDetails","paymentReferenceDetails","paymentAccountDetails","paymentMade","remainingSeconds","countDownTime","intervalRef","transferForm","transferErrors","transferRules","transferLabels","payHandler","startTimer","getReferenceDetails","made","updateDisplay","secs","minutes","seconds","BaseLabelInfo","_hoisted_9","onCancel","cur","textClass","amount","IconUsdt","iconWidth","iconHeight","iconColorClass","IconUsdc","generatingAddress","loadingStableCoins","loadingStableCoinNetworks","stableCoins","networkList","addressDetails","generateAddressPayload","isConfirmingPayment","stableCoinForm","stableCoinErrors","stableCoinRules","stableCoinLabels","amountPlusNetworkFee","generateAddress","getAllStableCoins","getAllStableCoinNetworks","nets","confirmPaymentHandler","_hoisted_10","BaseCurrencyAmount","IconArrowSwap","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","IconCheckCircle","checkoutState","paymentTypeOptions","filteredPaymentTypeOptions","paymentType","successObject","paymentTypeHandler","setSuccess","curr","BaseCard","BaseRadioGroup","PayByCard","PayByTransfer","PayByStableCoin","BaseSuccess"],"mappings":"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CV,QAAU,SACV,QAAU,SACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,MACV,SAAU,EACV,SAAU,IACV,OAAS,SACT,QAAU,SACV,QAAU,EACV,QAAU,SACV,QAAU,SACV,QAAU,MACV,QAAU,MACV,QAAU,IACV,QAAU,EACV,QAAU,IACV,SAAU,SACV,SAAU,MACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAW,SACX,SAAW,MACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,OAEf,CACI,EAAK,WACL,MAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,KACT,OAAS,KACT,OAAS,WACT,MAAQ,WACR,MAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,WACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,QACT,QAAS,WACT,QAAU,QACV,QAAU,QACV,QAAU,WACV,QAAU,EACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,QACV,QAAU,WACV,QAAU,QACV,QAAU,GACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,EACV,QAAU,QACV,QAAU,QACV,QAAU,WACV,QAAU,WACV,QAAU,GACV,QAAU,WACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,KACV,QAAU,WACV,QAAU,QACV,QA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AAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UAAU,EAClD,CAAI,WAAY,WAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,UAAY,UAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,UAAY,WAAY,SAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,UACpC,WAAY,UAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UAAU,EAClD,CAAI,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,SAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAA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","x_google_ignoreList":[20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,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]}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/plugin.ts","../src/utils/object.util.ts","../src/utils/api.util.ts","../src/utils/string.util.ts","../src/utils/input.util.ts","../src/utils/error.util.ts","../src/utils/card-scheme.util.ts","../src/components/icons/icon-loader.vue","../src/components/base/button.vue","../src/components/base/input-error.vue","../src/apis/checkout.api.ts","../src/buzapay-checkout/checkout-iframe.vue","../src/buzapay-checkout/checkout-button.vue","../src/components/icons/icon-chevron-left.vue","../src/components/base/back.vue","../src/components/icons/icon-buzapay-icon.vue","../src/components/base/card.vue","../src/components/base/radio-group.vue","../src/components/base/image.vue","../__vite-browser-external","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/core.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/x64-core.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/lib-typedarrays.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-utf16.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64url.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/md5.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha1.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha256.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha224.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha512.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha384.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha3.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/ripemd160.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/hmac.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pbkdf2.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/evpkdf.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/cipher-core.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-cfb.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr-gladman.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ofb.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ecb.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-ansix923.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso10126.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso97971.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-zeropadding.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-nopadding.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/format-hex.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/aes.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/tripledes.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rc4.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit-legacy.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/blowfish.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/index.js","../src/apis/encrypt.api.ts","../src/apis/resources.api.ts","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/utils.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/action-details.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/holder.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/factory.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/mask-element.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/html-mask-element.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/html-input-mask-element.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/html-contenteditable-mask-element.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/input-history.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/input.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/change-details.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/continuous-tail-details.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/base.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/chunk-tail-details.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/cursor.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/fixed-definition.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/input-definition.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/regexp.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/range.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/date.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/dynamic.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/enum.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/function.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/number.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pipe.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/repeat.js","../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/index.js","../src/components/base/input.vue","../src/components/icons/icon-chevron-down.vue","../src/components/icons/icon-chevron-up.vue","../src/components/base/hint.vue","../src/components/base/select.vue","../src/components/pay-by-card.vue","../src/components/icons/icon-copy-success.vue","../src/components/base/copy.vue","../src/components/base/label-info.vue","../src/components/pay-by-transfer.vue","../src/components/icons/icon-usdc.vue","../src/components/icons/icon-usdt.vue","../src/components/base/currency-amount.vue","../src/components/icons/icon-arrow-swap.vue","../src/components/pay-by-stable-coin.vue","../src/components/icons/icon-check-circle.vue","../src/components/base/success.vue","../src/buzapay-checkout/checkout-card.vue"],"sourcesContent":["import type { App, InjectionKey } from \"vue\";\nimport { inject } from \"vue\";\nimport type { MidenPGConfig } from \"./types\";\n\nconst ConfigKey: InjectionKey<MidenPGConfig> = Symbol(\"MidenPGConfig\");\n\nexport function createMidenPG(config: MidenPGConfig) {\n if (!config?.publishableKey) {\n throw new Error(\"[@miden-npm/vue] publishableKey is required\");\n }\n return {\n install(app: App) {\n app.provide(ConfigKey, config);\n },\n };\n}\n\nexport function useMidenPG(): MidenPGConfig {\n const cfg = inject(ConfigKey);\n if (!cfg) {\n throw new Error(\n \"[@miden-npm/vue] Missing provider. Did you forget to app.use(createMidenPG(...))?\"\n );\n }\n return cfg;\n}\n","export const checkObjectTruthy = <T extends object>(obj: T): boolean => {\n if (obj == null || typeof obj !== \"object\") return false;\n return Object.values(obj as Record<string, unknown>).every(Boolean);\n};\n\nexport const getQueryParams = (url: string): Record<string, string> => {\n const params: Record<string, string> = {};\n const searchParams = new URL(url).searchParams;\n\n searchParams.forEach((value, key) => {\n params[key] = value;\n });\n\n return params;\n};\n","export const getBaseUrl = (mode: string): string => {\n return mode === \"sandbox\"\n ? \"https://sandbox-api.midencards.io/payment-gateway-api\"\n : \"\";\n};\n","export const currencySign = (currency: string): string => {\n if (currency === \"USD\") return \"$\";\n if (currency === \"NGN\") return \"₦\";\n if (currency === \"EUR\") return \"€\";\n if (currency === \"GBP\") return \"£\";\n if (currency === \"JPY\") return \"¥\";\n if (currency === \"CNY\") return \"¥\";\n if (currency === \"USDC\" || currency === \"usdc\") return \"$⧫\";\n if (currency === \"USDT\" || currency === \"usdt\") return \"₮\";\n return \"$\";\n};\n\nexport const formatAmount = (\n value: number | string,\n currency?: string\n): string => {\n const num = typeof value === \"string\" ? parseFloat(value) : value;\n if (isNaN(num)) return \"0\";\n return `${currency ? currencySign(currency) : \"\"} ${num?.toLocaleString(\n \"en-US\"\n )}`;\n};\n\nexport const truncateString = (str: string, num: number): string => {\n if (str.length <= num) {\n return str;\n }\n return str.slice(0, num) + \"...\";\n};\n","export const restrictToNumericKeys = (event: KeyboardEvent): void => {\n const allowedKeys = [\n \"Backspace\",\n \"Tab\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Delete\",\n \"Home\",\n \"End\",\n \".\",\n ];\n\n if (\n (event.ctrlKey || event.metaKey) &&\n [\"a\", \"c\", \"v\", \"x\"].includes(event.key.toLowerCase())\n ) {\n return; // allow copy/paste/select\n }\n\n // Prevent non-numeric keys\n if (!allowedKeys.includes(event.key) && !/^\\d$/.test(event.key)) {\n event.preventDefault();\n }\n\n // Prevent multiple decimals\n if (\n event.key === \".\" &&\n (event.target as HTMLInputElement).value.includes(\".\")\n ) {\n event.preventDefault();\n }\n};\n","export interface RulesListItem {\n rule: string;\n value?: string; // optional (for rules without a value)\n}\n\nconst validateRegex = (value: string, regex: RegExp) => regex.test(value);\n\nfunction parseRules(rules: string): RulesListItem[] {\n if (!rules) return [];\n return rules.split(\"|\").map((chunk) => {\n const [rule, val] = chunk.split(\":\");\n return { rule: rule as string, value: val };\n });\n}\n\nexport function getValidationErrorMessage(\n rulesStr: string,\n inputValue: string,\n label: string\n): string | null {\n const errors: string[] = [];\n const rules = parseRules(rulesStr);\n const lowerLabel = (label || \"This field\").toLowerCase();\n const v = inputValue ?? \"\";\n\n const num = Number(v);\n const hasNum = !Number.isNaN(num);\n\n for (const r of rules) {\n switch (r.rule) {\n case \"required\":\n if (!v) errors.push(`The ${lowerLabel} field is required`);\n break;\n\n case \"alpha\":\n if (!validateRegex(v, /^[a-zA-Z]+$/))\n errors.push(\n `The ${lowerLabel} field must only contain alphabetic characters`\n );\n break;\n\n case \"at_least_one_uppercase\":\n if (!validateRegex(v, /.*[A-Z].*/))\n errors.push(\n `The ${lowerLabel} field must contain at least one uppercase character`\n );\n break;\n\n case \"at_least_one_lowercase\":\n if (!validateRegex(v, /.*[a-z].*/))\n errors.push(\n `The ${lowerLabel} field must contain at least one lowercase character`\n );\n break;\n\n case \"at_least_one_number\":\n if (!validateRegex(v, /.*\\d.*/))\n errors.push(\n `The ${lowerLabel} field must contain at least one number`\n );\n break;\n\n case \"alpha_num\":\n if (!validateRegex(v, /^[a-z0-9]+$/i))\n errors.push(\n `The ${lowerLabel} field must only contain alphabetic characters and numbers`\n );\n break;\n\n case \"num_spaces\":\n if (!validateRegex(v, /^[0-9\\s]+$/i))\n errors.push(\n `The ${lowerLabel} field must only contain space and numbers`\n );\n break;\n\n case \"alpha_spaces\":\n if (!validateRegex(v, /^[A-Za-z\\s]*$/))\n errors.push(\n `The ${lowerLabel} field must only contain alphabetic characters and spaces`\n );\n break;\n\n case \"numeric\":\n if (!validateRegex(v, /^\\d+$/))\n errors.push(`The ${lowerLabel} field must only contain numbers`);\n break;\n\n case \"no_special\":\n if (validateRegex(v, /[^a-zA-Z0-9\\s]/))\n errors.push(\n `The ${lowerLabel} field must not contain special characters`\n );\n break;\n\n case \"at_least_one_special\":\n if (!validateRegex(v, /[^a-zA-Z0-9\\s]/))\n errors.push(\n `The ${lowerLabel} field must contain at least one special character`\n );\n break;\n\n case \"email\":\n if (!validateRegex(v, /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,})+$/)) {\n errors.push(\"Please enter a valid email address\");\n }\n break;\n\n case \"is\":\n if (r.value !== v) errors.push(`Value entered must be ${r.value}`);\n break;\n\n case \"is_not\":\n if (r.value === v) errors.push(`Value entered must not be ${r.value}`);\n break;\n\n case \"char_length\":\n if (v.length !== Number(r.value))\n errors.push(\n `The ${lowerLabel} field must be ${r.value} characters long`\n );\n break;\n\n case \"min_char_length\":\n if (v.length < Number(r.value))\n errors.push(\n `The ${lowerLabel} field must not be less than ${r.value} characters long`\n );\n break;\n\n case \"max_char_length\":\n if (v.length > Number(r.value))\n errors.push(\n `The ${lowerLabel} field must not be greater than ${r.value} characters long`\n );\n break;\n\n // Age rules treat the value as a number (strict numeric compare)\n case \"age\":\n if (!hasNum || num !== Number(r.value))\n errors.push(`Age entered must be ${r.value}`);\n break;\n\n case \"min_age\":\n if (!hasNum || num < Number(r.value))\n errors.push(`Age entered must not be less than ${r.value}`);\n break;\n\n case \"max_age\":\n if (!hasNum || num > Number(r.value))\n errors.push(`Age entered must not be greater than ${r.value}`);\n break;\n\n // Numeric value rules (general numbers)\n case \"num_is\":\n if (!hasNum || num !== Number(r.value))\n errors.push(`Number entered must be ${r.value}`);\n break;\n\n case \"num_is_not\":\n if (hasNum && num === Number(r.value))\n errors.push(`Number entered must not be ${r.value}`);\n break;\n\n case \"min_number\":\n if (!hasNum || num < Number(r.value))\n errors.push(`Number entered must not be less than ${r.value}`);\n break;\n\n case \"max_number\":\n if (!hasNum || num > Number(r.value))\n errors.push(`Number entered must not be greater than ${r.value}`);\n break;\n\n default:\n // Unknown rule: ignore silently (or push a generic error if you prefer)\n break;\n }\n }\n\n return errors.length > 0 ? errors[0] : null;\n}\n\nexport const validateGroup = (\n values: Record<string, string>,\n rulesMap: Record<string, string>,\n prettyLabels?: Record<string, string> // optional: override labels in messages\n) => {\n const out: Record<string, string> = {};\n for (const [field, rules] of Object.entries(rulesMap)) {\n if (!rules) continue;\n const label = prettyLabels?.[field] ?? field;\n const err = getValidationErrorMessage(rules, values[field] ?? \"\", label);\n if (err) out[field] = err;\n }\n return out;\n};\n","export enum CardSchemes {\n Visa = 1,\n MasterCard = 2,\n Verve = 3,\n MastercardAndVisa = 4,\n AmericanExpress = 5,\n Discover = 6,\n JCB = 7,\n DinersClub = 8,\n Maestro = 9,\n UnionPay = 10,\n UnionPay3DS = 11, // based on known test BINs only\n UnionPayNon3DS = 12, // based on known test BINs only\n UATP = 13,\n PayPak = 14,\n Jaywan = 15,\n Mada = 16, // mada-only\n MadaVisa = 17,\n MadaMastercard = 18,\n Unknown = 19,\n}\n\n// ---------- Generic scheme regexes ----------\nconst VISA_RE = /^4\\d{12}(\\d{3}){0,2}$/; // 13, 16, 19 digits\nconst MC_RE =\n /^(?:5[1-5]\\d{14}|2(?:2(?:2[1-9]|[3-9]\\d)|[3-6]\\d{2}|7(?:[01]\\d|20))\\d{12})(?:\\d{0,3})?$/; // 16-19\nconst AMEX_RE = /^(34|37)\\d{13}$/; // 15\nconst DISCOVER_RE =\n /^(?:6011|65|64[4-9]|622(?:12[6-9]|1[3-9]\\d|[2-8]\\d{2}|9(?:0\\d|1\\d|2[0-5])))\\d{12,15}$/; // 16-19\nconst JCB_RE = /^(?:35(?:2[8-9]|[3-8]\\d))\\d{12,15}$/; // 16-19\nconst DINERS_RE = /^(?:3(?:0[0-5]\\d|095|6\\d|[89]\\d))\\d{11,13}$/; // 14-16\nconst MAESTRO_RE = /^(?:50|5[6-9]|6[0-9])\\d{10,17}$/; // 12-19\nconst UNIONPAY_RE = /^62\\d{14,17}$/; // 16-19\nconst UATP_RE = /^1\\d{14}$/; // 15\n\n// ---------- Known local/test BINs ----------\nconst VERVE_BIN6_RANGES: Array<[number, number]> = [\n [506099, 506198],\n [650002, 650027],\n];\nconst VERVE_BIN6_SINGLES = new Set<number>([507865, 507866]);\nconst PAYPAK_BIN6 = new Set<number>([220545, 220543]);\nconst JAYWAN_BIN7 = new Set<number>([6690109]);\nconst MADA_ONLY_BIN6 = new Set<number>([968209, 873646]);\nconst MADA_VISA_BIN6 = new Set<number>([422818, 486094]);\nconst MADA_MC_BIN6 = new Set<number>([529741, 543357]);\nconst UNIONPAY_3DS_BIN6 = new Set<number>([620108]);\nconst UNIONPAY_NON3DS_BIN6 = new Set<number>([621423]);\n\nexport function cardTypeHandler(cardNumber: string): string {\n const scheme = detect(cardNumber);\n return CardSchemes[scheme]; // numeric enum reverse mapping -> name\n}\n\nexport function detect(cardNumber: string): CardSchemes {\n if (!cardNumber || !cardNumber.trim()) return CardSchemes.Unknown;\n\n // Normalize: digits only\n const digits = cardNumber.replace(/\\D/g, \"\");\n if (digits.length < 12 || digits.length > 19) return CardSchemes.Unknown;\n\n // ---------- 1) Exact local/test BIN routing FIRST ----------\n if (digits.length >= 6) {\n const bin6 = parseInt(digits.slice(0, 6), 10);\n\n // mada-only\n if (MADA_ONLY_BIN6.has(bin6) && digits.length >= 16 && digits.length <= 19)\n return CardSchemes.Mada;\n\n // mada Visa\n if (MADA_VISA_BIN6.has(bin6) && VISA_RE.test(digits))\n return CardSchemes.MadaVisa;\n\n // mada Mastercard\n if (MADA_MC_BIN6.has(bin6) && MC_RE.test(digits))\n return CardSchemes.MadaMastercard;\n\n // PayPak\n if (PAYPAK_BIN6.has(bin6) && digits.length === 16)\n return CardSchemes.PayPak;\n\n // UnionPay test BINs with 3DS status\n if (UNIONPAY_3DS_BIN6.has(bin6) && UNIONPAY_RE.test(digits))\n return CardSchemes.UnionPay3DS;\n if (UNIONPAY_NON3DS_BIN6.has(bin6) && UNIONPAY_RE.test(digits))\n return CardSchemes.UnionPayNon3DS;\n\n // Verve\n if (isVerve(bin6, digits.length)) return CardSchemes.Verve;\n }\n\n if (digits.length >= 7) {\n const bin7 = parseInt(digits.slice(0, 7), 10);\n\n // Jaywan\n if (JAYWAN_BIN7.has(bin7) && digits.length === 16)\n return CardSchemes.Jaywan;\n }\n\n // ---------- 2) Generic schemes ----------\n if (UATP_RE.test(digits)) return CardSchemes.UATP;\n if (AMEX_RE.test(digits)) return CardSchemes.AmericanExpress;\n if (DISCOVER_RE.test(digits)) return CardSchemes.Discover;\n if (JCB_RE.test(digits)) return CardSchemes.JCB;\n if (DINERS_RE.test(digits)) return CardSchemes.DinersClub;\n if (MC_RE.test(digits)) return CardSchemes.MasterCard;\n if (VISA_RE.test(digits)) return CardSchemes.Visa;\n if (UNIONPAY_RE.test(digits)) return CardSchemes.UnionPay;\n if (MAESTRO_RE.test(digits)) return CardSchemes.Maestro;\n\n return CardSchemes.Unknown;\n}\n\nfunction isVerve(bin6: number, length: number): boolean {\n if (length < 16 || length > 19) return false;\n const inRange = VERVE_BIN6_RANGES.some(\n ([start, end]) => bin6 >= start && bin6 <= end\n );\n return inRange || VERVE_BIN6_SINGLES.has(bin6);\n}\n","<template>\n <svg\n :class=\"['animate-spin', className]\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n :width=\"size\"\n :height=\"size\"\n role=\"img\"\n aria-label=\"loading\"\n v-bind=\"attrs\"\n >\n <circle\n class=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n :stroke=\"color\"\n stroke-width=\"4\"\n />\n <path\n class=\"opacity-75\"\n :fill=\"color\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from \"vue\";\n\ninterface IIconProps {\n size?: number | string;\n color?: string;\n className?: string;\n}\n\nconst props = withDefaults(defineProps<IIconProps>(), {\n size: 24,\n color: \"currentColor\",\n className: \"\",\n});\n\nconst attrs = useAttrs();\nconst { size, color, className } = props;\n</script>\n","<template>\n <button\n :class=\"[\n 'flex items-center justify-center gap-2 py-3 border font-normal text-input-grey transition-colors duration-300 ease-in-out',\n getButtonBgClass(type, isDisabled),\n getButtonSizeClass(size),\n paddingClassX,\n customClass,\n ]\"\n type=\"button\"\n :disabled=\"isDisabled\"\n @click=\"handleClick\"\n >\n <slot name=\"prefix\" />\n\n <IconLoader v-if=\"loading\" />\n <div v-else>\n <p v-if=\"label\" :class=\"['mb-0', getLabelSizeClass(size)]\">\n {{ label }}\n </p>\n <slot v-else />\n </div>\n\n <slot name=\"suffix\" />\n </button>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport IconLoader from \"../icons/icon-loader.vue\";\n\ninterface IBaseButtonProps {\n label?: string;\n type?: string;\n size?: string;\n paddingClassX?: string;\n disabled?: boolean;\n loading?: boolean;\n customClass?: string;\n}\n\nconst props = withDefaults(defineProps<IBaseButtonProps>(), {\n label: \"\",\n type: \"neutral\",\n size: \"de\",\n paddingClassX: \"px-8\",\n disabled: false,\n loading: false,\n customClass: \"\",\n});\n\nconst emit = defineEmits<{\n (e: \"click\"): void;\n}>();\n\nconst isDisabled = computed(() => props.disabled || props.loading);\n\nfunction handleClick() {\n if (!isDisabled.value) emit(\"click\");\n}\n\n/** === Helper functions (ported from React) === */\nfunction getButtonBgClass(type: string, disabled?: boolean) {\n if (disabled)\n return \"bg-gray-200 text-gray-400 cursor-not-allowed border-gray-200\";\n switch (type) {\n case \"primary\":\n return \"bg-primary text-white hover:bg-primary-black hover:border-primary-black border-primary\";\n case \"secondary\":\n return \"bg-gray-200 border-gray-200 hover:bg-gray-300 text-heading-text\";\n case \"danger\":\n return \"bg-red-500 border-red-500 text-white hover:bg-red-600\";\n case \"neutral\":\n default:\n return \"bg-off-white border-grey-border hover:bg-gray-100\";\n }\n}\n\nfunction getButtonSizeClass(size?: string) {\n switch (size) {\n case \"de\":\n return \"h-68px rounded-xl\";\n case \"md\":\n return \"h-42px rounded-lg\";\n case \"sm\":\n return \"h-32px rounded-md\";\n default:\n return \"h-68px rounded-xl\";\n }\n}\n\nfunction getLabelSizeClass(size?: string) {\n switch (size) {\n case \"de\":\n case \"md\":\n case \"sm\":\n return \"text-body-2xs font-normal\";\n default:\n return \"text-body-xs font-normal\";\n }\n}\n</script>\n","<template>\n <p class=\"mb-0 text-body-3xs font-normal text-red-500\">\n {{ errorMessage }}\n </p>\n</template>\n\n<script setup lang=\"ts\">\ninterface IBaseInputErrorProps {\n errorMessage: string;\n}\n\ndefineProps<IBaseInputErrorProps>();\n</script>\n","import {\n IAuthorizeCardPaymentPayload,\n IGeneratePaymentAccountPayload,\n IGenerateStableCoinAddress,\n IPaymentObject,\n} from \"../types/checkout.type\";\nimport { getBaseUrl } from \"../utils\";\n\nexport async function createPaymentLink(\n paymentObject: IPaymentObject,\n environment: string,\n secretKey: string\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment);\n const res = await fetch(\n `${baseUrl}/api/v1/checkout/generate-payment-link2`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId: secretKey,\n },\n body: JSON.stringify({\n ...paymentObject,\n LinkName: `${Date.now()}-Link`,\n }),\n }\n );\n return await res.json();\n } catch (error) {}\n}\n\nexport async function authorizeCardPayment(\n environment: string,\n { merchantId, ...rest }: IAuthorizeCardPaymentPayload & { merchantId: string }\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment);\n const res = await fetch(\n `${baseUrl}/api/v1/checkout/authorize-card-3ds-payment-sdk`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId,\n },\n body: JSON.stringify(rest),\n }\n );\n return await res.json();\n } catch (error) {}\n}\n\nexport async function generatePaymentAccount(\n environment: string,\n { merchantId, ...rest }: IGeneratePaymentAccountPayload\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment);\n const res = await fetch(\n `${baseUrl}/api/v1/checkout/generate-payment-account`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId,\n },\n body: JSON.stringify(rest),\n }\n );\n return await res.json();\n } catch (error) {}\n}\n\nexport async function getPaymentReferenceDetails(\n environment: string,\n paymentReference: string\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment);\n const res = await fetch(\n `${baseUrl}/api/v1/checkout/details/${paymentReference}`,\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n }\n );\n return await res.json();\n } catch (error) {}\n}\n\nexport async function generateStableCoinAddress(\n environment: string,\n { merchantId, ...rest }: IGenerateStableCoinAddress\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment);\n const res = await fetch(\n `${baseUrl}/api/v1/checkout/generate-payment-walletaddress`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId,\n },\n body: JSON.stringify(rest),\n }\n );\n return await res.json();\n } catch (error) {}\n}\n","<template>\n <div class=\"relative\" :style=\"resolvedStyle\">\n <div ref=\"containerRef\" class=\"w-full h-full\"></div>\n <div\n v-if=\"loading\"\n class=\"absolute inset-0 grid place-items-center bg-white/60\"\n >\n <IconLoader />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n onMounted,\n onBeforeUnmount,\n ref,\n watch,\n toRefs,\n computed,\n CSSProperties,\n} from \"vue\";\nimport { checkObjectTruthy } from \"../utils\";\nimport IconLoader from \"../components/icons/icon-loader.vue\";\nimport { IPaymentObject } from \"../types/checkout.type\";\nimport { IApiResponse } from \"../types/resource.type\";\nimport { createPaymentLink } from \"../apis/checkout.api\";\n\ntype Env = \"sandbox\" | \"production\";\n\ninterface IIframeStyle {\n width?: string;\n height?: string;\n border?: string;\n borderRadius?: string;\n overflow?: string;\n}\n\ninterface ICheckoutIframeProps {\n style?: IIframeStyle;\n url?: string;\n secretKey: string;\n environment?: Env;\n paymentObject?: IPaymentObject;\n}\n\nconst props = withDefaults(defineProps<ICheckoutIframeProps>(), {\n style: () => ({\n width: \"100%\",\n height: \"100vh\",\n border: \"0\",\n borderRadius: \"6px\",\n overflow: \"hidden\",\n }),\n url: undefined,\n environment: \"sandbox\",\n paymentObject: () =>\n ({\n amount: 0,\n currency: \"\",\n email: \"\",\n phoneNumber: \"\",\n narration: \"\",\n redirectUrl: \"\",\n } as IPaymentObject),\n});\n\nconst resolvedStyle = computed<CSSProperties>(() => ({\n ...props.style,\n}));\n\nconst containerRef = ref<HTMLDivElement | null>(null);\nconst iframeRef = ref<HTMLIFrameElement | null>(null);\n\nconst message = ref<string>(\"\");\nconst loading = ref<boolean>(false);\n\nfunction destroyIframe() {\n if (iframeRef.value && iframeRef.value.parentNode) {\n iframeRef.value.parentNode.removeChild(iframeRef.value);\n }\n iframeRef.value = null;\n}\n\nfunction launchIframe(url: string) {\n // remove prior iframe if present\n destroyIframe();\n\n const iframe = document.createElement(\"iframe\");\n iframe.src = url;\n\n // apply provided styles to the iframe\n const s = props.style;\n if (s.width) iframe.style.width = s.width;\n if (s.height) iframe.style.height = s.height;\n if (s.border) iframe.style.border = s.border;\n if (s.borderRadius) iframe.style.borderRadius = s.borderRadius;\n if (s.overflow) iframe.style.overflow = s.overflow;\n\n containerRef.value?.appendChild(iframe);\n iframeRef.value = iframe;\n}\n\nasync function generatePaymentLinkHandler() {\n // If URL is given, just mount it\n if (props.url) {\n launchIframe(props.url);\n return;\n }\n\n if (!props.secretKey) {\n message.value = \"Secret key is required.\";\n return;\n }\n\n if (!checkObjectTruthy<IPaymentObject>(props.paymentObject)) {\n message.value = \"Kindly ensure you are passing all the required data.\";\n return;\n }\n\n loading.value = true;\n message.value = \"\";\n\n try {\n const response: IApiResponse<any> = await createPaymentLink(\n props.paymentObject,\n props.environment,\n props.secretKey\n );\n\n if (response?.isSuccessful && response.launchUrl) {\n message.value = \"Payment link created successfully\";\n launchIframe(response.launchUrl); // use the fresh URL directly\n } else {\n message.value = \"Failed to create payment link\";\n }\n } catch (e: any) {\n message.value = e?.message || \"Failed to create payment link\";\n } finally {\n loading.value = false;\n }\n}\n\nonMounted(() => {\n if (!containerRef.value) return;\n generatePaymentLinkHandler();\n});\n\n// If the `url` prop changes later, reload the iframe\nwatch(\n () => props.url,\n (newUrl) => {\n if (newUrl) launchIframe(newUrl);\n }\n);\n\nonBeforeUnmount(() => {\n destroyIframe();\n});\n</script>\n","<template>\n <CheckoutIframe\n v-if=\"launchUrl && mode === 'iframe'\"\n :url=\"launchUrl\"\n :secretKey=\"secretKey\"\n :environment=\"environment\"\n />\n <div v-else>\n <BaseButton\n label=\"Pay\"\n type=\"primary\"\n customClass=\"w-full\"\n :loading=\"loading\"\n @click=\"generatePaymentLinkHandler\"\n />\n <BaseInputError :errorMessage=\"message\" />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from \"vue\";\nimport { checkObjectTruthy } from \"../utils\";\nimport BaseButton from \"../components/base/button.vue\";\nimport BaseInputError from \"../components/base/input-error.vue\";\nimport CheckoutIframe from \"./checkout-iframe.vue\";\nimport { IPaymentObject } from \"../types/checkout.type\";\nimport { IApiResponse } from \"../types/resource.type\";\nimport { createPaymentLink } from \"../apis/checkout.api\";\n\ntype Env = \"sandbox\" | \"production\";\ntype Mode = \"redirect\" | \"iframe\";\n\ninterface ICheckoutButtonProps {\n secretKey: string;\n environment?: Env;\n paymentObject?: IPaymentObject;\n mode?: Mode;\n}\n\nconst props = withDefaults(defineProps<ICheckoutButtonProps>(), {\n environment: \"sandbox\",\n paymentObject: () =>\n ({\n amount: 0,\n currency: \"\",\n email: \"\",\n phoneNumber: \"\",\n narration: \"\",\n redirectUrl: \"\",\n } as IPaymentObject),\n mode: \"redirect\",\n});\n\nconst message = ref<string>(\"\");\nconst launchUrl = ref<string>(\"\");\nconst loading = ref<boolean>(false);\n\nasync function generatePaymentLinkHandler() {\n if (!props.secretKey) {\n message.value = \"Secret key is required.\";\n return;\n }\n if (!checkObjectTruthy<IPaymentObject>(props.paymentObject)) {\n message.value = \"Kindly ensure you are passing all the required data.\";\n return;\n }\n\n loading.value = true;\n message.value = \"\";\n\n try {\n const response: IApiResponse<any> = await createPaymentLink(\n props.paymentObject,\n props.environment,\n props.secretKey\n );\n\n if (response?.isSuccessful && response.launchUrl) {\n launchUrl.value = response.launchUrl;\n message.value = \"Payment link created successfully\";\n\n if (props.mode === \"redirect\") {\n // Use the URL from the response immediately.\n window.open(response.launchUrl, \"_blank\", \"noopener,noreferrer\");\n }\n } else {\n message.value = \"Failed to create payment link\";\n }\n } catch (e: any) {\n message.value = e?.message || \"Failed to create payment link\";\n } finally {\n loading.value = false;\n }\n}\n\n// Expose for template\nconst { secretKey, environment, mode } = props;\n</script>\n","<template>\n <svg\n :width=\"width\"\n :height=\"height\"\n viewBox=\"0 0 17 17\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n v-bind=\"attrs\"\n >\n <path\n d=\"M10.5 14.28C10.3734 14.28 10.2467 14.2333 10.1467 14.1333L5.80002 9.78668C5.09335 9.08001 5.09335 7.92001 5.80002 7.21335L10.1467 2.86668C10.34 2.67335 10.66 2.67335 10.8534 2.86668C11.0467 3.06001 11.0467 3.38001 10.8534 3.57335L6.50669 7.92001C6.18669 8.24001 6.18669 8.76001 6.50669 9.08001L10.8534 13.4267C11.0467 13.62 11.0467 13.94 10.8534 14.1333C10.7534 14.2267 10.6267 14.28 10.5 14.28Z\"\n :fill=\"color\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from \"vue\";\n\ninterface IIconProps {\n width?: number | string;\n height?: number | string;\n color?: string;\n}\n\nconst props = withDefaults(defineProps<IIconProps>(), {\n width: 17,\n height: 17,\n color: \"currentColor\",\n});\n\nconst attrs = useAttrs();\nconst { width, height, color } = props;\n</script>\n","<template>\n <div class=\"flex items-center gap-2 cursor-pointer\" @click=\"$emit('back')\">\n <IconChevronLeft />\n <p class=\"mb-0 text-body-xs font-normal\">Back</p>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport IconChevronLeft from \"../icons/icon-chevron-left.vue\";\n\nconst emit = defineEmits<{\n (e: \"back\"): void;\n}>();\n</script>\n","<template>\n <svg\n :width=\"width\"\n :height=\"height\"\n viewBox=\"0 0 15 13\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n v-bind=\"attrs\"\n >\n <path\n d=\"M9.97919 0.5C10.8854 0.5 11.6276 0.585938 12.2057 0.757812C12.7891 0.924479 13.2188 1.22396 13.4948 1.65625C13.7761 2.08333 13.9167 2.6901 13.9167 3.47656C13.9167 4.1849 13.7526 4.77083 13.4245 5.23438C13.0964 5.69792 12.5938 5.95312 11.9167 6C12.8021 6.08854 13.4401 6.40625 13.8307 6.95312C14.2214 7.49479 14.4167 8.17708 14.4167 9C14.4167 9.71354 14.3334 10.2995 14.1667 10.7578C14.0052 11.2161 13.7318 11.5729 13.3464 11.8281C12.961 12.0781 12.4375 12.2526 11.7761 12.3516C11.1198 12.4505 10.2995 12.5 9.31512 12.5H0.416687V0.5H9.97919ZM2.91669 7.77344H5.97235V11.167L10.2497 5.22754H7.19501V1.83398L2.91669 7.77344ZM5.97235 6.07617H8.2702L7.19501 7.57324V6.9248H4.89716L5.97235 5.42676V6.07617Z\"\n :fill=\"color\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from \"vue\";\n\ninterface IIconProps {\n width?: number | string;\n height?: number | string;\n color?: string;\n}\n\nconst props = withDefaults(defineProps<IIconProps>(), {\n width: 15,\n height: 13,\n color: \"currentColor\",\n});\n\nconst attrs = useAttrs();\nconst { width, height, color } = props;\n</script>\n","<template>\n <div\n class=\"checkout-card w-full h-screen flex flex-col items-center justify-center text-white\"\n >\n <div class=\"flex w-1/2\">\n <BaseBack v-if=\"showBackButton\" @back=\"emit('back')\" />\n\n <div class=\"flex gap-2 w-full\">\n <div class=\"flex flex-col gap-8 w-full\">\n <div class=\"bg-off-white rounded-xl\">\n <slot />\n </div>\n\n <div class=\"flex items-center gap-2 justify-center\">\n <p class=\"text-light-white-100 text-body-2xs font-regular\">\n Powered by Buzapay\n </p>\n <IconBuzapayIcon color=\"#E8F4FF\" />\n </div>\n </div>\n\n <!-- Close Icon -->\n <div\n class=\"close-icon flex flex-col items-center justify-center self-start cursor-pointer hover:bg-gray-500\"\n @click=\"emit('close')\"\n role=\"button\"\n aria-label=\"Close\"\n >\n <p class=\"text-white\">x</p>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport BaseBack from \"./back.vue\"; // assumes you saved the emitted version as back.vue\nimport IconBuzapayIcon from \"../icons/icon-buzapay-icon.vue\";\n\ninterface IBaseCardProps {\n showBackButton?: boolean;\n}\n\nconst props = withDefaults(defineProps<IBaseCardProps>(), {\n showBackButton: false,\n});\n\nconst emit = defineEmits<{\n (e: \"back\"): void;\n (e: \"close\"): void;\n}>();\n</script>\n","<template>\n <div\n :class=\"['flex', containerLayout, className]\"\n role=\"radiogroup\"\n :aria-orientation=\"type === 'horizontal' ? 'horizontal' : 'vertical'\"\n tabindex=\"0\"\n >\n <div\n v-for=\"opt in options\"\n :key=\"opt.value\"\n role=\"radio\"\n :aria-checked=\"selected === opt.value\"\n tabindex=\"-1\"\n @click=\"setSelected(opt.value)\"\n class=\"flex items-center gap-2 cursor-pointer transition-colors duration-200\"\n >\n <div\n :class=\"[\n 'w-4 h-4 rounded-full border flex items-center justify-center',\n selected === opt.value\n ? 'bg-orange-500 border-orange-500'\n : 'bg-white border-grey-200',\n ]\"\n >\n <div\n v-if=\"selected === opt.value\"\n class=\"bg-white w-2 h-2 rounded-full\"\n />\n </div>\n <p class=\"mb-0 text-body-2xs font-medium text-heading-text\">\n {{ opt.label }}\n </p>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, ref, watch } from \"vue\";\n\ntype Layout = \"vertical\" | \"horizontal\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface IBaseRadioGroupProps {\n options: Option[];\n type?: Layout;\n /** Controlled value (v-model) */\n modelValue?: string;\n /** Uncontrolled initial value */\n defaultValue?: string;\n /** Extra classes for the container */\n className?: string;\n}\n\nconst props = withDefaults(defineProps<IBaseRadioGroupProps>(), {\n options: () => [],\n type: \"vertical\",\n modelValue: undefined,\n defaultValue: undefined,\n className: \"\",\n});\n\nconst emit = defineEmits<{\n (e: \"update:modelValue\", v: string): void;\n (e: \"selectedChange\", v: string): void;\n}>();\n\n/** Controlled vs uncontrolled */\nconst isControlled = computed(() => props.modelValue !== undefined);\nconst internal = ref<string>(\"\");\n\n/** Initialize for uncontrolled mode (and notify) */\nonMounted(() => {\n if (isControlled.value) return;\n const initial =\n props.defaultValue ?? (props.options.length ? props.options[0].value : \"\");\n internal.value = initial;\n if (initial) {\n emit(\"update:modelValue\", initial); // keep parent in sync if it listens\n emit(\"selectedChange\", initial);\n }\n});\n\n/** Keep internal in sync when parent controls it */\nwatch(\n () => props.modelValue,\n (v) => {\n if (isControlled.value) internal.value = v ?? \"\";\n },\n { immediate: true }\n);\n\nconst selected = computed(() =>\n isControlled.value ? props.modelValue ?? \"\" : internal.value\n);\n\nfunction setSelected(v: string) {\n if (!isControlled.value) internal.value = v;\n emit(\"update:modelValue\", v);\n emit(\"selectedChange\", v);\n}\n\nconst containerLayout = computed(() =>\n props.type === \"horizontal\" ? \"flex-row gap-5\" : \"flex-col gap-6\"\n);\n\nconst { options, type, className } = props;\n</script>\n","<template>\n <img\n :src=\"src\"\n :height=\"height\"\n :alt=\"alt\"\n :class=\"[customClass, isFullWidth ? 'w-full' : '']\"\n :style=\"{ width: isFullWidth ? '100%' : width + 'px' }\"\n @click=\"emit('click')\"\n />\n</template>\n\n<script setup lang=\"ts\">\ninterface IBaseImageProps {\n src: string;\n height?: number | string;\n width?: number | string;\n alt?: string;\n customClass?: string;\n isFullWidth?: boolean;\n}\n\nconst props = withDefaults(defineProps<IBaseImageProps>(), {\n height: 50,\n width: 50,\n alt: \"Image\",\n customClass: \"\",\n isFullWidth: false,\n});\n\nconst emit = defineEmits<{\n (e: \"click\"): void;\n}>();\n\nconst { src, height, width, alt, customClass, isFullWidth } = props;\n</script>\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\";\n\nexport function encryptPayload(merchantId: string, formData = {}) {\n const merchId = merchantId.replace(/-/g, \"\");\n const first16Key = merchId.slice(0, 16);\n const last16Iv = merchId.slice(-16);\n\n const key = CryptoJS.enc.Utf8.parse(first16Key);\n const iv = CryptoJS.enc.Utf8.parse(last16Iv);\n const postDataObj = JSON.stringify(formData);\n\n const encryptedData = CryptoJS.AES.encrypt(\n CryptoJS.enc.Utf8.parse(postDataObj),\n key,\n {\n keySize: 128 / 8,\n iv,\n mode: CryptoJS.mode.CBC,\n padding: CryptoJS.pad.Pkcs7,\n }\n );\n\n return {\n requestParam: encryptedData.toString(),\n };\n}\n\nexport function decryptPayload(merchantId: string, payload: string) {\n const merchId = merchantId.replace(/-/g, \"\");\n const first16Key = merchId.slice(0, 16);\n const last16Iv = merchId.slice(-16);\n\n const key = CryptoJS.enc.Utf8.parse(first16Key);\n const iv = CryptoJS.enc.Utf8.parse(last16Iv);\n\n const decryptedData = CryptoJS.AES.decrypt(payload, key, {\n keySize: 128 / 8,\n iv,\n mode: CryptoJS.mode.CBC,\n padding: CryptoJS.pad.Pkcs7,\n });\n\n const decryptedText = decryptedData.toString(CryptoJS.enc.Utf8);\n return JSON.parse(decryptedText);\n}\n","import { getBaseUrl } from \"../utils\";\n\nexport async function getCountries(\n environment: string,\n secretKey: string\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment);\n const res = await fetch(`${baseUrl}/api/v1/countries-iso`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId: secretKey,\n },\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function getCountryStates(\n countryIso3: string,\n environment: string,\n secretKey: string\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment);\n const res = await fetch(\n `${baseUrl}/api/v1/state-by-country/${countryIso3}`,\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId: secretKey,\n },\n }\n );\n return await res.json();\n } catch (error) {}\n}\n\nexport async function getStableCoins(environment: string): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment);\n const res = await fetch(`${baseUrl}/api/v1/checkout/stable-coin`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function getStableCoinNetworks(\n environment: string,\n stableCoin: string\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment);\n const res = await fetch(\n `${baseUrl}/api/v1/checkout/networks/${stableCoin}`,\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n }\n );\n return await res.json();\n } catch (error) {}\n}\n","/** Checks if value is string */\nfunction isString(str) {\n return typeof str === 'string' || str instanceof String;\n}\n\n/** Checks if value is object */\nfunction isObject(obj) {\n var _obj$constructor;\n return typeof obj === 'object' && obj != null && (obj == null || (_obj$constructor = obj.constructor) == null ? void 0 : _obj$constructor.name) === 'Object';\n}\nfunction pick(obj, keys) {\n if (Array.isArray(keys)) return pick(obj, (_, k) => keys.includes(k));\n return Object.entries(obj).reduce((acc, _ref) => {\n let [k, v] = _ref;\n if (keys(v, k)) acc[k] = v;\n return acc;\n }, {});\n}\n\n/** Direction */\nconst DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT'\n};\n\n/** Direction */\n\nfunction forceDirection(direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n default:\n return direction;\n }\n}\n\n/** Escapes regular expression control chars */\nfunction escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n}\n\n// cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\nfunction objectIncludes(b, a) {\n if (a === b) return true;\n const arrA = Array.isArray(a),\n arrB = Array.isArray(b);\n let i;\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++) if (!objectIncludes(a[i], b[i])) return false;\n return true;\n }\n if (arrA != arrB) return false;\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n const dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n const regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n const keys = Object.keys(a);\n // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = 0; i < keys.length; i++) if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString();\n }\n return false;\n}\n\n/** Selection range */\n\nexport { DIRECTION, escapeRegExp, forceDirection, isObject, isString, objectIncludes, pick };\n","import { DIRECTION } from './utils.js';\n\n/** Provides details of changing input */\nclass ActionDetails {\n /** Current input value */\n\n /** Current cursor position */\n\n /** Old input value */\n\n /** Old selection */\n\n constructor(opts) {\n Object.assign(this, opts);\n\n // double check if left part was changed (autofilling, other non-standard input triggers)\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n if (this.insertedCount) {\n // double check right part\n while (this.value.slice(this.cursorPos) !== this.oldValue.slice(this.oldSelection.end)) {\n if (this.value.length - this.cursorPos < this.oldValue.length - this.oldSelection.end) ++this.oldSelection.end;else ++this.cursorPos;\n }\n }\n }\n\n /** Start changing position */\n get startChangePos() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n\n /** Inserted symbols count */\n get insertedCount() {\n return this.cursorPos - this.startChangePos;\n }\n\n /** Inserted symbols */\n get inserted() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n\n /** Removed symbols count */\n get removedCount() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos ||\n // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n\n /** Removed symbols */\n get removed() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n\n /** Unchanged head symbols */\n get head() {\n return this.value.substring(0, this.startChangePos);\n }\n\n /** Unchanged tail symbols */\n get tail() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n\n /** Remove direction */\n get removeDirection() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE;\n\n // align right if delete at right\n return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) &&\n // if not range removed (event with backspace)\n this.oldSelection.end === this.oldSelection.start ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n}\n\nexport { ActionDetails as default };\n","/** Applies mask on element */\nfunction IMask(el, opts) {\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n}\n\nexport { IMask as default };\n","import { isString, isObject, pick } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n// export function maskedClass(mask: string): typeof MaskedPattern;\n// export function maskedClass(mask: DateConstructor): typeof MaskedDate;\n// export function maskedClass(mask: NumberConstructor): typeof MaskedNumber;\n// export function maskedClass(mask: Array<any> | ArrayConstructor): typeof MaskedDynamic;\n// export function maskedClass(mask: MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass(mask: Masked): typeof Masked;\n// export function maskedClass(mask: typeof Masked): typeof Masked;\n// export function maskedClass(mask: typeof MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: typeof MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: typeof MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: typeof MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: typeof MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: typeof MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: typeof MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: typeof MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass<Mask extends typeof Masked> (mask: Mask): Mask;\n// export function maskedClass(mask: RegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: (value: string, ...args: any[]) => boolean): typeof MaskedFunction;\n\n/** Get Masked class by mask type */\nfunction maskedClass(mask) /* TODO */{\n if (mask == null) throw new Error('mask property should be defined');\n if (mask instanceof RegExp) return IMask.MaskedRegExp;\n if (isString(mask)) return IMask.MaskedPattern;\n if (mask === Date) return IMask.MaskedDate;\n if (mask === Number) return IMask.MaskedNumber;\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic;\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask;\n if (IMask.Masked && mask instanceof IMask.Masked) return mask.constructor;\n if (mask instanceof Function) return IMask.MaskedFunction;\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n return IMask.Masked;\n}\nfunction normalizeOpts(opts) {\n if (!opts) throw new Error('Options in not defined');\n if (IMask.Masked) {\n if (opts.prototype instanceof IMask.Masked) return {\n mask: opts\n };\n\n /*\n handle cases like:\n 1) opts = Masked\n 2) opts = { mask: Masked, ...instanceOpts }\n */\n const {\n mask = undefined,\n ...instanceOpts\n } = opts instanceof IMask.Masked ? {\n mask: opts\n } : isObject(opts) && opts.mask instanceof IMask.Masked ? opts : {};\n if (mask) {\n const _mask = mask.mask;\n return {\n ...pick(mask, (_, k) => !k.startsWith('_')),\n mask: mask.constructor,\n _mask,\n ...instanceOpts\n };\n }\n }\n if (!isObject(opts)) return {\n mask: opts\n };\n return {\n ...opts\n };\n}\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n\n// From masked\n// export default function createMask<Opts extends Masked, ReturnMasked=Opts> (opts: Opts): ReturnMasked;\n// // From masked class\n// export default function createMask<Opts extends MaskedOptions<typeof Masked>, ReturnMasked extends Masked=InstanceType<Opts['mask']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedDate>, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedNumber>, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedEnum>, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedRange>, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedRegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedFunction>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedPattern>, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedDynamic>, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\n// // From mask opts\n// export default function createMask<Opts extends MaskedOptions<Masked>, ReturnMasked=Opts extends MaskedOptions<infer M> ? M : never> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedNumberOptions, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedDateFactoryOptions, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedEnumOptions, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedRangeOptions, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedPatternOptions, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedDynamicOptions, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<RegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<Function>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\n\n/** Creates new {@link Masked} depending on mask type */\nfunction createMask(opts) {\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n const nOpts = normalizeOpts(opts);\n const MaskedClass = maskedClass(nOpts.mask);\n if (!MaskedClass) throw new Error(\"Masked class is not found for provided mask \" + nOpts.mask + \", appropriate module needs to be imported manually before creating mask.\");\n if (nOpts.mask === MaskedClass) delete nOpts.mask;\n if (nOpts._mask) {\n nOpts.mask = nOpts._mask;\n delete nOpts._mask;\n }\n return new MaskedClass(nOpts);\n}\nIMask.createMask = createMask;\n\nexport { createMask as default, maskedClass, normalizeOpts };\n","import IMask from '../core/holder.js';\n\n/** Generic element API to use with mask */\nclass MaskElement {\n /** */\n\n /** */\n\n /** */\n\n /** Safely returns selection start */\n get selectionStart() {\n let start;\n try {\n start = this._unsafeSelectionStart;\n } catch {}\n return start != null ? start : this.value.length;\n }\n\n /** Safely returns selection end */\n get selectionEnd() {\n let end;\n try {\n end = this._unsafeSelectionEnd;\n } catch {}\n return end != null ? end : this.value.length;\n }\n\n /** Safely sets element selection */\n select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n try {\n this._unsafeSelect(start, end);\n } catch {}\n }\n\n /** */\n get isActive() {\n return false;\n }\n /** */\n\n /** */\n\n /** */\n}\nIMask.MaskElement = MaskElement;\n\nexport { MaskElement as default };\n","import MaskElement from './mask-element.js';\nimport IMask from '../core/holder.js';\n\nconst KEY_Z = 90;\nconst KEY_Y = 89;\n\n/** Bridge between HTMLElement and {@link Masked} */\nclass HTMLMaskElement extends MaskElement {\n /** HTMLElement to use mask on */\n\n constructor(input) {\n super();\n this.input = input;\n this._onKeydown = this._onKeydown.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onBeforeinput = this._onBeforeinput.bind(this);\n this._onCompositionEnd = this._onCompositionEnd.bind(this);\n }\n get rootElement() {\n var _this$input$getRootNo, _this$input$getRootNo2, _this$input;\n return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) == null ? void 0 : _this$input$getRootNo2.call(_this$input)) != null ? _this$input$getRootNo : document;\n }\n\n /** Is element in focus */\n get isActive() {\n return this.input === this.rootElement.activeElement;\n }\n\n /** Binds HTMLElement events to mask internal events */\n bindEvents(handlers) {\n this.input.addEventListener('keydown', this._onKeydown);\n this.input.addEventListener('input', this._onInput);\n this.input.addEventListener('beforeinput', this._onBeforeinput);\n this.input.addEventListener('compositionend', this._onCompositionEnd);\n this.input.addEventListener('drop', handlers.drop);\n this.input.addEventListener('click', handlers.click);\n this.input.addEventListener('focus', handlers.focus);\n this.input.addEventListener('blur', handlers.commit);\n this._handlers = handlers;\n }\n _onKeydown(e) {\n if (this._handlers.redo && (e.keyCode === KEY_Z && e.shiftKey && (e.metaKey || e.ctrlKey) || e.keyCode === KEY_Y && e.ctrlKey)) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n if (this._handlers.undo && e.keyCode === KEY_Z && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n if (!e.isComposing) this._handlers.selectionChange(e);\n }\n _onBeforeinput(e) {\n if (e.inputType === 'historyUndo' && this._handlers.undo) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n if (e.inputType === 'historyRedo' && this._handlers.redo) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n }\n _onCompositionEnd(e) {\n this._handlers.input(e);\n }\n _onInput(e) {\n if (!e.isComposing) this._handlers.input(e);\n }\n\n /** Unbinds HTMLElement events to mask internal events */\n unbindEvents() {\n this.input.removeEventListener('keydown', this._onKeydown);\n this.input.removeEventListener('input', this._onInput);\n this.input.removeEventListener('beforeinput', this._onBeforeinput);\n this.input.removeEventListener('compositionend', this._onCompositionEnd);\n this.input.removeEventListener('drop', this._handlers.drop);\n this.input.removeEventListener('click', this._handlers.click);\n this.input.removeEventListener('focus', this._handlers.focus);\n this.input.removeEventListener('blur', this._handlers.commit);\n this._handlers = {};\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\n/** Bridge between InputElement and {@link Masked} */\nclass HTMLInputMaskElement extends HTMLMaskElement {\n /** InputElement to use mask on */\n\n constructor(input) {\n super(input);\n this.input = input;\n }\n\n /** Returns InputElement selection start */\n get _unsafeSelectionStart() {\n return this.input.selectionStart != null ? this.input.selectionStart : this.value.length;\n }\n\n /** Returns InputElement selection end */\n get _unsafeSelectionEnd() {\n return this.input.selectionEnd;\n }\n\n /** Sets InputElement selection */\n _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n get value() {\n return this.input.value;\n }\n set value(value) {\n this.input.value = value;\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLInputMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\nclass HTMLContenteditableMaskElement extends HTMLMaskElement {\n /** Returns HTMLElement selection start */\n get _unsafeSelectionStart() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Returns HTMLElement selection end */\n get _unsafeSelectionEnd() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Sets HTMLElement selection */\n _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n const range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n\n /** HTMLElement value */\n get value() {\n return this.input.textContent || '';\n }\n set value(value) {\n this.input.textContent = value;\n }\n}\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\nexport { HTMLContenteditableMaskElement as default };\n","class InputHistory {\n constructor() {\n this.states = [];\n this.currentIndex = 0;\n }\n get currentState() {\n return this.states[this.currentIndex];\n }\n get isEmpty() {\n return this.states.length === 0;\n }\n push(state) {\n // if current index points before the last element then remove the future\n if (this.currentIndex < this.states.length - 1) this.states.length = this.currentIndex + 1;\n this.states.push(state);\n if (this.states.length > InputHistory.MAX_LENGTH) this.states.shift();\n this.currentIndex = this.states.length - 1;\n }\n go(steps) {\n this.currentIndex = Math.min(Math.max(this.currentIndex + steps, 0), this.states.length - 1);\n return this.currentState;\n }\n undo() {\n return this.go(-1);\n }\n redo() {\n return this.go(+1);\n }\n clear() {\n this.states.length = 0;\n this.currentIndex = 0;\n }\n}\nInputHistory.MAX_LENGTH = 100;\n\nexport { InputHistory as default };\n","import { DIRECTION } from '../core/utils.js';\nimport ActionDetails from '../core/action-details.js';\nimport createMask, { maskedClass } from '../masked/factory.js';\nimport MaskElement from './mask-element.js';\nimport HTMLInputMaskElement from './html-input-mask-element.js';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element.js';\nimport IMask from '../core/holder.js';\nimport InputHistory from './input-history.js';\nimport './html-mask-element.js';\n\n/** Listens to element events and controls changes between element and {@link Masked} */\nclass InputMask {\n /**\n View element\n */\n\n /** Internal {@link Masked} model */\n\n constructor(el, opts) {\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLInputMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._rawInputValue = '';\n this.history = new InputHistory();\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onUndo = this._onUndo.bind(this);\n this._onRedo = this._onRedo.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n this._bindEvents();\n\n // refresh\n this.updateValue();\n this._onChange();\n }\n maskEquals(mask) {\n var _this$masked;\n return mask == null || ((_this$masked = this.masked) == null ? void 0 : _this$masked.maskEquals(mask));\n }\n\n /** Masked */\n get mask() {\n return this.masked.mask;\n }\n set mask(mask) {\n if (this.maskEquals(mask)) return;\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n // TODO \"any\" no idea\n this.masked.updateOptions({\n mask\n });\n return;\n }\n const masked = mask instanceof IMask.Masked ? mask : createMask({\n mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n\n /** Raw value */\n get value() {\n return this._value;\n }\n set value(str) {\n if (this.value === str) return;\n this.masked.value = str;\n this.updateControl('auto');\n }\n\n /** Unmasked value */\n get unmaskedValue() {\n return this._unmaskedValue;\n }\n set unmaskedValue(str) {\n if (this.unmaskedValue === str) return;\n this.masked.unmaskedValue = str;\n this.updateControl('auto');\n }\n\n /** Raw input value */\n get rawInputValue() {\n return this._rawInputValue;\n }\n set rawInputValue(str) {\n if (this.rawInputValue === str) return;\n this.masked.rawInputValue = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Typed unmasked value */\n get typedValue() {\n return this.masked.typedValue;\n }\n set typedValue(val) {\n if (this.masked.typedValueEquals(val)) return;\n this.masked.typedValue = val;\n this.updateControl('auto');\n }\n\n /** Display value */\n get displayValue() {\n return this.masked.displayValue;\n }\n\n /** Starts listening to element events */\n _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange,\n undo: this._onUndo,\n redo: this._onRedo\n });\n }\n\n /** Stops listening to element events */\n _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n\n /** Fires custom event */\n _fireEvent(ev, e) {\n const listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(l => l(e));\n }\n\n /** Current selection start */\n get selectionStart() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n\n /** Current cursor position */\n get cursorPos() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n }\n set cursorPos(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n this._saveSelection();\n }\n\n /** Stores current selection */\n _saveSelection( /* ev */\n ) {\n if (this.displayValue !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n\n /** Syncronizes model value from view */\n updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n this._unmaskedValue = this.masked.unmaskedValue;\n this._rawInputValue = this.masked.rawInputValue;\n }\n\n /** Syncronizes view from model value, fires change events */\n updateControl(cursorPos) {\n const newUnmaskedValue = this.masked.unmaskedValue;\n const newValue = this.masked.value;\n const newRawInputValue = this.masked.rawInputValue;\n const newDisplayValue = this.displayValue;\n const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue || this._rawInputValue !== newRawInputValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n this._rawInputValue = newRawInputValue;\n if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue;\n if (cursorPos === 'auto') this.alignCursor();else if (cursorPos != null) this.cursorPos = cursorPos;\n if (isChanged) this._fireChangeEvents();\n if (!this._historyChanging && (isChanged || this.history.isEmpty)) this.history.push({\n unmaskedValue: newUnmaskedValue,\n selection: {\n start: this.selectionStart,\n end: this.cursorPos\n }\n });\n }\n\n /** Updates options with deep equal check, recreates {@link Masked} model if mask type changes */\n updateOptions(opts) {\n const {\n mask,\n ...restOpts\n } = opts; // TODO types, yes, mask is optional\n\n const updateMask = !this.maskEquals(mask);\n const updateOpts = this.masked.optionsIsChanged(restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts); // TODO\n\n if (updateMask || updateOpts) this.updateControl();\n }\n\n /** Updates cursor */\n updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos;\n\n // also queue change cursor for mobile browsers\n this._delayUpdateCursor(cursorPos);\n }\n\n /** Delays cursor update to support mobile browsers */\n _delayUpdateCursor(cursorPos) {\n this._abortUpdateCursor();\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(() => {\n if (!this.el) return; // if was destroyed\n this.cursorPos = this._changingCursorPos;\n this._abortUpdateCursor();\n }, 10);\n }\n\n /** Fires custom events */\n _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n\n /** Aborts delayed cursor update */\n _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n\n /** Aligns cursor to nearest available position */\n alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT));\n }\n\n /** Aligns cursor only if selection is empty */\n alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n this.alignCursor();\n }\n\n /** Adds listener on custom event */\n on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n this._listeners[ev].push(handler);\n return this;\n }\n\n /** Removes custom event listener */\n off(ev, handler) {\n if (!this._listeners[ev]) return this;\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n const hIndex = this._listeners[ev].indexOf(handler);\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n\n /** Handles view input event */\n _onInput(e) {\n this._inputEvent = e;\n this._abortUpdateCursor();\n const details = new ActionDetails({\n // new state\n value: this.el.value,\n cursorPos: this.cursorPos,\n // old state\n oldValue: this.displayValue,\n oldSelection: this._selection\n });\n const oldRawValue = this.masked.rawInputValue;\n const offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, {\n input: true,\n raw: true\n }).offset;\n\n // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n const removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n let cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\n this.updateControl(cursorPos);\n delete this._inputEvent;\n }\n\n /** Handles view change event and commits model value */\n _onChange() {\n if (this.displayValue !== this.el.value) this.updateValue();\n this.masked.doCommit();\n this.updateControl();\n this._saveSelection();\n }\n\n /** Handles view drop event, prevents by default */\n _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n /** Restore last selection on focus */\n _onFocus(ev) {\n this.alignCursorFriendly();\n }\n\n /** Restore last selection on focus */\n _onClick(ev) {\n this.alignCursorFriendly();\n }\n _onUndo() {\n this._applyHistoryState(this.history.undo());\n }\n _onRedo() {\n this._applyHistoryState(this.history.redo());\n }\n _applyHistoryState(state) {\n if (!state) return;\n this._historyChanging = true;\n this.unmaskedValue = state.unmaskedValue;\n this.el.select(state.selection.start, state.selection.end);\n this._saveSelection();\n this._historyChanging = false;\n }\n\n /** Unbind view events and removes element reference */\n destroy() {\n this._unbindEvents();\n this._listeners.length = 0;\n delete this.el;\n }\n}\nIMask.InputMask = InputMask;\n\nexport { InputMask as default };\n","import IMask from './holder.js';\n\n/** Provides details of changing model value */\nclass ChangeDetails {\n /** Inserted symbols */\n\n /** Additional offset if any changes occurred before tail */\n\n /** Raw inserted is used by dynamic mask */\n\n /** Can skip chars */\n\n static normalize(prep) {\n return Array.isArray(prep) ? prep : [prep, new ChangeDetails()];\n }\n constructor(details) {\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n tailShift: 0,\n skip: false\n }, details);\n }\n\n /** Aggregate changes */\n aggregate(details) {\n this.inserted += details.inserted;\n this.rawInserted += details.rawInserted;\n this.tailShift += details.tailShift;\n this.skip = this.skip || details.skip;\n return this;\n }\n\n /** Total offset considering all changes */\n get offset() {\n return this.tailShift + this.inserted.length;\n }\n get consumed() {\n return Boolean(this.rawInserted) || this.skip;\n }\n equals(details) {\n return this.inserted === details.inserted && this.tailShift === details.tailShift && this.rawInserted === details.rawInserted && this.skip === details.skip;\n }\n}\nIMask.ChangeDetails = ChangeDetails;\n\nexport { ChangeDetails as default };\n","/** Provides details of continuous extracted tail */\nclass ContinuousTailDetails {\n /** Tail value as string */\n\n /** Tail start position */\n\n /** Start position */\n\n constructor(value, from, stop) {\n if (value === void 0) {\n value = '';\n }\n if (from === void 0) {\n from = 0;\n }\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n toString() {\n return this.value;\n }\n extend(tail) {\n this.value += String(tail);\n }\n appendTo(masked) {\n return masked.append(this.toString(), {\n tail: true\n }).aggregate(masked._appendPlaceholder());\n }\n get state() {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop\n };\n }\n set state(state) {\n Object.assign(this, state);\n }\n unshift(beforePos) {\n if (!this.value.length || beforePos != null && this.from >= beforePos) return '';\n const shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n shift() {\n if (!this.value.length) return '';\n const shiftChar = this.value[this.value.length - 1];\n this.value = this.value.slice(0, -1);\n return shiftChar;\n }\n}\n\nexport { ContinuousTailDetails as default };\n","import ChangeDetails from '../core/change-details.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport { isString, DIRECTION, objectIncludes, forceDirection } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n/** Append flags */\n\n/** Extract flags */\n\n// see https://github.com/microsoft/TypeScript/issues/6223\n\n/** Provides common masking stuff */\nclass Masked {\n /** */\n\n /** */\n\n /** Transforms value before mask processing */\n\n /** Transforms each char before mask processing */\n\n /** Validates if value is acceptable */\n\n /** Does additional processing at the end of editing */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n this._value = '';\n this._update({\n ...Masked.DEFAULTS,\n ...opts\n });\n this._initialized = true;\n }\n\n /** Sets and applies new options */\n updateOptions(opts) {\n if (!this.optionsIsChanged(opts)) return;\n this.withValueRefresh(this._update.bind(this, opts));\n }\n\n /** Sets new options */\n _update(opts) {\n Object.assign(this, opts);\n }\n\n /** Mask state */\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n }\n\n /** Resets value */\n reset() {\n this._value = '';\n }\n get value() {\n return this._value;\n }\n set value(value) {\n this.resolve(value, {\n input: true\n });\n }\n\n /** Resolve new value */\n resolve(value, flags) {\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n this.reset();\n this.append(value, flags, '');\n this.doCommit();\n }\n get unmaskedValue() {\n return this.value;\n }\n set unmaskedValue(value) {\n this.resolve(value, {});\n }\n get typedValue() {\n return this.parse ? this.parse(this.value, this) : this.unmaskedValue;\n }\n set typedValue(value) {\n if (this.format) {\n this.value = this.format(value, this);\n } else {\n this.unmaskedValue = String(value);\n }\n }\n\n /** Value that includes raw user input */\n get rawInputValue() {\n return this.extractInput(0, this.displayValue.length, {\n raw: true\n });\n }\n set rawInputValue(value) {\n this.resolve(value, {\n raw: true\n });\n }\n get displayValue() {\n return this.value;\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return this.isComplete;\n }\n\n /** Finds nearest input position in direction */\n nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return Math.min(this.displayValue.length, toPos - fromPos);\n }\n\n /** Extracts value in range considering flags */\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return this.displayValue.slice(fromPos, toPos);\n }\n\n /** Extracts tail in range */\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n\n /** Appends tail */\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n\n /** Appends char */\n _appendCharRaw(ch, flags) {\n if (!ch) return new ChangeDetails();\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch\n });\n }\n\n /** Appends char */\n _appendChar(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const consistentState = this.state;\n let details;\n [ch, details] = this.doPrepareChar(ch, flags);\n if (ch) {\n details = details.aggregate(this._appendCharRaw(ch, flags));\n\n // TODO handle `skip`?\n\n // try `autofix` lookahead\n if (!details.rawInserted && this.autofix === 'pad') {\n const noFixState = this.state;\n this.state = consistentState;\n let fixDetails = this.pad(flags);\n const chDetails = this._appendCharRaw(ch, flags);\n fixDetails = fixDetails.aggregate(chDetails);\n\n // if fix was applied or\n // if details are equal use skip restoring state optimization\n if (chDetails.rawInserted || fixDetails.equals(details)) {\n details = fixDetails;\n } else {\n this.state = noFixState;\n }\n }\n }\n if (details.inserted) {\n let consistentTail;\n let appended = this.doValidate(flags) !== false;\n if (appended && checkTail != null) {\n // validation ok, check tail\n const beforeTailState = this.state;\n if (this.overwrite === true) {\n consistentTail = checkTail.state;\n for (let i = 0; i < details.rawInserted.length; ++i) {\n checkTail.unshift(this.displayValue.length - details.tailShift);\n }\n }\n let tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted.length === checkTail.toString().length;\n\n // not ok, try shift\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\n this.state = beforeTailState;\n consistentTail = checkTail.state;\n for (let i = 0; i < details.rawInserted.length; ++i) {\n checkTail.shift();\n }\n tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted.length === checkTail.toString().length;\n }\n\n // if ok, rollback state after tail\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n }\n\n // revert all if something went wrong\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n return details;\n }\n\n /** Appends optional placeholder at the end */\n _appendPlaceholder() {\n return new ChangeDetails();\n }\n\n /** Appends optional eager placeholder at the end */\n _appendEager() {\n return new ChangeDetails();\n }\n\n /** Appends symbols considering flags */\n append(str, flags, tail) {\n if (!isString(str)) throw new Error('value should be string');\n const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags != null && flags.tail) flags._beforeTailState = this.state;\n let details;\n [str, details] = this.doPrepare(str, flags);\n for (let ci = 0; ci < str.length; ++ci) {\n const d = this._appendChar(str[ci], flags, checkTail);\n if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) break;\n details.aggregate(d);\n }\n if ((this.eager === true || this.eager === 'append') && flags != null && flags.input && str) {\n details.aggregate(this._appendEager());\n }\n\n // append tail but aggregate only tailShift\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift;\n // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n return details;\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n this._value = this.displayValue.slice(0, fromPos) + this.displayValue.slice(toPos);\n return new ChangeDetails();\n }\n\n /** Calls function and reapplies current value */\n withValueRefresh(fn) {\n if (this._refreshing || !this._initialized) return fn();\n this._refreshing = true;\n const rawInput = this.rawInputValue;\n const value = this.value;\n const ret = fn();\n this.rawInputValue = rawInput;\n // append lost trailing chars at the end\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.displayValue.length), {}, '');\n this.doCommit();\n }\n delete this._refreshing;\n return ret;\n }\n runIsolated(fn) {\n if (this._isolated || !this._initialized) return fn(this);\n this._isolated = true;\n const state = this.state;\n const ret = fn(this);\n this.state = state;\n delete this._isolated;\n return ret;\n }\n doSkipInvalid(ch, flags, checkTail) {\n return Boolean(this.skipInvalid);\n }\n\n /** Prepares string before mask processing */\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepare ? this.prepare(str, this, flags) : str);\n }\n\n /** Prepares each char before mask processing */\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepareChar ? this.prepareChar(str, this, flags) : str);\n }\n\n /** Validates if value is acceptable */\n doValidate(flags) {\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n }\n\n /** Does additional processing at the end of editing */\n doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n splice(start, deleteCount, inserted, removeDirection, flags) {\n if (inserted === void 0) {\n inserted = '';\n }\n if (removeDirection === void 0) {\n removeDirection = DIRECTION.NONE;\n }\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n const tailPos = start + deleteCount;\n const tail = this.extractTail(tailPos);\n const eagerRemove = this.eager === true || this.eager === 'remove';\n let oldRawValue;\n if (eagerRemove) {\n removeDirection = forceDirection(removeDirection);\n oldRawValue = this.extractInput(0, tailPos, {\n raw: true\n });\n }\n let startChangePos = start;\n const details = new ChangeDetails();\n\n // if it is just deletion without insertion\n if (removeDirection !== DIRECTION.NONE) {\n startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !eagerRemove ? DIRECTION.NONE : removeDirection);\n\n // adjust tailShift if start was aligned\n details.tailShift = startChangePos - start;\n }\n details.aggregate(this.remove(startChangePos));\n if (eagerRemove && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {\n if (removeDirection === DIRECTION.FORCE_LEFT) {\n let valLength;\n while (oldRawValue === this.rawInputValue && (valLength = this.displayValue.length)) {\n details.aggregate(new ChangeDetails({\n tailShift: -1\n })).aggregate(this.remove(valLength - 1));\n }\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\n tail.unshift();\n }\n }\n return details.aggregate(this.append(inserted, flags, tail));\n }\n maskEquals(mask) {\n return this.mask === mask;\n }\n optionsIsChanged(opts) {\n return !objectIncludes(this, opts);\n }\n typedValueEquals(value) {\n const tval = this.typedValue;\n return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || (this.format ? this.format(value, this) === this.format(this.typedValue, this) : false);\n }\n pad(flags) {\n return new ChangeDetails();\n }\n}\nMasked.DEFAULTS = {\n skipInvalid: true\n};\nMasked.EMPTY_VALUES = [undefined, null, ''];\nIMask.Masked = Masked;\n\nexport { Masked as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport IMask from '../../core/holder.js';\n\nclass ChunksTailDetails {\n /** */\n\n constructor(chunks, from) {\n if (chunks === void 0) {\n chunks = [];\n }\n if (from === void 0) {\n from = 0;\n }\n this.chunks = chunks;\n this.from = from;\n }\n toString() {\n return this.chunks.map(String).join('');\n }\n extend(tailChunk) {\n if (!String(tailChunk)) return;\n tailChunk = isString(tailChunk) ? new ContinuousTailDetails(String(tailChunk)) : tailChunk;\n const lastChunk = this.chunks[this.chunks.length - 1];\n const extendLast = lastChunk && (\n // if stops are same or tail has no stop\n lastChunk.stop === tailChunk.stop || tailChunk.stop == null) &&\n // if tail chunk goes just after last chunk\n tailChunk.from === lastChunk.from + lastChunk.toString().length;\n if (tailChunk instanceof ContinuousTailDetails) {\n // check the ability to extend previous chunk\n if (extendLast) {\n // extend previous chunk\n lastChunk.extend(tailChunk.toString());\n } else {\n // append new chunk\n this.chunks.push(tailChunk);\n }\n } else if (tailChunk instanceof ChunksTailDetails) {\n if (tailChunk.stop == null) {\n // unwrap floating chunks to parent, keeping `from` pos\n let firstTailChunk;\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n firstTailChunk = tailChunk.chunks.shift(); // not possible to be `undefined` because length was checked above\n firstTailChunk.from += tailChunk.from;\n this.extend(firstTailChunk);\n }\n }\n\n // if tail chunk still has value\n if (tailChunk.toString()) {\n // if chunks contains stops, then popup stop to container\n tailChunk.stop = tailChunk.blockIndex;\n this.chunks.push(tailChunk);\n }\n }\n }\n appendTo(masked) {\n if (!(masked instanceof IMask.MaskedPattern)) {\n const tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n const details = new ChangeDetails();\n for (let ci = 0; ci < this.chunks.length; ++ci) {\n const chunk = this.chunks[ci];\n const lastBlockIter = masked._mapPosToBlock(masked.displayValue.length);\n const stop = chunk.stop;\n let chunkBlock;\n if (stop != null && (\n // if block not found or stop is behind lastBlock\n !lastBlockIter || lastBlockIter.index <= stop)) {\n if (chunk instanceof ChunksTailDetails ||\n // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0) {\n details.aggregate(masked._appendPlaceholder(stop));\n }\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n if (chunkBlock) {\n const tailDetails = chunkBlock.appendTail(chunk);\n details.aggregate(tailDetails);\n\n // get not inserted chars\n const remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, {\n tail: true\n }));\n } else {\n details.aggregate(masked.append(chunk.toString(), {\n tail: true\n }));\n }\n }\n return details;\n }\n get state() {\n return {\n chunks: this.chunks.map(c => c.state),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex\n };\n }\n set state(state) {\n const {\n chunks,\n ...props\n } = state;\n Object.assign(this, props);\n this.chunks = chunks.map(cstate => {\n const chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails();\n chunk.state = cstate;\n return chunk;\n });\n }\n unshift(beforePos) {\n if (!this.chunks.length || beforePos != null && this.from >= beforePos) return '';\n const chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos;\n let ci = 0;\n while (ci < this.chunks.length) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.unshift(chunkShiftPos);\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n ++ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n shift() {\n if (!this.chunks.length) return '';\n let ci = this.chunks.length - 1;\n while (0 <= ci) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.shift();\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n --ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n}\n\nexport { ChunksTailDetails as default };\n","import { DIRECTION } from '../../core/utils.js';\n\nclass PatternCursor {\n constructor(masked, pos) {\n this.masked = masked;\n this._log = [];\n const {\n offset,\n index\n } = masked._mapPosToBlock(pos) || (pos < 0 ?\n // first\n {\n index: 0,\n offset: 0\n } :\n // last\n {\n index: this.masked._blocks.length,\n offset: 0\n });\n this.offset = offset;\n this.index = index;\n this.ok = false;\n }\n get block() {\n return this.masked._blocks[this.index];\n }\n get pos() {\n return this.masked._blockStartPos(this.index) + this.offset;\n }\n get state() {\n return {\n index: this.index,\n offset: this.offset,\n ok: this.ok\n };\n }\n set state(s) {\n Object.assign(this, s);\n }\n pushState() {\n this._log.push(this.state);\n }\n popState() {\n const s = this._log.pop();\n if (s) this.state = s;\n return s;\n }\n bindBlock() {\n if (this.block) return;\n if (this.index < 0) {\n this.index = 0;\n this.offset = 0;\n }\n if (this.index >= this.masked._blocks.length) {\n this.index = this.masked._blocks.length - 1;\n this.offset = this.block.displayValue.length; // TODO this is stupid type error, `block` depends on index that was changed above\n }\n }\n _pushLeft(fn) {\n this.pushState();\n for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = ((_this$block = this.block) == null ? void 0 : _this$block.displayValue.length) || 0) {\n var _this$block;\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n _pushRight(fn) {\n this.pushState();\n for (this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0) {\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n pushLeftBeforeFilled() {\n return this._pushLeft(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_LEFT);\n if (this.offset !== 0) return true;\n });\n }\n pushLeftBeforeInput() {\n // cases:\n // filled input: 00|\n // optional empty input: 00[]|\n // nested block: XX<[]>|\n return this._pushLeft(() => {\n if (this.block.isFixed) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushLeftBeforeRequired() {\n return this._pushLeft(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushRightBeforeFilled() {\n return this._pushRight(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_RIGHT);\n if (this.offset !== this.block.value.length) return true;\n });\n }\n pushRightBeforeInput() {\n return this._pushRight(() => {\n if (this.block.isFixed) return;\n\n // const o = this.offset;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n // HACK cases like (STILL DOES NOT WORK FOR NESTED)\n // aa|X\n // aa<X|[]>X_ - this will not work\n // if (o && o === this.offset && this.block instanceof PatternInputDefinition) continue;\n return true;\n });\n }\n pushRightBeforeRequired() {\n return this._pushRight(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n\n // TODO check |[*]XX_\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n return true;\n });\n }\n}\n\nexport { PatternCursor as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION, isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport '../../core/holder.js';\n\nclass PatternFixedDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n Object.assign(this, opts);\n this._value = '';\n this.isFixed = true;\n }\n get value() {\n return this._value;\n }\n get unmaskedValue() {\n return this.isUnmasking ? this.value : '';\n }\n get rawInputValue() {\n return this._isRawInput ? this.value : '';\n }\n get displayValue() {\n return this.value;\n }\n reset() {\n this._isRawInput = false;\n this._value = '';\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n return new ChangeDetails();\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this._value.length;\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n return this._isRawInput ? toPos - fromPos : 0;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return Boolean(this._value);\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (this.isFilled) return new ChangeDetails();\n const appendEager = this.eager === true || this.eager === 'append';\n const appended = this.char === ch;\n const isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !appendEager) && !flags.tail;\n const details = new ChangeDetails({\n inserted: this.char,\n rawInserted: isResolved ? this.char : ''\n });\n this._value = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n return details;\n }\n _appendEager() {\n return this._appendChar(this.char, {\n tail: true\n });\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n this._value = details.inserted = this.char;\n return details;\n }\n extractTail() {\n return new ContinuousTailDetails('');\n }\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n append(str, flags, tail) {\n const details = this._appendChar(str[0], flags);\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n return details;\n }\n doCommit() {}\n get state() {\n return {\n _value: this._value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n this._isRawInput = Boolean(state._rawInputValue);\n }\n pad(flags) {\n return this._appendPlaceholder();\n }\n}\n\nexport { PatternFixedDefinition as default };\n","import createMask from '../factory.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION } from '../../core/utils.js';\nimport '../../core/holder.js';\n\nclass PatternInputDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n const {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager,\n ...maskOpts\n } = opts;\n this.masked = createMask(maskOpts);\n Object.assign(this, {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager\n });\n }\n reset() {\n this.isFilled = false;\n this.masked.reset();\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n if (fromPos === 0 && toPos >= 1) {\n this.isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n return new ChangeDetails();\n }\n get value() {\n return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : '');\n }\n get unmaskedValue() {\n return this.masked.unmaskedValue;\n }\n get rawInputValue() {\n return this.masked.rawInputValue;\n }\n get displayValue() {\n return this.masked.value && this.displayChar || this.value;\n }\n get isComplete() {\n return Boolean(this.masked.value) || this.isOptional;\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (this.isFilled) return new ChangeDetails();\n const state = this.masked.state;\n // simulate input\n let details = this.masked._appendChar(ch, this.currentMaskFlags(flags));\n if (details.inserted && this.doValidate(flags) === false) {\n details = new ChangeDetails();\n this.masked.state = state;\n }\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n details.inserted = this.placeholderChar;\n }\n details.skip = !details.inserted && !this.isOptional;\n this.isFilled = Boolean(details.inserted);\n return details;\n }\n append(str, flags, tail) {\n // TODO probably should be done via _appendChar\n return this.masked.append(str, this.currentMaskFlags(flags), tail);\n }\n _appendPlaceholder() {\n if (this.isFilled || this.isOptional) return new ChangeDetails();\n this.isFilled = true;\n return new ChangeDetails({\n inserted: this.placeholderChar\n });\n }\n _appendEager() {\n return new ChangeDetails();\n }\n extractTail(fromPos, toPos) {\n return this.masked.extractTail(fromPos, toPos);\n }\n appendTail(tail) {\n return this.masked.appendTail(tail);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this.value.length;\n const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return this.isComplete ? boundPos : minPos;\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n case DIRECTION.NONE:\n default:\n return boundPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.value.slice(fromPos, toPos).length;\n }\n doValidate(flags) {\n return this.masked.doValidate(this.currentMaskFlags(flags)) && (!this.parent || this.parent.doValidate(this.currentMaskFlags(flags)));\n }\n doCommit() {\n this.masked.doCommit();\n }\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue,\n masked: this.masked.state,\n isFilled: this.isFilled\n };\n }\n set state(state) {\n this.masked.state = state.masked;\n this.isFilled = state.isFilled;\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta;\n return {\n ...flags,\n _beforeTailState: (flags == null || (_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.masked) || (flags == null ? void 0 : flags._beforeTailState)\n };\n }\n pad(flags) {\n return new ChangeDetails();\n }\n}\nPatternInputDefinition.DEFAULT_DEFINITIONS = {\n '0': /\\d/,\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // http://stackoverflow.com/a/22075070\n '*': /./\n};\n\nexport { PatternInputDefinition as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by RegExp */\nclass MaskedRegExp extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const mask = opts.mask;\n if (mask) opts.validate = value => value.search(mask) >= 0;\n super._update(opts);\n }\n}\nIMask.MaskedRegExp = MaskedRegExp;\n\nexport { MaskedRegExp as default };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport { DIRECTION } from '../core/utils.js';\nimport Masked from './base.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport ChunksTailDetails from './pattern/chunk-tail-details.js';\nimport PatternCursor from './pattern/cursor.js';\nimport PatternFixedDefinition from './pattern/fixed-definition.js';\nimport PatternInputDefinition from './pattern/input-definition.js';\nimport './regexp.js';\nimport '../core/continuous-tail-details.js';\n\n/** Pattern mask */\nclass MaskedPattern extends Masked {\n /** */\n\n /** */\n\n /** Single char for empty input */\n\n /** Single char for filled input */\n\n /** Show placeholder only when needed */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n super({\n ...MaskedPattern.DEFAULTS,\n ...opts,\n definitions: Object.assign({}, PatternInputDefinition.DEFAULT_DEFINITIONS, opts == null ? void 0 : opts.definitions)\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n super._update(opts);\n this._rebuildMask();\n }\n _rebuildMask() {\n const defs = this.definitions;\n this._blocks = [];\n this.exposeBlock = undefined;\n this._stops = [];\n this._maskedBlocks = {};\n const pattern = this.mask;\n if (!pattern || !defs) return;\n let unmaskingBlock = false;\n let optionalBlock = false;\n for (let i = 0; i < pattern.length; ++i) {\n if (this.blocks) {\n const p = pattern.slice(i);\n const bNames = Object.keys(this.blocks).filter(bName => p.indexOf(bName) === 0);\n // order by key length\n bNames.sort((a, b) => b.length - a.length);\n // use block name with max length\n const bName = bNames[0];\n if (bName) {\n const {\n expose,\n repeat,\n ...bOpts\n } = normalizeOpts(this.blocks[bName]); // TODO type Opts<Arg & Extra>\n const blockOpts = {\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n overwrite: this.overwrite,\n autofix: this.autofix,\n ...bOpts,\n repeat,\n parent: this\n };\n const maskedBlock = repeat != null ? new IMask.RepeatBlock(blockOpts /* TODO */) : createMask(blockOpts);\n if (maskedBlock) {\n this._blocks.push(maskedBlock);\n if (expose) this.exposeBlock = maskedBlock;\n\n // store block index\n if (!this._maskedBlocks[bName]) this._maskedBlocks[bName] = [];\n this._maskedBlocks[bName].push(this._blocks.length - 1);\n }\n i += bName.length - 1;\n continue;\n }\n }\n let char = pattern[i];\n let isInput = (char in defs);\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n continue;\n }\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n isInput = false;\n }\n const def = isInput ? new PatternInputDefinition({\n isOptional: optionalBlock,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n ...normalizeOpts(defs[char]),\n parent: this\n }) : new PatternFixedDefinition({\n char,\n eager: this.eager,\n isUnmasking: unmaskingBlock\n });\n this._blocks.push(def);\n }\n }\n get state() {\n return {\n ...super.state,\n _blocks: this._blocks.map(b => b.state)\n };\n }\n set state(state) {\n if (!state) {\n this.reset();\n return;\n }\n const {\n _blocks,\n ...maskedState\n } = state;\n this._blocks.forEach((b, bi) => b.state = _blocks[bi]);\n super.state = maskedState;\n }\n reset() {\n super.reset();\n this._blocks.forEach(b => b.reset());\n }\n get isComplete() {\n return this.exposeBlock ? this.exposeBlock.isComplete : this._blocks.every(b => b.isComplete);\n }\n get isFilled() {\n return this._blocks.every(b => b.isFilled);\n }\n get isFixed() {\n return this._blocks.every(b => b.isFixed);\n }\n get isOptional() {\n return this._blocks.every(b => b.isOptional);\n }\n doCommit() {\n this._blocks.forEach(b => b.doCommit());\n super.doCommit();\n }\n get unmaskedValue() {\n return this.exposeBlock ? this.exposeBlock.unmaskedValue : this._blocks.reduce((str, b) => str += b.unmaskedValue, '');\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.unmaskedValue = unmaskedValue;\n this.appendTail(tail);\n this.doCommit();\n } else super.unmaskedValue = unmaskedValue;\n }\n get value() {\n return this.exposeBlock ? this.exposeBlock.value :\n // TODO return _value when not in change?\n this._blocks.reduce((str, b) => str += b.value, '');\n }\n set value(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.value = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.value = value;\n }\n get typedValue() {\n return this.exposeBlock ? this.exposeBlock.typedValue : super.typedValue;\n }\n set typedValue(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.typedValue = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.typedValue = value;\n }\n get displayValue() {\n return this._blocks.reduce((str, b) => str += b.displayValue, '');\n }\n appendTail(tail) {\n return super.appendTail(tail).aggregate(this._appendPlaceholder());\n }\n _appendEager() {\n var _this$_mapPosToBlock;\n const details = new ChangeDetails();\n let startBlockIndex = (_this$_mapPosToBlock = this._mapPosToBlock(this.displayValue.length)) == null ? void 0 : _this$_mapPosToBlock.index;\n if (startBlockIndex == null) return details;\n\n // TODO test if it works for nested pattern masks\n if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex;\n for (let bi = startBlockIndex; bi < this._blocks.length; ++bi) {\n const d = this._blocks[bi]._appendEager();\n if (!d.inserted) break;\n details.aggregate(d);\n }\n return details;\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const blockIter = this._mapPosToBlock(this.displayValue.length);\n const details = new ChangeDetails();\n if (!blockIter) return details;\n for (let bi = blockIter.index, block; block = this._blocks[bi]; ++bi) {\n var _flags$_beforeTailSta;\n const blockDetails = block._appendChar(ch, {\n ...flags,\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) == null || (_flags$_beforeTailSta = _flags$_beforeTailSta._blocks) == null ? void 0 : _flags$_beforeTailSta[bi]\n });\n details.aggregate(blockDetails);\n if (blockDetails.consumed) break; // go next char\n }\n return details;\n }\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n this._forEachBlocksInRange(fromPos, toPos, (b, bi, bFromPos, bToPos) => {\n const blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = this._findStopBefore(bi);\n blockChunk.from = this._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n chunkTail.extend(blockChunk);\n });\n return chunkTail;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n if (fromPos === toPos) return '';\n let input = '';\n this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => {\n input += b.extractInput(fromPos, toPos, flags);\n });\n return input;\n }\n _findStopBefore(blockIndex) {\n let stopBefore;\n for (let si = 0; si < this._stops.length; ++si) {\n const stop = this._stops[si];\n if (stop <= blockIndex) stopBefore = stop;else break;\n }\n return stopBefore;\n }\n\n /** Appends placeholder depending on laziness */\n _appendPlaceholder(toBlockIndex) {\n const details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n const startBlockIter = this._mapPosToBlock(this.displayValue.length);\n if (!startBlockIter) return details;\n const startBlockIndex = startBlockIter.index;\n const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(b => {\n if (!b.lazy || toBlockIndex != null) {\n var _blocks2;\n details.aggregate(b._appendPlaceholder((_blocks2 = b._blocks) == null ? void 0 : _blocks2.length));\n }\n });\n return details;\n }\n\n /** Finds block in pos */\n _mapPosToBlock(pos) {\n let accVal = '';\n for (let bi = 0; bi < this._blocks.length; ++bi) {\n const block = this._blocks[bi];\n const blockStartPos = accVal.length;\n accVal += block.displayValue;\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos\n };\n }\n }\n }\n _blockStartPos(blockIndex) {\n return this._blocks.slice(0, blockIndex).reduce((pos, b) => pos += b.displayValue.length, 0);\n }\n _forEachBlocksInRange(fromPos, toPos, fn) {\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const fromBlockIter = this._mapPosToBlock(fromPos);\n if (fromBlockIter) {\n const toBlockIter = this._mapPosToBlock(toPos);\n // process first block\n const isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n const fromBlockStartPos = fromBlockIter.offset;\n const fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].displayValue.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (let bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].displayValue.length);\n }\n\n // process last block\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const removeDetails = super.remove(fromPos, toPos);\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n return removeDetails;\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n if (!this._blocks.length) return 0;\n const cursor = new PatternCursor(this, cursorPos);\n if (direction === DIRECTION.NONE) {\n // -------------------------------------------------\n // NONE should only go out from fixed to the right!\n // -------------------------------------------------\n if (cursor.pushRightBeforeInput()) return cursor.pos;\n cursor.popState();\n if (cursor.pushLeftBeforeInput()) return cursor.pos;\n return this.displayValue.length;\n }\n\n // FORCE is only about a|* otherwise is 0\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // try to break fast when *|a\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeFilled();\n if (cursor.ok && cursor.pos === cursorPos) return cursorPos;\n cursor.popState();\n }\n\n // forward flow\n cursor.pushLeftBeforeInput();\n cursor.pushLeftBeforeRequired();\n cursor.pushLeftBeforeFilled();\n\n // backward flow\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n }\n if (cursor.ok) return cursor.pos;\n if (direction === DIRECTION.FORCE_LEFT) return 0;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return 0;\n }\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // forward flow\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.pushRightBeforeFilled()) return cursor.pos;\n if (direction === DIRECTION.FORCE_RIGHT) return this.displayValue.length;\n\n // backward flow\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\n }\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n let total = 0;\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n total += b.totalInputPositions(bFromPos, bToPos);\n });\n return total;\n }\n\n /** Get block by name */\n maskedBlock(name) {\n return this.maskedBlocks(name)[0];\n }\n\n /** Get all blocks by name */\n maskedBlocks(name) {\n const indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(gi => this._blocks[gi]);\n }\n pad(flags) {\n const details = new ChangeDetails();\n this._forEachBlocksInRange(0, this.displayValue.length, b => details.aggregate(b.pad(flags)));\n return details;\n }\n}\nMaskedPattern.DEFAULTS = {\n ...Masked.DEFAULTS,\n lazy: true,\n placeholderChar: '_'\n};\nMaskedPattern.STOP_CHAR = '`';\nMaskedPattern.ESCAPE_CHAR = '\\\\';\nMaskedPattern.InputDefinition = PatternInputDefinition;\nMaskedPattern.FixedDefinition = PatternFixedDefinition;\nIMask.MaskedPattern = MaskedPattern;\n\nexport { MaskedPattern as default };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport MaskedPattern from './pattern.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which accepts ranges */\nclass MaskedRange extends MaskedPattern {\n /**\n Optionally sets max length of pattern.\n Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\n */\n\n /** Min bound */\n\n /** Max bound */\n\n get _matchFrom() {\n return this.maxLength - String(this.from).length;\n }\n constructor(opts) {\n super(opts); // mask will be created in _update\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n to = this.to || 0,\n from = this.from || 0,\n maxLength = this.maxLength || 0,\n autofix = this.autofix,\n ...patternOpts\n } = opts;\n this.to = to;\n this.from = from;\n this.maxLength = Math.max(String(to).length, maxLength);\n this.autofix = autofix;\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n let sameCharsCount = 0;\n while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) ++sameCharsCount;\n patternOpts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(this.maxLength - sameCharsCount);\n super._update(patternOpts);\n }\n get isComplete() {\n return super.isComplete && Boolean(this.value);\n }\n boundaries(str) {\n let minstr = '';\n let maxstr = '';\n const [, placeholder, num] = str.match(/^(\\D*)(\\d*)(\\D*)/) || [];\n if (num) {\n minstr = '0'.repeat(placeholder.length) + num;\n maxstr = '9'.repeat(placeholder.length) + num;\n }\n minstr = minstr.padEnd(this.maxLength, '0');\n maxstr = maxstr.padEnd(this.maxLength, '9');\n return [minstr, maxstr];\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let details;\n [ch, details] = super.doPrepareChar(ch.replace(/\\D/g, ''), flags);\n if (!ch) details.skip = !this.isComplete;\n return [ch, details];\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (!this.autofix || this.value.length + 1 > this.maxLength) return super._appendCharRaw(ch, flags);\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n const [minstr, maxstr] = this.boundaries(this.value + ch);\n if (Number(maxstr) < this.from) return super._appendCharRaw(fromStr[this.value.length], flags);\n if (Number(minstr) > this.to) {\n if (!flags.tail && this.autofix === 'pad' && this.value.length + 1 < this.maxLength) {\n return super._appendCharRaw(fromStr[this.value.length], flags).aggregate(this._appendCharRaw(ch, flags));\n }\n return super._appendCharRaw(toStr[this.value.length], flags);\n }\n return super._appendCharRaw(ch, flags);\n }\n doValidate(flags) {\n const str = this.value;\n const firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n const [minstr, maxstr] = this.boundaries(str);\n return this.from <= Number(maxstr) && Number(minstr) <= this.to && super.doValidate(flags);\n }\n pad(flags) {\n const details = new ChangeDetails();\n if (this.value.length === this.maxLength) return details;\n const value = this.value;\n const padLength = this.maxLength - this.value.length;\n if (padLength) {\n this.reset();\n for (let i = 0; i < padLength; ++i) {\n details.aggregate(super._appendCharRaw('0', flags));\n }\n\n // append tail\n value.split('').forEach(ch => this._appendCharRaw(ch));\n }\n return details;\n }\n}\nIMask.MaskedRange = MaskedRange;\n\nexport { MaskedRange as default };\n","import MaskedPattern from './pattern.js';\nimport MaskedRange from './range.js';\nimport IMask from '../core/holder.js';\nimport { isString } from '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\nconst DefaultPattern = 'd{.}`m{.}`Y';\n\n// Make format and parse required when pattern is provided\n\n/** Date mask */\nclass MaskedDate extends MaskedPattern {\n static extractPatternOptions(opts) {\n const {\n mask,\n pattern,\n ...patternOpts\n } = opts;\n return {\n ...patternOpts,\n mask: isString(mask) ? mask : pattern\n };\n }\n\n /** Pattern mask for date according to {@link MaskedDate#format} */\n\n /** Start date */\n\n /** End date */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n super(MaskedDate.extractPatternOptions({\n ...MaskedDate.DEFAULTS,\n ...opts\n }));\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n mask,\n pattern,\n blocks,\n ...patternOpts\n } = {\n ...MaskedDate.DEFAULTS,\n ...opts\n };\n const patternBlocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS());\n // adjust year block\n if (opts.min) patternBlocks.Y.from = opts.min.getFullYear();\n if (opts.max) patternBlocks.Y.to = opts.max.getFullYear();\n if (opts.min && opts.max && patternBlocks.Y.from === patternBlocks.Y.to) {\n patternBlocks.m.from = opts.min.getMonth() + 1;\n patternBlocks.m.to = opts.max.getMonth() + 1;\n if (patternBlocks.m.from === patternBlocks.m.to) {\n patternBlocks.d.from = opts.min.getDate();\n patternBlocks.d.to = opts.max.getDate();\n }\n }\n Object.assign(patternBlocks, this.blocks, blocks);\n super._update({\n ...patternOpts,\n mask: isString(mask) ? mask : pattern,\n blocks: patternBlocks\n });\n }\n doValidate(flags) {\n const date = this.date;\n return super.doValidate(flags) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\n }\n\n /** Checks if date is exists */\n isDateExist(str) {\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n }\n\n /** Parsed Date */\n get date() {\n return this.typedValue;\n }\n set date(date) {\n this.typedValue = date;\n }\n get typedValue() {\n return this.isComplete ? super.typedValue : null;\n }\n set typedValue(value) {\n super.typedValue = value;\n }\n maskEquals(mask) {\n return mask === Date || super.maskEquals(mask);\n }\n optionsIsChanged(opts) {\n return super.optionsIsChanged(MaskedDate.extractPatternOptions(opts));\n }\n}\nMaskedDate.GET_DEFAULT_BLOCKS = () => ({\n d: {\n mask: MaskedRange,\n from: 1,\n to: 31,\n maxLength: 2\n },\n m: {\n mask: MaskedRange,\n from: 1,\n to: 12,\n maxLength: 2\n },\n Y: {\n mask: MaskedRange,\n from: 1900,\n to: 9999\n }\n});\nMaskedDate.DEFAULTS = {\n ...MaskedPattern.DEFAULTS,\n mask: Date,\n pattern: DefaultPattern,\n format: (date, masked) => {\n if (!date) return '';\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = date.getFullYear();\n return [day, month, year].join('.');\n },\n parse: (str, masked) => {\n const [day, month, year] = str.split('.').map(Number);\n return new Date(year, month - 1, day);\n }\n};\nIMask.MaskedDate = MaskedDate;\n\nexport { MaskedDate as default };\n","import { DIRECTION, objectIncludes } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/** Dynamic mask for choosing appropriate mask in run-time */\nclass MaskedDynamic extends Masked {\n constructor(opts) {\n super({\n ...MaskedDynamic.DEFAULTS,\n ...opts\n });\n this.currentMask = undefined;\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n if ('mask' in opts) {\n this.exposeMask = undefined;\n // mask could be totally dynamic with only `dispatch` option\n this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(m => {\n const {\n expose,\n ...maskOpts\n } = normalizeOpts(m);\n const masked = createMask({\n overwrite: this._overwrite,\n eager: this._eager,\n skipInvalid: this._skipInvalid,\n ...maskOpts\n });\n if (expose) this.exposeMask = masked;\n return masked;\n }) : [];\n\n // this.currentMask = this.doDispatch(''); // probably not needed but lets see\n }\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = this._applyDispatch(ch, flags);\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendChar(ch, this.currentMaskFlags(flags)));\n }\n return details;\n }\n _applyDispatch(appended, flags, tail) {\n if (appended === void 0) {\n appended = '';\n }\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n const prevValueBeforeTail = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._value : this.value;\n const inputValue = this.rawInputValue;\n const insertValue = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._rawInputValue : inputValue;\n const tailValue = inputValue.slice(insertValue.length);\n const prevMask = this.currentMask;\n const details = new ChangeDetails();\n const prevMaskState = prevMask == null ? void 0 : prevMask.state;\n\n // clone flags to prevent overwriting `_beforeTailState`\n this.currentMask = this.doDispatch(appended, {\n ...flags\n }, tail);\n\n // restore state after dispatch\n if (this.currentMask) {\n if (this.currentMask !== prevMask) {\n // if mask changed reapply input\n this.currentMask.reset();\n if (insertValue) {\n this.currentMask.append(insertValue, {\n raw: true\n });\n details.tailShift = this.currentMask.value.length - prevValueBeforeTail.length;\n }\n if (tailValue) {\n details.tailShift += this.currentMask.append(tailValue, {\n raw: true,\n tail: true\n }).tailShift;\n }\n } else if (prevMaskState) {\n // Dispatch can do something bad with state, so\n // restore prev mask state\n this.currentMask.state = prevMaskState;\n }\n }\n return details;\n }\n _appendPlaceholder() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendPlaceholder());\n }\n return details;\n }\n _appendEager() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendEager());\n }\n return details;\n }\n appendTail(tail) {\n const details = new ChangeDetails();\n if (tail) details.aggregate(this._applyDispatch('', {}, tail));\n return details.aggregate(this.currentMask ? this.currentMask.appendTail(tail) : super.appendTail(tail));\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta, _flags$_beforeTailSta2;\n return {\n ...flags,\n _beforeTailState: ((_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.currentMaskRef) === this.currentMask && ((_flags$_beforeTailSta2 = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta2.currentMask) || flags._beforeTailState\n };\n }\n doDispatch(appended, flags, tail) {\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n return this.dispatch(appended, this, flags, tail);\n }\n doValidate(flags) {\n return super.doValidate(flags) && (!this.currentMask || this.currentMask.doValidate(this.currentMaskFlags(flags)));\n }\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepare(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepare(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepareChar(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepareChar(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n reset() {\n var _this$currentMask;\n (_this$currentMask = this.currentMask) == null || _this$currentMask.reset();\n this.compiledMasks.forEach(m => m.reset());\n }\n get value() {\n return this.exposeMask ? this.exposeMask.value : this.currentMask ? this.currentMask.value : '';\n }\n set value(value) {\n if (this.exposeMask) {\n this.exposeMask.value = value;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.value = value;\n }\n get unmaskedValue() {\n return this.exposeMask ? this.exposeMask.unmaskedValue : this.currentMask ? this.currentMask.unmaskedValue : '';\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeMask) {\n this.exposeMask.unmaskedValue = unmaskedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.exposeMask ? this.exposeMask.typedValue : this.currentMask ? this.currentMask.typedValue : '';\n }\n set typedValue(typedValue) {\n if (this.exposeMask) {\n this.exposeMask.typedValue = typedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n return;\n }\n let unmaskedValue = String(typedValue);\n\n // double check it\n if (this.currentMask) {\n this.currentMask.typedValue = typedValue;\n unmaskedValue = this.currentMask.unmaskedValue;\n }\n this.unmaskedValue = unmaskedValue;\n }\n get displayValue() {\n return this.currentMask ? this.currentMask.displayValue : '';\n }\n get isComplete() {\n var _this$currentMask2;\n return Boolean((_this$currentMask2 = this.currentMask) == null ? void 0 : _this$currentMask2.isComplete);\n }\n get isFilled() {\n var _this$currentMask3;\n return Boolean((_this$currentMask3 = this.currentMask) == null ? void 0 : _this$currentMask3.isFilled);\n }\n remove(fromPos, toPos) {\n const details = new ChangeDetails();\n if (this.currentMask) {\n details.aggregate(this.currentMask.remove(fromPos, toPos))\n // update with dispatch\n .aggregate(this._applyDispatch());\n }\n return details;\n }\n get state() {\n var _this$currentMask4;\n return {\n ...super.state,\n _rawInputValue: this.rawInputValue,\n compiledMasks: this.compiledMasks.map(m => m.state),\n currentMaskRef: this.currentMask,\n currentMask: (_this$currentMask4 = this.currentMask) == null ? void 0 : _this$currentMask4.state\n };\n }\n set state(state) {\n const {\n compiledMasks,\n currentMaskRef,\n currentMask,\n ...maskedState\n } = state;\n if (compiledMasks) this.compiledMasks.forEach((m, mi) => m.state = compiledMasks[mi]);\n if (currentMaskRef != null) {\n this.currentMask = currentMaskRef;\n this.currentMask.state = currentMask;\n }\n super.state = maskedState;\n }\n extractInput(fromPos, toPos, flags) {\n return this.currentMask ? this.currentMask.extractInput(fromPos, toPos, flags) : '';\n }\n extractTail(fromPos, toPos) {\n return this.currentMask ? this.currentMask.extractTail(fromPos, toPos) : super.extractTail(fromPos, toPos);\n }\n doCommit() {\n if (this.currentMask) this.currentMask.doCommit();\n super.doCommit();\n }\n nearestInputPos(cursorPos, direction) {\n return this.currentMask ? this.currentMask.nearestInputPos(cursorPos, direction) : super.nearestInputPos(cursorPos, direction);\n }\n get overwrite() {\n return this.currentMask ? this.currentMask.overwrite : this._overwrite;\n }\n set overwrite(overwrite) {\n this._overwrite = overwrite;\n }\n get eager() {\n return this.currentMask ? this.currentMask.eager : this._eager;\n }\n set eager(eager) {\n this._eager = eager;\n }\n get skipInvalid() {\n return this.currentMask ? this.currentMask.skipInvalid : this._skipInvalid;\n }\n set skipInvalid(skipInvalid) {\n this._skipInvalid = skipInvalid;\n }\n get autofix() {\n return this.currentMask ? this.currentMask.autofix : this._autofix;\n }\n set autofix(autofix) {\n this._autofix = autofix;\n }\n maskEquals(mask) {\n return Array.isArray(mask) ? this.compiledMasks.every((m, mi) => {\n if (!mask[mi]) return;\n const {\n mask: oldMask,\n ...restOpts\n } = mask[mi];\n return objectIncludes(m, restOpts) && m.maskEquals(oldMask);\n }) : super.maskEquals(mask);\n }\n typedValueEquals(value) {\n var _this$currentMask5;\n return Boolean((_this$currentMask5 = this.currentMask) == null ? void 0 : _this$currentMask5.typedValueEquals(value));\n }\n}\n/** Currently chosen mask */\n/** Currently chosen mask */\n/** Compliled {@link Masked} options */\n/** Chooses {@link Masked} depending on input value */\nMaskedDynamic.DEFAULTS = {\n ...Masked.DEFAULTS,\n dispatch: (appended, masked, flags, tail) => {\n if (!masked.compiledMasks.length) return;\n const inputValue = masked.rawInputValue;\n\n // simulate input\n const inputs = masked.compiledMasks.map((m, index) => {\n const isCurrent = masked.currentMask === m;\n const startInputPos = isCurrent ? m.displayValue.length : m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT);\n if (m.rawInputValue !== inputValue) {\n m.reset();\n m.append(inputValue, {\n raw: true\n });\n } else if (!isCurrent) {\n m.remove(startInputPos);\n }\n m.append(appended, masked.currentMaskFlags(flags));\n m.appendTail(tail);\n return {\n index,\n weight: m.rawInputValue.length,\n totalInputPositions: m.totalInputPositions(0, Math.max(startInputPos, m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT)))\n };\n });\n\n // pop masks with longer values first\n inputs.sort((i1, i2) => i2.weight - i1.weight || i2.totalInputPositions - i1.totalInputPositions);\n return masked.compiledMasks[inputs[0].index];\n }\n};\nIMask.MaskedDynamic = MaskedDynamic;\n\nexport { MaskedDynamic as default };\n","import MaskedPattern from './pattern.js';\nimport IMask from '../core/holder.js';\nimport ChangeDetails from '../core/change-details.js';\nimport { DIRECTION } from '../core/utils.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport './base.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which validates enum values */\nclass MaskedEnum extends MaskedPattern {\n constructor(opts) {\n super({\n ...MaskedEnum.DEFAULTS,\n ...opts\n }); // mask will be created in _update\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n enum: enum_,\n ...eopts\n } = opts;\n if (enum_) {\n const lengths = enum_.map(e => e.length);\n const requiredLength = Math.min(...lengths);\n const optionalLength = Math.max(...lengths) - requiredLength;\n eopts.mask = '*'.repeat(requiredLength);\n if (optionalLength) eopts.mask += '[' + '*'.repeat(optionalLength) + ']';\n this.enum = enum_;\n }\n super._update(eopts);\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const matchFrom = Math.min(this.nearestInputPos(0, DIRECTION.FORCE_RIGHT), this.value.length);\n const matches = this.enum.filter(e => this.matchValue(e, this.unmaskedValue + ch, matchFrom));\n if (matches.length) {\n if (matches.length === 1) {\n this._forEachBlocksInRange(0, this.value.length, (b, bi) => {\n const mch = matches[0][bi];\n if (bi >= this.value.length || mch === b.value) return;\n b.reset();\n b._appendChar(mch, flags);\n });\n }\n const d = super._appendCharRaw(matches[0][this.value.length], flags);\n if (matches.length === 1) {\n matches[0].slice(this.unmaskedValue.length).split('').forEach(mch => d.aggregate(super._appendCharRaw(mch)));\n }\n return d;\n }\n return new ChangeDetails({\n skip: !this.isComplete\n });\n }\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n // just drop tail\n return new ContinuousTailDetails('', fromPos);\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n if (fromPos === toPos) return new ChangeDetails();\n const matchFrom = Math.min(super.nearestInputPos(0, DIRECTION.FORCE_RIGHT), this.value.length);\n let pos;\n for (pos = fromPos; pos >= 0; --pos) {\n const matches = this.enum.filter(e => this.matchValue(e, this.value.slice(matchFrom, pos), matchFrom));\n if (matches.length > 1) break;\n }\n const details = super.remove(pos, toPos);\n details.tailShift += pos - fromPos;\n return details;\n }\n get isComplete() {\n return this.enum.indexOf(this.value) >= 0;\n }\n}\n/** Match enum value */\nMaskedEnum.DEFAULTS = {\n ...MaskedPattern.DEFAULTS,\n matchValue: (estr, istr, matchFrom) => estr.indexOf(istr, matchFrom) === matchFrom\n};\nIMask.MaskedEnum = MaskedEnum;\n\nexport { MaskedEnum as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by custom Function */\nclass MaskedFunction extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update({\n ...opts,\n validate: opts.mask\n });\n }\n}\nIMask.MaskedFunction = MaskedFunction;\n\nexport { MaskedFunction as default };\n","import { escapeRegExp, DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\nvar _MaskedNumber;\n/** Number mask */\nclass MaskedNumber extends Masked {\n /** Single char */\n\n /** Single char */\n\n /** Array of single chars */\n\n /** */\n\n /** */\n\n /** Digits after point */\n\n /** Flag to remove leading and trailing zeros in the end of editing */\n\n /** Flag to pad trailing zeros after point in the end of editing */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n super({\n ...MaskedNumber.DEFAULTS,\n ...opts\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n this._updateRegExps();\n }\n _updateRegExps() {\n const start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n const mid = '\\\\d*';\n const end = (this.scale ? \"(\" + escapeRegExp(this.radix) + \"\\\\d{0,\" + this.scale + \"})?\" : '') + '$';\n this._numberRegExp = new RegExp(start + mid + end);\n this._mapToRadixRegExp = new RegExp(\"[\" + this.mapToRadix.map(escapeRegExp).join('') + \"]\", 'g');\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n }\n _removeThousandsSeparators(value) {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n _insertThousandsSeparators(value) {\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n const parts = value.split(this.radix);\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n return parts.join(this.radix);\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const [prepCh, details] = super.doPrepareChar(this._removeThousandsSeparators(this.scale && this.mapToRadix.length && (\n /*\n radix should be mapped when\n 1) input is done from keyboard = flags.input && flags.raw\n 2) unmasked value is set = !flags.input && !flags.raw\n and should not be mapped when\n 1) value is set = flags.input && !flags.raw\n 2) raw value is set = !flags.input && flags.raw\n */\n flags.input && flags.raw || !flags.input && !flags.raw) ? ch.replace(this._mapToRadixRegExp, this.radix) : ch), flags);\n if (ch && !prepCh) details.skip = true;\n if (prepCh && !this.allowPositive && !this.value && prepCh !== '-') details.aggregate(this._appendChar('-'));\n return [prepCh, details];\n }\n _separatorsCount(to, extendOnSeparators) {\n if (extendOnSeparators === void 0) {\n extendOnSeparators = false;\n }\n let count = 0;\n for (let pos = 0; pos < to; ++pos) {\n if (this._value.indexOf(this.thousandsSeparator, pos) === pos) {\n ++count;\n if (extendOnSeparators) to += this.thousandsSeparator.length;\n }\n }\n return count;\n }\n _separatorsCountFromSlice(slice) {\n if (slice === void 0) {\n slice = this._value;\n }\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n return this._removeThousandsSeparators(super.extractInput(fromPos, toPos, flags));\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n this._value = this._removeThousandsSeparators(this.value);\n const oldValue = this._value;\n this._value += ch;\n const num = this.number;\n let accepted = !isNaN(num);\n let skip = false;\n if (accepted) {\n let fixedNum;\n if (this.min != null && this.min < 0 && this.number < this.min) fixedNum = this.min;\n if (this.max != null && this.max > 0 && this.number > this.max) fixedNum = this.max;\n if (fixedNum != null) {\n if (this.autofix) {\n this._value = this.format(fixedNum, this).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n skip || (skip = oldValue === this._value && !flags.tail); // if not changed on tail it's still ok to proceed\n } else {\n accepted = false;\n }\n }\n accepted && (accepted = Boolean(this._value.match(this._numberRegExp)));\n }\n let appendDetails;\n if (!accepted) {\n this._value = oldValue;\n appendDetails = new ChangeDetails();\n } else {\n appendDetails = new ChangeDetails({\n inserted: this._value.slice(oldValue.length),\n rawInserted: skip ? '' : ch,\n skip\n });\n }\n this._value = this._insertThousandsSeparators(this._value);\n const beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\n appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\n return appendDetails;\n }\n _findSeparatorAround(pos) {\n if (this.thousandsSeparator) {\n const searchFrom = pos - this.thousandsSeparator.length + 1;\n const separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\n if (separatorPos <= pos) return separatorPos;\n }\n return -1;\n }\n _adjustRangeWithSeparators(from, to) {\n const separatorAroundFromPos = this._findSeparatorAround(from);\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n const separatorAroundToPos = this._findSeparatorAround(to);\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n return [from, to];\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n const valueBeforePos = this.value.slice(0, fromPos);\n const valueAfterPos = this.value.slice(toPos);\n const prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n return new ChangeDetails({\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length\n });\n }\n nearestInputPos(cursorPos, direction) {\n if (!this.thousandsSeparator) return cursorPos;\n switch (direction) {\n case DIRECTION.NONE:\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n {\n const separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n if (separatorAtLeftPos >= 0) {\n const separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) {\n return separatorAtLeftPos;\n }\n }\n break;\n }\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n {\n const separatorAtRightPos = this._findSeparatorAround(cursorPos);\n if (separatorAtRightPos >= 0) {\n return separatorAtRightPos + this.thousandsSeparator.length;\n }\n }\n }\n return cursorPos;\n }\n doCommit() {\n if (this.value) {\n const number = this.number;\n let validnum = number;\n\n // check bounds\n if (this.min != null) validnum = Math.max(validnum, this.min);\n if (this.max != null) validnum = Math.min(validnum, this.max);\n if (validnum !== number) this.unmaskedValue = this.format(validnum, this);\n let formatted = this.value;\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros && this.scale > 0) formatted = this._padFractionalZeros(formatted);\n this._value = formatted;\n }\n super.doCommit();\n }\n _normalizeZeros(value) {\n const parts = this._removeThousandsSeparators(value).split(this.radix);\n\n // remove leading zeros\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, (match, sign, zeros, num) => sign + num);\n // add leading zero\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\n if (parts.length > 1) {\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\n if (!parts[1].length) parts.length = 1; // remove fractional\n }\n return this._insertThousandsSeparators(parts.join(this.radix));\n }\n _padFractionalZeros(value) {\n if (!value) return value;\n const parts = value.split(this.radix);\n if (parts.length < 2) parts.push('');\n parts[1] = parts[1].padEnd(this.scale, '0');\n return parts.join(this.radix);\n }\n doSkipInvalid(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const dropFractional = this.scale === 0 && ch !== this.thousandsSeparator && (ch === this.radix || ch === MaskedNumber.UNMASKED_RADIX || this.mapToRadix.includes(ch));\n return super.doSkipInvalid(ch, flags, checkTail) && !dropFractional;\n }\n get unmaskedValue() {\n return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, MaskedNumber.UNMASKED_RADIX);\n }\n set unmaskedValue(unmaskedValue) {\n super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.parse(this.unmaskedValue, this);\n }\n set typedValue(n) {\n this.rawInputValue = this.format(n, this).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n }\n\n /** Parsed Number */\n get number() {\n return this.typedValue;\n }\n set number(number) {\n this.typedValue = number;\n }\n get allowNegative() {\n return this.min != null && this.min < 0 || this.max != null && this.max < 0;\n }\n get allowPositive() {\n return this.min != null && this.min > 0 || this.max != null && this.max > 0;\n }\n typedValueEquals(value) {\n // handle 0 -> '' case (typed = 0 even if value = '')\n // for details see https://github.com/uNmAnNeR/imaskjs/issues/134\n return (super.typedValueEquals(value) || MaskedNumber.EMPTY_VALUES.includes(value) && MaskedNumber.EMPTY_VALUES.includes(this.typedValue)) && !(value === 0 && this.value === '');\n }\n}\n_MaskedNumber = MaskedNumber;\nMaskedNumber.UNMASKED_RADIX = '.';\nMaskedNumber.EMPTY_VALUES = [...Masked.EMPTY_VALUES, 0];\nMaskedNumber.DEFAULTS = {\n ...Masked.DEFAULTS,\n mask: Number,\n radix: ',',\n thousandsSeparator: '',\n mapToRadix: [_MaskedNumber.UNMASKED_RADIX],\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n scale: 2,\n normalizeZeros: true,\n padFractionalZeros: false,\n parse: Number,\n format: n => n.toLocaleString('en-US', {\n useGrouping: false,\n maximumFractionDigits: 20\n })\n};\nIMask.MaskedNumber = MaskedNumber;\n\nexport { MaskedNumber as default };\n","import createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\n\n/** Mask pipe source and destination types */\nconst PIPE_TYPE = {\n MASKED: 'value',\n UNMASKED: 'unmaskedValue',\n TYPED: 'typedValue'\n};\n/** Creates new pipe function depending on mask type, source and destination options */\nfunction createPipe(arg, from, to) {\n if (from === void 0) {\n from = PIPE_TYPE.MASKED;\n }\n if (to === void 0) {\n to = PIPE_TYPE.MASKED;\n }\n const masked = createMask(arg);\n return value => masked.runIsolated(m => {\n m[from] = value;\n return m[to];\n });\n}\n\n/** Pipes value through mask depending on mask type, source and destination options */\nfunction pipe(value, mask, from, to) {\n return createPipe(mask, from, to)(value);\n}\nIMask.PIPE_TYPE = PIPE_TYPE;\nIMask.createPipe = createPipe;\nIMask.pipe = pipe;\n\nexport { PIPE_TYPE, createPipe, pipe };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport MaskedPattern from './pattern.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern mask */\nclass RepeatBlock extends MaskedPattern {\n get repeatFrom() {\n var _ref;\n return (_ref = Array.isArray(this.repeat) ? this.repeat[0] : this.repeat === Infinity ? 0 : this.repeat) != null ? _ref : 0;\n }\n get repeatTo() {\n var _ref2;\n return (_ref2 = Array.isArray(this.repeat) ? this.repeat[1] : this.repeat) != null ? _ref2 : Infinity;\n }\n constructor(opts) {\n super(opts);\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n var _ref3, _ref4, _this$_blocks;\n const {\n repeat,\n ...blockOpts\n } = normalizeOpts(opts); // TODO type\n this._blockOpts = Object.assign({}, this._blockOpts, blockOpts);\n const block = createMask(this._blockOpts);\n this.repeat = (_ref3 = (_ref4 = repeat != null ? repeat : block.repeat) != null ? _ref4 : this.repeat) != null ? _ref3 : Infinity; // TODO type\n\n super._update({\n mask: 'm'.repeat(Math.max(this.repeatTo === Infinity && ((_this$_blocks = this._blocks) == null ? void 0 : _this$_blocks.length) || 0, this.repeatFrom)),\n blocks: {\n m: block\n },\n eager: block.eager,\n overwrite: block.overwrite,\n skipInvalid: block.skipInvalid,\n lazy: block.lazy,\n placeholderChar: block.placeholderChar,\n displayChar: block.displayChar\n });\n }\n _allocateBlock(bi) {\n if (bi < this._blocks.length) return this._blocks[bi];\n if (this.repeatTo === Infinity || this._blocks.length < this.repeatTo) {\n this._blocks.push(createMask(this._blockOpts));\n this.mask += 'm';\n return this._blocks[this._blocks.length - 1];\n }\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = new ChangeDetails();\n for (let bi = (_this$_mapPosToBlock$ = (_this$_mapPosToBlock = this._mapPosToBlock(this.displayValue.length)) == null ? void 0 : _this$_mapPosToBlock.index) != null ? _this$_mapPosToBlock$ : Math.max(this._blocks.length - 1, 0), block, allocated;\n // try to get a block or\n // try to allocate a new block if not allocated already\n block = (_this$_blocks$bi = this._blocks[bi]) != null ? _this$_blocks$bi : allocated = !allocated && this._allocateBlock(bi); ++bi) {\n var _this$_mapPosToBlock$, _this$_mapPosToBlock, _this$_blocks$bi, _flags$_beforeTailSta;\n const blockDetails = block._appendChar(ch, {\n ...flags,\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) == null || (_flags$_beforeTailSta = _flags$_beforeTailSta._blocks) == null ? void 0 : _flags$_beforeTailSta[bi]\n });\n if (blockDetails.skip && allocated) {\n // remove the last allocated block and break\n this._blocks.pop();\n this.mask = this.mask.slice(1);\n break;\n }\n details.aggregate(blockDetails);\n if (blockDetails.consumed) break; // go next char\n }\n return details;\n }\n _trimEmptyTail(fromPos, toPos) {\n var _this$_mapPosToBlock2, _this$_mapPosToBlock3;\n if (fromPos === void 0) {\n fromPos = 0;\n }\n const firstBlockIndex = Math.max(((_this$_mapPosToBlock2 = this._mapPosToBlock(fromPos)) == null ? void 0 : _this$_mapPosToBlock2.index) || 0, this.repeatFrom, 0);\n let lastBlockIndex;\n if (toPos != null) lastBlockIndex = (_this$_mapPosToBlock3 = this._mapPosToBlock(toPos)) == null ? void 0 : _this$_mapPosToBlock3.index;\n if (lastBlockIndex == null) lastBlockIndex = this._blocks.length - 1;\n let removeCount = 0;\n for (let blockIndex = lastBlockIndex; firstBlockIndex <= blockIndex; --blockIndex, ++removeCount) {\n if (this._blocks[blockIndex].unmaskedValue) break;\n }\n if (removeCount) {\n this._blocks.splice(lastBlockIndex - removeCount + 1, removeCount);\n this.mask = this.mask.slice(removeCount);\n }\n }\n reset() {\n super.reset();\n this._trimEmptyTail();\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const removeDetails = super.remove(fromPos, toPos);\n this._trimEmptyTail(fromPos, toPos);\n return removeDetails;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos == null && this.repeatTo === Infinity) return Infinity;\n return super.totalInputPositions(fromPos, toPos);\n }\n get state() {\n return super.state;\n }\n set state(state) {\n this._blocks.length = state._blocks.length;\n this.mask = this.mask.slice(0, this._blocks.length);\n super.state = state;\n }\n}\nIMask.RepeatBlock = RepeatBlock;\n\nexport { RepeatBlock as default };\n","export { default as InputMask } from './controls/input.js';\nimport IMask from './core/holder.js';\nexport { default as HTMLContenteditableMaskElement } from './controls/html-contenteditable-mask-element.js';\nexport { default as HTMLInputMaskElement } from './controls/html-input-mask-element.js';\nexport { default as HTMLMaskElement } from './controls/html-mask-element.js';\nexport { default as MaskElement } from './controls/mask-element.js';\nexport { default as ChangeDetails } from './core/change-details.js';\nexport { DIRECTION, forceDirection } from './core/utils.js';\nexport { default as Masked } from './masked/base.js';\nexport { default as MaskedDate } from './masked/date.js';\nexport { default as MaskedDynamic } from './masked/dynamic.js';\nexport { default as MaskedEnum } from './masked/enum.js';\nexport { default as createMask, normalizeOpts } from './masked/factory.js';\nexport { default as MaskedFunction } from './masked/function.js';\nexport { default as MaskedNumber } from './masked/number.js';\nexport { default as MaskedPattern } from './masked/pattern.js';\nexport { default as ChunksTailDetails } from './masked/pattern/chunk-tail-details.js';\nexport { default as PatternFixedDefinition } from './masked/pattern/fixed-definition.js';\nexport { default as PatternInputDefinition } from './masked/pattern/input-definition.js';\nexport { PIPE_TYPE, createPipe, pipe } from './masked/pipe.js';\nexport { default as MaskedRange } from './masked/range.js';\nexport { default as MaskedRegExp } from './masked/regexp.js';\nexport { default as RepeatBlock } from './masked/repeat.js';\nimport './core/action-details.js';\nimport './controls/input-history.js';\nimport './core/continuous-tail-details.js';\nimport './masked/pattern/cursor.js';\n\ntry {\n globalThis.IMask = IMask;\n} catch {}\n\nexport { IMask as default };\n","<template>\n <div :class=\"['flex flex-col gap-2', className]\">\n <p v-if=\"label\" class=\"mb-0 text-body-2xs font-normal text-heading-text\">\n {{ label }} <span v-if=\"required\" class=\"text-orange-required\"> *</span>\n </p>\n\n <div\n :class=\"[\n 'border-c px-3 py-2 flex items-center justify-between rounded-md h-12',\n containerBg,\n containerBorder,\n ]\"\n >\n <slot name=\"prefix\" />\n\n <input\n ref=\"inputEl\"\n :type=\"type\"\n :value=\"formattedValue\"\n :disabled=\"disabled\"\n :mask=\"mask\"\n :placeholder=\"\n placeholder ?? (label ? `Enter ${label.toLowerCase()}` : undefined)\n \"\n :inputmode=\"isAmountInput ? 'decimal' : undefined\"\n class=\"search-input bg-transparent outline-none border-none focus:outline-none focus:ring-0 text-body-2xs text-light-copy font-normal w-full\"\n @input=\"handleInput\"\n @blur=\"handleBlur\"\n @keydown=\"handleKeyDown\"\n />\n\n <template v-if=\"!loading\">\n <slot name=\"suffix\" />\n\n <BaseImage\n v-if=\"showCopyIcon && rawValue.trim() !== ''\"\n src=\"assets/images/copyIcon.svg\"\n alt=\"copy\"\n :width=\"16\"\n :height=\"16\"\n customClass=\"cursor-pointer hover:opacity-70 transition-opacity\"\n @click=\"copyHandler\"\n />\n </template>\n <div\n v-else\n class=\"animate-spin h-4 w-4 border-2 border-current border-t-transparent rounded-full\"\n />\n </div>\n\n <p v-if=\"hint || localHint\" class=\"text-body-3xs text-light-copy\">\n {{ localHint || hint }}\n </p>\n\n <p v-if=\"validationError || localError\" class=\"text-body-3xs text-red-500\">\n {{ localError || validationError }}\n </p>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n ref,\n watch,\n computed,\n nextTick,\n onMounted,\n onBeforeUnmount,\n} from \"vue\";\nimport { formatAmount, restrictToNumericKeys } from \"../../utils\";\nimport BaseImage from \"./image.vue\";\nimport IMask, { InputMask } from \"imask\";\n\ntype Rule = \"numeric\";\n\ninterface IBaseInputProps {\n label?: string;\n type?: string; // HTMLInputTypeAttribute\n placeholder?: string;\n validationError?: string;\n hint?: string;\n mask?: string; // not implemented\n rules?: Rule[];\n isAmountInput?: boolean;\n required?: boolean;\n disabled?: boolean;\n loading?: boolean;\n showCopyIcon?: boolean;\n\n /** v-model support (controlled) */\n modelValue?: string;\n\n /** uncontrolled initial value */\n defaultValue?: string;\n\n /** classes / slots */\n className?: string;\n}\n\nconst props = withDefaults(defineProps<IBaseInputProps>(), {\n label: \"\",\n type: \"text\",\n placeholder: undefined,\n validationError: \"\",\n hint: \"\",\n mask: \"\",\n rules: () => [],\n isAmountInput: false,\n required: false,\n disabled: false,\n loading: false,\n showCopyIcon: false,\n modelValue: undefined,\n defaultValue: \"\",\n className: \"\",\n});\n\nconst emit = defineEmits<{\n (e: \"update:modelValue\", v: string): void;\n (e: \"blur\", v: string): void;\n (e: \"copied\"): void;\n}>();\n\n/** Controlled vs uncontrolled */\nconst isControlled = computed(() => props.modelValue !== undefined);\nconst rawValue = ref<string>(props.modelValue ?? props.defaultValue ?? \"\");\nconst localHint = ref(\"\");\nconst localError = ref(\"\");\nconst inputEl = ref<HTMLInputElement | null>(null);\nlet imaskInstance: InputMask | null = null\n\nwatch(\n () => props.modelValue,\n (v) => {\n if (!isControlled.value) return\n rawValue.value = v ?? ''\n if (imaskInstance) {\n // Avoid feedback loops: only set if different\n if (imaskInstance.value !== (v ?? '')) {\n imaskInstance.value = v ?? ''\n }\n }\n }\n)\n\n/** formatted value for amount input */\nconst formattedValue = computed(() =>\n props.isAmountInput\n ? formatAmount(rawValue.value.replace(/,/g, \"\"))\n : rawValue.value\n);\n\nfunction handleInput(e: Event) {\n const el = e.target as HTMLInputElement;\n const incoming = el.value.replace(/,/g, \"\");\n if (!isControlled.value) rawValue.value = incoming;\n emit(\"update:modelValue\", incoming);\n\n // Move caret to end after formatting\n nextTick(() => {\n const target = inputEl.value;\n if (target) {\n const len = target.value.length;\n target.setSelectionRange(len, len);\n }\n });\n}\n\nfunction handleBlur() {\n emit(\"blur\", rawValue.value);\n}\n\nfunction handleKeyDown(e: KeyboardEvent) {\n if (props.rules.includes(\"numeric\")) restrictToNumericKeys(e);\n}\n\nconst containerBg = computed(() =>\n props.disabled ? \"bg-grey-50 cursor-not-allowed\" : \"bg-white\"\n);\nconst containerBorder = computed(() =>\n props.validationError || localError.value\n ? \"border-red-300 bg-red-50\"\n : \"border-grey-100\"\n);\n\nfunction copyToClipboard(text: string) {\n return navigator.clipboard.writeText(text);\n}\n\nfunction copyHandler() {\n copyToClipboard(rawValue.value)\n .then(() => {\n localError.value = \"\";\n localHint.value = \"Text copied to clipboard\";\n emit(\"copied\");\n })\n .catch(() => {\n localHint.value = \"\";\n localError.value = \"Failed to copy text to clipboard\";\n });\n}\n\nonMounted(() => {\n if (!inputEl.value) return\n\n // Build IMask options from your prop. If prop is a string mask, pass it directly.\n const maskOptions = props.mask\n ? { mask: props.mask } // e.g. '0000 0000 0000 0000'\n : undefined; // no mask -> do nothing\n\n if (maskOptions) {\n imaskInstance = IMask(inputEl.value, maskOptions)\n\n // keep mask in sync with initial value (controlled/uncontrolled)\n if (rawValue.value) {\n imaskInstance.value = rawValue.value\n }\n\n // When user types and mask accepts changes:\n imaskInstance.on('accept', () => {\n // If you want the masked string (with spaces): use imaskInstance.value\n // If you want the raw digits: use imaskInstance.unmaskedValue\n const next = imaskInstance?.value ?? ''\n\n if (!isControlled.value) rawValue.value = next\n emit('update:modelValue', next)\n\n // optional: keep caret at end if you also format elsewhere\n nextTick(() => {\n const el = inputEl.value\n if (el) {\n const len = el.value.length\n el.setSelectionRange(len, len)\n }\n })\n })\n\n // When fully complete (optional)\n // imaskInstance.on('complete', () => { ... })\n }\n})\n\nonBeforeUnmount(() => {\n imaskInstance?.destroy()\n imaskInstance = null\n})\n</script>\n","<template>\n <svg\n :width=\"width\"\n :height=\"height\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n v-bind=\"attrs\"\n >\n <g opacity=\"0.6\">\n <path\n d=\"M16.5813 7.83128L10.3313 14.0813C10.2434 14.1691 10.1242 14.2184 10 14.2184C9.87581 14.2184 9.75667 14.1691 9.66878 14.0813L3.41878 7.83128C3.33598 7.74242 3.2909 7.62489 3.29304 7.50345C3.29518 7.38201 3.34438 7.26615 3.43026 7.18026C3.51615 7.09438 3.63201 7.04518 3.75345 7.04304C3.87489 7.0409 3.99242 7.08598 4.08128 7.16878L10 13.0867L15.9188 7.16878C16.0076 7.08598 16.1252 7.0409 16.2466 7.04304C16.368 7.04518 16.4839 7.09438 16.5698 7.18026C16.6557 7.26615 16.7049 7.38201 16.707 7.50345C16.7092 7.62489 16.6641 7.74242 16.5813 7.83128Z\"\n :fill=\"color\"\n />\n </g>\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from \"vue\";\n\ninterface IIconProps {\n width?: number | string;\n height?: number | string;\n color?: string;\n}\n\nconst props = withDefaults(defineProps<IIconProps>(), {\n width: 24,\n height: 24,\n color: \"currentColor\",\n});\n\nconst attrs = useAttrs();\nconst { width, height, color } = props;\n</script>\n","<template>\n <svg\n :width=\"width\"\n :height=\"height\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n v-bind=\"attrs\"\n >\n <g opacity=\"0.7\">\n <path\n d=\"M2.73508 9.73495L7.73508 4.73495C7.80539 4.66473 7.9007 4.62528 8.00008 4.62528C8.09945 4.62528 8.19476 4.66473 8.26508 4.73495L13.2651 9.73495C13.3313 9.80604 13.3674 9.90006 13.3657 9.99722C13.364 10.0944 13.3246 10.1871 13.2559 10.2558C13.1872 10.3245 13.0945 10.3638 12.9973 10.3655C12.9002 10.3673 12.8062 10.3312 12.7351 10.265L8.00008 5.53058L3.26508 10.265C3.19399 10.3312 3.09997 10.3673 3.00282 10.3655C2.90566 10.3638 2.81297 10.3245 2.74427 10.2558C2.67556 10.1871 2.6362 10.0944 2.63449 9.99722C2.63277 9.90006 2.66884 9.80604 2.73508 9.73495Z\"\n :fill=\"color\"\n />\n </g>\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from \"vue\";\n\ninterface IIconProps {\n width?: number | string;\n height?: number | string;\n color?: string;\n}\n\nconst props = withDefaults(defineProps<IIconProps>(), {\n width: 24,\n height: 24,\n color: \"currentColor\",\n});\n\nconst attrs = useAttrs();\nconst { width, height, color } = props;\n</script>\n","<template>\n <p class=\"mb-0 text-body-3xs font-medium text-orange-500\">\n {{ hint }}\n </p>\n</template>\n\n<script setup lang=\"ts\">\ninterface IBaseHintProps {\n hint: string;\n}\n\ndefineProps<IBaseHintProps>();\n</script>\n","<template>\n <div :class=\"['flex flex-col gap-2 relative', className]\">\n <p v-if=\"label\" class=\"mb-0 text-body-2xs font-normal text-heading-text\">\n {{ label }} <span v-if=\"required\" class=\"text-orange-required\"> *</span>\n </p>\n\n <!-- Trigger -->\n <div\n ref=\"triggerRef\"\n :class=\"[\n 'border-c rounded-md flex items-center justify-between h-12 cursor-pointer px-3 py-2',\n containerBg,\n containerBorder,\n ]\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n :aria-expanded=\"open\"\n :aria-controls=\"open ? 'select-menu' : undefined\"\n :aria-disabled=\"disabled || undefined\"\n :aria-activedescendant=\"\n open && activeIndex >= 0 ? `option-${activeIndex}` : undefined\n \"\n tabindex=\"0\"\n @click=\"toggleMenu\"\n @keydown=\"onTriggerKeyDown\"\n >\n <div class=\"flex items-center gap-2\">\n <slot name=\"prefix\" />\n\n <div class=\"flex items-center gap-2\">\n <!-- Country flag in trigger -->\n <BaseImage\n v-if=\"\n selected && itemImageType === 'country' && selected.countryCode\n \"\n :src=\"`https://flagcdn.com/w40/${selected.countryCode.toLowerCase()}.png`\"\n :alt=\"selected.countryCode\"\n :width=\"28\"\n customClass=\"rounded-lg\"\n />\n\n <p\n class=\"text-body-2xs font-normal mb-0\"\n :class=\"selected?.label ? 'text-sub-copy' : 'text-grey-500'\"\n >\n {{ displayText }}\n </p>\n </div>\n </div>\n\n <span\n v-if=\"loading\"\n class=\"inline-block h-4 w-4 border-2 border-current border-t-transparent rounded-full animate-spin\"\n />\n <IconChevronUp v-else-if=\"open\" color=\"#8FAECA\" />\n <IconChevronDown v-else color=\"#8FAECA\" />\n </div>\n\n <!-- Menu -->\n <div\n v-if=\"open\"\n ref=\"menuRef\"\n id=\"select-menu\"\n class=\"border-c bg-white rounded-md border-grey-border text-body-xs font-normal text-input-grey w-full mt-2 max-h-22rem overflow-y-auto\"\n role=\"listbox\"\n :aria-label=\"label || 'Options'\"\n :style=\"{ position: 'absolute', top: '100%', zIndex: 10 }\"\n @keydown=\"onMenuKeyDown\"\n >\n <div v-if=\"hasSearch\" class=\"px-4 pt-2 pb-1\">\n <input\n ref=\"searchRef\"\n type=\"text\"\n :placeholder=\"`Search ${label || 'options'}`\"\n class=\"bg-transparent outline-none border-b pb-2 w-full focus:outline-none focus:ring-0 text-body-2xs text-light-copy font-normal\"\n @input=\"onSearchInput\"\n />\n </div>\n\n <div\n v-for=\"(opt, i) in filtered\"\n :key=\"opt.value\"\n @click=\"commit(opt.value)\"\n :id=\"`option-${i}`\"\n data-option\n role=\"option\"\n :aria-selected=\"selected?.value === opt.value\"\n :class=\"[\n 'px-4 py-3 first:pt-0 hover:bg-gray-100 flex items-center gap-2 cursor-pointer',\n i === activeIndex ? 'bg-gray-100' : '',\n ]\"\n >\n <!-- Country flag in list -->\n <BaseImage\n v-if=\"itemImageType === 'country' && opt.countryCode\"\n :src=\"`https://flagcdn.com/w40/${opt.countryCode.toLowerCase()}.png`\"\n :alt=\"opt.countryCode\"\n :width=\"28\"\n customClass=\"rounded-lg\"\n />\n\n <!-- (Bank logos can be handled similarly in future) -->\n\n <p class=\"mb-0 text-body-2xs font-medium\">\n {{ opt.label }}\n </p>\n </div>\n </div>\n\n <BaseHint v-if=\"hint\" :hint=\"hint\" />\n <BaseInputError v-if=\"validationError\" :errorMessage=\"validationError\" />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n computed,\n onBeforeUnmount,\n onMounted,\n ref,\n watch,\n nextTick,\n toRefs,\n} from \"vue\";\nimport IconChevronDown from \"../icons/icon-chevron-down.vue\";\nimport IconChevronUp from \"../icons/icon-chevron-up.vue\";\nimport BaseHint from \"./hint.vue\";\nimport BaseInputError from \"./input-error.vue\";\nimport BaseImage from \"./image.vue\";\n\ntype ImageType = \"country\" | \"bank\" | null;\n\nexport interface SelectOption {\n label: string;\n value: string;\n countryCode?: string;\n bankCode?: string;\n}\n\ninterface IBaseSelectProps {\n options: SelectOption[];\n /** Controlled value (v-model) */\n modelValue?: string;\n /** Uncontrolled initial value */\n defaultValue?: string;\n /** Emits change when selection changes */\n className?: string;\n\n placeholder?: string;\n hasSearch?: boolean;\n disabled?: boolean;\n loading?: boolean;\n validationError?: string;\n label?: string;\n hint?: string;\n required?: boolean;\n itemImageType?: ImageType;\n}\n\nconst props = withDefaults(defineProps<IBaseSelectProps>(), {\n options: () => [],\n modelValue: undefined,\n defaultValue: undefined,\n className: \"\",\n placeholder: \"Select an option\",\n hasSearch: true,\n disabled: false,\n loading: false,\n validationError: \"\",\n label: \"\",\n hint: \"\",\n required: false,\n itemImageType: null,\n});\n\nconst emit = defineEmits<{\n (e: \"update:modelValue\", v: string): void;\n /** Parity with React onChange */\n (e: \"change\", v: string): void;\n}>();\n\n/** Local state */\nconst open = ref(false);\nconst internalValue = ref<string>(props.defaultValue ?? props.modelValue ?? \"\");\nconst filtered = ref<SelectOption[]>([...props.options]);\nconst activeIndex = ref<number>(-1);\n\nconst triggerRef = ref<HTMLDivElement | null>(null);\nconst menuRef = ref<HTMLDivElement | null>(null);\nconst searchRef = ref<HTMLInputElement | null>(null);\n\n/** Controlled vs uncontrolled */\nconst isControlled = computed(() => props.modelValue !== undefined);\nwatch(\n () => props.modelValue,\n (v) => {\n if (isControlled.value) internalValue.value = v ?? \"\";\n }\n);\n\n/** Reset filtered when options change */\nwatch(\n () => props.options,\n (opts) => {\n filtered.value = [...opts];\n },\n { immediate: true }\n);\n\n/** Selected option */\nconst selected = computed(() => {\n const val = isControlled.value ? props.modelValue : internalValue.value;\n return props.options.find((o) => o.value === val) ?? null;\n});\n\n/** Display text */\nconst displayText = computed(() => {\n return (\n selected.value?.label ||\n props.placeholder ||\n (props.label ? `Select ${props.label}` : \"Select an option\")\n );\n});\n\n/** Open/close helpers */\nfunction openMenu() {\n if (props.disabled || open.value) return;\n filtered.value = [...props.options];\n\n // set active index to current selection or first\n const idx = selected.value\n ? Math.max(\n 0,\n props.options.findIndex((o) => o.value === selected.value!.value)\n )\n : 0;\n activeIndex.value = idx;\n\n open.value = true;\n\n // focus search if enabled\n nextTick(() => {\n if (props.hasSearch && searchRef.value) {\n searchRef.value.focus();\n searchRef.value.select();\n }\n });\n}\nfunction closeMenu() {\n if (!open.value) return;\n open.value = false;\n activeIndex.value = -1;\n}\nfunction toggleMenu() {\n if (props.disabled) return;\n open.value ? closeMenu() : openMenu();\n}\n\n/** Outside click */\nfunction onDocMouseDown(e: MouseEvent) {\n if (!open.value) return;\n const t = e.target as Node;\n const tri = triggerRef.value;\n const menu = menuRef.value;\n if (tri && !tri.contains(t) && menu && !menu.contains(t)) closeMenu();\n}\nwatch(open, (v) => {\n if (v) document.addEventListener(\"mousedown\", onDocMouseDown);\n else document.removeEventListener(\"mousedown\", onDocMouseDown);\n});\nonBeforeUnmount(() =>\n document.removeEventListener(\"mousedown\", onDocMouseDown)\n);\n\n/** Selection */\nfunction commit(val: string) {\n if (!isControlled.value) internalValue.value = val;\n emit(\"update:modelValue\", val);\n emit(\"change\", val);\n closeMenu();\n}\n\n/** Search */\nfunction onSearchInput(e: Event) {\n const q = (e.target as HTMLInputElement).value.toLowerCase();\n const list = props.options.filter((o) => o.label.toLowerCase().includes(q));\n filtered.value = list;\n activeIndex.value = list.length ? 0 : -1;\n}\n\n/** Keyboard on trigger */\nfunction onTriggerKeyDown(e: KeyboardEvent) {\n if (props.disabled) return;\n switch (e.key) {\n case \"Enter\":\n case \" \":\n case \"Spacebar\":\n case \"ArrowDown\":\n e.preventDefault();\n if (!open.value) openMenu();\n else moveActive(1);\n break;\n case \"ArrowUp\":\n e.preventDefault();\n if (!open.value) openMenu();\n else moveActive(-1);\n break;\n case \"Escape\":\n if (open.value) {\n e.preventDefault();\n closeMenu();\n }\n break;\n }\n}\n\n/** Keyboard in menu */\nfunction onMenuKeyDown(e: KeyboardEvent) {\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n moveActive(1);\n break;\n case \"ArrowUp\":\n e.preventDefault();\n moveActive(-1);\n break;\n case \"Home\":\n e.preventDefault();\n activeIndex.value = filtered.value.length ? 0 : -1;\n scrollActiveIntoView(0);\n break;\n case \"End\":\n e.preventDefault();\n activeIndex.value = filtered.value.length - 1;\n scrollActiveIntoView(filtered.value.length - 1);\n break;\n case \"Enter\":\n e.preventDefault();\n if (activeIndex.value >= 0) {\n const opt = filtered.value[activeIndex.value];\n if (opt) commit(opt.value);\n }\n break;\n case \"Escape\":\n e.preventDefault();\n closeMenu();\n break;\n case \"Tab\":\n closeMenu();\n break;\n }\n}\n\nfunction moveActive(delta: number) {\n if (!filtered.value.length) return;\n const max = filtered.value.length - 1;\n const next =\n activeIndex.value < 0\n ? 0\n : Math.min(max, Math.max(0, activeIndex.value + delta));\n activeIndex.value = next;\n scrollActiveIntoView(next);\n}\n\nfunction scrollActiveIntoView(index: number) {\n const menu = menuRef.value;\n if (!menu) return;\n const items = menu.querySelectorAll<HTMLElement>(\"[data-option]\");\n if (index >= 0 && index < items.length) {\n items[index]?.scrollIntoView({ block: \"nearest\" });\n }\n}\n\n/** UI helpers */\nconst containerBg = computed(() =>\n props.disabled ? \"bg-grey-100 cursor-not-allowed\" : \"bg-white\"\n);\nconst containerBorder = computed(() =>\n props.validationError ? \"border-red-300\" : \"border-grey-100 bg-white\"\n);\n\n/** Expose a few props in template */\nconst {\n options,\n placeholder,\n hasSearch,\n disabled,\n loading,\n validationError,\n label,\n hint,\n required,\n itemImageType,\n className,\n} = toRefs(props);\n</script>\n","<!-- PayByCard.vue -->\n<template>\n <div class=\"flex flex-col gap-6\">\n <!-- Billing Step -->\n <div v-if=\"formIndex === 0\" class=\"grid grid-cols-2 gap-6 overflow-y-auto\">\n <div class=\"col-span-2\">\n <BaseInput\n label=\"Address Line 1\"\n required\n v-model=\"billingForm.address1\"\n @update:modelValue=\"(e: string) => {\n billingForm.address1 = e;\n if (billingErrors.address1) billingErrors.address1 = '';\n }\"\n :validation-error=\"billingErrors.address1 ?? ''\"\n />\n </div>\n\n <div class=\"col-span-2\">\n <BaseInput\n label=\"Address Line 2\"\n v-model=\"billingForm.address2\"\n @update:modelValue=\"(e: string) => (billingForm.address2 = e)\"\n :validation-error=\"billingErrors.address2 ?? ''\"\n />\n </div>\n\n <BaseSelect\n label=\"Select Country\"\n required\n :options=\"countries\"\n :loading=\"loadingCountries\"\n v-model=\"billingForm.country\"\n @update:modelValue=\"\n async (e: string) => {\n billingForm.country = e;\n billingForm.state = '';\n await getStates(e);\n if (billingErrors.country) billingErrors.country = '';\n }\n \"\n :validation-error=\"billingErrors.country ?? ''\"\n />\n\n <BaseSelect\n label=\"Select State\"\n required\n :options=\"countryStates\"\n :loading=\"loadingStates\"\n v-model=\"billingForm.state\"\n @update:modelValue=\"(e: string) => {\n billingForm.state = e;\n if (billingErrors.state) billingErrors.state = '';\n }\"\n :validation-error=\"billingErrors.state ?? ''\"\n />\n\n <BaseInput\n label=\"City\"\n required\n v-model=\"billingForm.city\"\n @update:modelValue=\"(e: string) => {\n billingForm.city = e;\n if (billingErrors.city) billingErrors.city = '';\n }\"\n :validation-error=\"billingErrors.city ?? ''\"\n />\n\n <BaseInput\n label=\"Postal Code\"\n required\n v-model=\"billingForm.postalCode\"\n @update:modelValue=\"(e: string) => {\n billingForm.postalCode = e;\n if (billingErrors.postalCode) billingErrors.postalCode = '';\n }\"\n :validation-error=\"billingErrors.postalCode ?? ''\"\n />\n\n <BaseInput\n label=\"Email\"\n required\n v-model=\"billingForm.emailAddress\"\n @update:modelValue=\"(e: string) => {\n billingForm.emailAddress = e;\n if (billingErrors.emailAddress) billingErrors.emailAddress = '';\n }\"\n :validation-error=\"billingErrors.emailAddress ?? ''\"\n />\n\n <BaseInput\n label=\"Phone Number\"\n required\n v-model=\"billingForm.phoneNumber\"\n @update:modelValue=\"(e: string) => {\n billingForm.phoneNumber = e;\n if (billingErrors.phoneNumber) billingErrors.phoneNumber = '';\n }\"\n :validation-error=\"billingErrors.phoneNumber ?? ''\"\n />\n </div>\n\n <!-- Card Step -->\n <div\n v-if=\"formIndex === 1\"\n class=\"grid grid-cols-2 gap-6 overflow-y-auto\"\n :style=\"{ maxHeight: '320px' }\"\n >\n <div class=\"col-span-2\">\n <BaseInput\n label=\"Card Name\"\n required\n v-model=\"payForm.customerName\"\n @update:modelValue=\"(e: string) => {\n payForm.customerName = e;\n if (payErrors.customerName) payErrors.customerName = '';\n }\"\n :validation-error=\"payErrors.customerName ?? ''\"\n />\n </div>\n\n <div class=\"col-span-2\">\n <BaseInput\n label=\"Card Number\"\n required\n :rules=\"['numeric']\"\n mask=\"0000 0000 0000 0000\"\n placeholder=\"0000 0000 0000 0000\"\n v-model=\"payForm.cardNo\"\n @update:modelValue=\"(e: string) => {\n payForm.cardNo = e;\n if (payErrors.cardNo) payErrors.cardNo = '';\n cardNumberInputHandler(e);\n }\"\n :validation-error=\"payErrors.cardNo ?? ''\"\n />\n </div>\n\n <BaseInput\n label=\"Expiry Date\"\n required\n v-model=\"payForm.expireDate\"\n mask=\"00/00\"\n placeholder=\"00/00\"\n @update:modelValue=\"(e: string) => {\n payForm.expireDate = e;\n if (payErrors.expireDate) payErrors.expireDate = '';\n }\"\n :validation-error=\"payErrors.expireDate ?? ''\"\n />\n\n <BaseInput\n label=\"CVV\"\n required\n :rules=\"['numeric']\"\n v-model=\"payForm.cvv\"\n mask=\"000\"\n placeholder=\"000\"\n @update:modelValue=\"(e: string) => {\n payForm.cvv = e;\n if (payErrors.cvv) payErrors.cvv = '';\n }\"\n :validation-error=\"payErrors.cvv ?? ''\"\n />\n\n <BaseInput\n v-if=\"cardType === 'Verve'\"\n label=\"Card Pin\"\n required\n :rules=\"['numeric']\"\n v-model=\"payForm.cardPin\"\n mask=\"0000\"\n placeholder=\"0000\"\n @update:modelValue=\"(e: string) => {\n payForm.cardPin = e;\n if (payErrors.cardPin) payErrors.cardPin = '';\n }\"\n :validation-error=\"payErrors.cardPin ?? ''\"\n />\n </div>\n\n <BaseButton\n :label=\"formIndex === 0 ? 'Proceed' : `Pay ${formatAmountHandler}`\"\n type=\"primary\"\n customClass=\"w-full\"\n :loading=\"isMakingPayment\"\n @Click=\"proceedHandler\"\n :disabled=\"isMakingPayment\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, reactive, ref } from \"vue\";\nimport {\n IAuthorizeCardPaymentPayload,\n IBillingDetails,\n ICardDetails,\n IPaymentObject,\n ISuccessObject,\n} from \"../types/checkout.type\";\nimport { ICountry, ISelectOption, IState } from \"../types/resource.type\";\nimport {\n cardTypeHandler,\n checkObjectTruthy,\n formatAmount,\n getQueryParams,\n validateGroup,\n} from \"../utils\";\nimport {\n authorizeCardPayment,\n createPaymentLink,\n decryptPayload,\n encryptPayload,\n getCountries,\n getCountryStates,\n} from \"../apis\";\nimport BaseInput from \"./base/input.vue\";\nimport BaseSelect from \"./base/select.vue\";\nimport BaseButton from \"./base/button.vue\";\n\n/**\n * Props:\n * - Functions used below should be provided by the host app.\n * - This avoids adding imports/logic here, as requested.\n */\nconst props = defineProps<{\n secretKey: string;\n paymentObject: IPaymentObject;\n environment?: \"sandbox\" | \"prod\";\n onPaymentAuthorized?: (data: ISuccessObject) => void;\n}>();\n\nconst environment = props.environment ?? \"sandbox\";\n\n/** Local state */\nconst formIndex = ref(0);\nconst message = ref(\"\");\nconst isMakingPayment = ref(false);\nconst loading = ref(false);\nconst cardType = ref(\"\");\nconst transactionReference = ref(\"\");\nconst loadingCountries = ref(false);\nconst loadingStates = ref(false);\n\nconst rawCountries = ref<ICountry[]>([]);\nconst countries = ref<ISelectOption[]>([]);\nconst countryStates = ref<ISelectOption[]>([]);\n\n/** Forms */\nconst billingForm = reactive<Record<string, string>>({\n address1: \"\",\n address2: \"\",\n postalCode: \"\",\n state: \"\",\n city: \"\",\n country: \"\",\n emailAddress: \"\",\n phoneNumber: \"\",\n});\n\nconst payForm = reactive<Record<string, string>>({\n customerName: \"\",\n cardNo: \"\",\n expireDate: \"\",\n cvv: \"\",\n cardPin: \"\", // Only required for Verve cards\n});\n\n/** Error states */\nconst billingErrors = reactive<Record<string, string>>({});\nconst payErrors = reactive<Record<string, string>>({});\n\n/** Validation rules */\nconst billingRules = reactive<Record<string, string>>({\n address1: \"required\",\n address2: \"\",\n country: \"required\",\n state: \"required\",\n city: \"required\",\n postalCode: \"required|no_special|char_length:6\",\n emailAddress: \"required|email\",\n phoneNumber: \"required\",\n});\n\nconst payRules = reactive<Record<string, string>>({\n customerName: \"required\",\n cardNo: \"required|num_spaces\",\n expireDate: \"required\",\n cvv: \"required|numeric\",\n cardPin: \"\",\n});\n\n/** Labels */\nconst billingLabels: Record<string, string> = {\n address1: \"Address Line 1\",\n address2: \"Address Line 2\",\n postalCode: \"Postal Code\",\n state: \"State\",\n city: \"City\",\n country: \"Country\",\n emailAddress: \"Email\",\n phoneNumber: \"Phone Number\",\n};\n\nconst payLabels: Record<string, string> = {\n customerName: \"Card Name\",\n cardNo: \"Card Number\",\n expireDate: \"Expiry Date\",\n cvv: \"CVV\",\n cardPin: \"Card PIN\",\n};\n\n/** Amount label */\nconst formatAmountHandler = computed(() =>\n formatAmount(props.paymentObject.amount, props.paymentObject.currency)\n);\n\n/** Handlers */\nasync function proceedHandler() {\n if (formIndex.value === 0) {\n const errs = validateGroup(billingForm, billingRules, billingLabels);\n Object.assign(billingErrors, errs);\n if (Object.keys(errs).length === 0) {\n formIndex.value = 1;\n }\n return;\n }\n\n if (formIndex.value === 1) {\n const errs = validateGroup(payForm, payRules, payLabels);\n Object.assign(payErrors, errs);\n if (Object.keys(errs).length > 0) return;\n\n try {\n isMakingPayment.value = true;\n message.value = \"\";\n\n const cardDetails: ICardDetails = {\n pan: payForm.cardNo ?? \"\",\n expiryDate: payForm.expireDate ?? \"\",\n cvv: payForm.cvv ?? \"\",\n cardScheme: cardType.value,\n nameOnCard: payForm.customerName ?? \"\",\n ...(cardType.value === \"Verve\" ? { pin: payForm.cardPin ?? \"\" } : {}),\n };\n\n const billingDetails: IBillingDetails = {\n address1: billingForm.address1 ?? \"\",\n address2: billingForm.address2 ?? \"\",\n postalCode: billingForm.postalCode ?? \"\",\n state: billingForm.state ?? \"\",\n city: billingForm.city ?? \"\",\n country: billingForm.country ?? \"\",\n emailAddress: billingForm.emailAddress ?? \"\",\n phoneNumber: billingForm.phoneNumber ?? \"\",\n };\n\n const encryptedCardDetails = encryptPayload(props.secretKey, cardDetails);\n\n const payload: IAuthorizeCardPaymentPayload = {\n customerId: props.paymentObject?.email || payForm.customerName || \"\",\n amount: String(props.paymentObject?.amount ?? \"\"),\n currency: props.paymentObject?.currency || \"USD\",\n narration: props.paymentObject?.narration || \"Test transaction\",\n encryptedCardDetails: encryptedCardDetails.requestParam,\n billingDetails,\n redirectUrl: props.paymentObject?.redirectUrl || \"\",\n paymentReference: transactionReference.value,\n isCheckout: true,\n };\n\n const request = { ...payload, merchantId: props.secretKey };\n\n let response: any = await authorizeCardPayment(environment, request);\n\n if (response?.responseParam) {\n response = decryptPayload(environment, response.responseParam);\n }\n\n if (response?.isSuccessful) {\n // 3DS flow\n if (response.threeDsInteractionRequired === true) {\n const threeDsData = {\n transactionReference: response.transactionReference,\n threeDsHtml: response.threeDsHtml,\n amount: response.amount,\n responseMessage: response.responseMessage,\n paReq: response.threeDsHtml?.paReq,\n termUrl: response.threeDsHtml?.termUrl,\n action: response.threeDsHtml?.action,\n acsUrl: response.threeDsHtml?.acsUrl,\n md: response.threeDsHtml?.md,\n };\n\n // Encrypt 3DS data to pass as url param\n const stringifiedThreeDsData = btoa(JSON.stringify(threeDsData));\n\n // Open 3DS authentication page in a new tab\n const threeDsUrl = `https://sandbox-merchant.buzapay.com/account/three-ds-confirm?threeDsData=${encodeURIComponent(\n stringifiedThreeDsData\n )}&paymentReference=${response.transactionReference}`;\n window.open(threeDsUrl, \"_self\", \"noopener,noreferrer\");\n\n message.value =\n \"3D Secure authentication opened in new tab. Please complete the verification\";\n isMakingPayment.value = false;\n return;\n }\n\n if (\n response.responseMessage === \"Payer Interaction Required\" &&\n response.threeDsHtml\n ) {\n const threeDsData = {\n transactionReference: response.transactionReference,\n threeDsHtml: response.threeDsHtml,\n amount: response.amount,\n responseMessage: response.responseMessage,\n paReq: response.threeDsHtml?.paReq,\n termUrl: response.threeDsHtml?.termUrl,\n action: response.threeDsHtml?.action,\n acsUrl: response.threeDsHtml?.acsUrl,\n md: response.threeDsHtml?.md,\n };\n\n // Encrypt 3DS data to pass as url param\n const stringifiedThreeDsData = btoa(JSON.stringify(threeDsData));\n\n // Open 3DS authentication page in a new tab\n const threeDsUrl = `https://sandbox-merchant.buzapay.com/account/three-ds-confirm?threeDsData=${encodeURIComponent(\n stringifiedThreeDsData\n )}&paymentReference=${response.transactionReference}`;\n window.open(threeDsUrl, \"_self\", \"noopener,noreferrer\");\n\n message.value =\n \"3D Secure authentication opened in new tab. Please complete the verification\";\n isMakingPayment.value = false;\n return;\n }\n\n if (response.transactionReference?.trim()) {\n props.onPaymentAuthorized?.({\n paymentId: response.transactionReference,\n paymentDate: response?.data?.updatedAt,\n paymentStatus: \"Authorized\",\n });\n }\n\n message.value = \"Card payment authorized successfully\";\n isMakingPayment.value = false;\n return;\n }\n\n // Failure path\n message.value = response?.responseMessage || \"Payment failed\";\n props.onPaymentAuthorized?.({\n paymentId: response?.transactionReference,\n paymentDate: response?.data?.updatedAt,\n paymentStatus: \"Payment failed\",\n });\n isMakingPayment.value = false;\n } catch (err: any) {\n let friendly = \"Payment failed\";\n if (err?.error?.responseParam) {\n try {\n const decryptedError = decryptPayload(\n environment,\n err.error.responseParam\n );\n friendly = decryptedError?.responseMessage || friendly;\n } catch {\n friendly =\n err?.error?.responseMessage || err?.error?.message || friendly;\n }\n } else {\n friendly =\n err?.error?.responseMessage ||\n err?.error?.message ||\n \"Payment failed\";\n }\n\n message.value = friendly;\n isMakingPayment.value = false;\n }\n }\n}\n\nasync function generatePaymentLinkHandler() {\n if (!props.secretKey) {\n message.value = \"Secret key is required.\";\n return;\n }\n if (!checkObjectTruthy<IPaymentObject>(props.paymentObject)) {\n message.value = \"Kindly ensure you are passing all the required data.\";\n return;\n }\n\n loading.value = true;\n message.value = \"\";\n try {\n const response = await createPaymentLink(\n props.paymentObject,\n environment,\n props.secretKey\n );\n\n if (response?.isSuccessful && response.launchUrl) {\n const queryParams = getQueryParams(response.launchUrl);\n transactionReference.value = queryParams[\"paymentReference\"];\n message.value = \"Payment link created successfully\";\n } else {\n message.value = \"Failed to create payment link\";\n }\n } catch (e: any) {\n message.value = e?.message || \"Failed to create payment link\";\n } finally {\n loading.value = false;\n }\n}\n\nasync function getAllCountries() {\n loadingCountries.value = true;\n try {\n const response = await getCountries(environment, props.secretKey);\n\n if (response?.isSuccessful) {\n rawCountries.value = response.data;\n countries.value = (response.data ?? []).map((c: ICountry) => ({\n label: c.countryName,\n value: c.iso2,\n }));\n }\n } catch (e: any) {\n message.value = e?.message || \"Failed to get countries\";\n } finally {\n loadingCountries.value = false;\n }\n}\n\nasync function getStates(countryIso2: string) {\n const country = rawCountries.value.find((c) => c.iso2 === countryIso2);\n if (!country) return;\n loadingStates.value = true;\n try {\n const response = await getCountryStates(\n country.iso3,\n environment,\n props.secretKey\n );\n\n if (response?.isSuccessful) {\n countryStates.value = (response.data ?? []).map((s: IState) => ({\n label: s.name,\n value: s.name,\n }));\n }\n } catch (e: any) {\n message.value = e?.message || \"Failed to get country states\";\n } finally {\n loadingStates.value = false;\n }\n}\n\nfunction cardNumberInputHandler(event: string): void {\n cardType.value = cardTypeHandler(event);\n payRules.cardPin = cardType.value === \"Verve\" ? \"required|numeric\" : \"\";\n}\n\nonMounted(async () => {\n await generatePaymentLinkHandler();\n await getAllCountries();\n});\n</script>\n","<template>\n <svg\n :width=\"width\"\n :height=\"height\"\n viewBox=\"0 0 16 17\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n v-bind=\"attrs\"\n >\n <path\n d=\"M11.4002 1.6875H8.60016C5.9935 1.6875 4.8335 2.8475 4.8335 5.45417V6.1875C4.8335 6.46083 5.06016 6.6875 5.3335 6.6875H7.40016C9.46683 6.6875 10.1668 7.3875 10.1668 9.45417V11.5208C10.1668 11.7942 10.3935 12.0208 10.6668 12.0208H11.4002C14.0068 12.0208 15.1668 10.8608 15.1668 8.25417V5.45417C15.1668 2.8475 14.0068 1.6875 11.4002 1.6875ZM5.8335 5.6875V5.45417C5.8335 3.3875 6.5335 2.6875 8.60016 2.6875H11.4002C13.4668 2.6875 14.1668 3.3875 14.1668 5.45417V8.25417C14.1668 10.3208 13.4668 11.0208 11.4002 11.0208H11.1668V9.45417C11.1668 6.8475 10.0068 5.6875 7.40016 5.6875H5.8335Z\"\n :fill=\"color\"\n />\n <path\n d=\"M7.40016 5.6875H4.60016C1.9935 5.6875 0.833496 6.8475 0.833496 9.45417V12.2542C0.833496 14.8608 1.9935 16.0208 4.60016 16.0208H7.40016C10.0068 16.0208 11.1668 14.8608 11.1668 12.2542V9.45417C11.1668 6.8475 10.0068 5.6875 7.40016 5.6875ZM4.60016 15.0208C2.5335 15.0208 1.8335 14.3208 1.8335 12.2542V9.45417C1.8335 7.3875 2.5335 6.6875 4.60016 6.6875H7.40016C9.46683 6.6875 10.1668 7.3875 10.1668 9.45417V12.2542C10.1668 14.3208 9.46683 15.0208 7.40016 15.0208H4.60016Z\"\n :fill=\"color\"\n />\n <path\n d=\"M5.35302 12.6542C5.22635 12.6542 5.09969 12.6075 4.99969 12.5075L3.69969 11.2075C3.50635 11.0142 3.50635 10.6942 3.69969 10.5008C3.89302 10.3075 4.21302 10.3075 4.40635 10.5008L5.35302 11.4475L7.59302 9.2075C7.78635 9.01417 8.10635 9.01417 8.29969 9.2075C8.49302 9.40083 8.49302 9.72083 8.29969 9.91417L5.69969 12.5075C5.60635 12.6008 5.47969 12.6542 5.35302 12.6542Z\"\n :fill=\"color\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from \"vue\";\n\ninterface IIconProps {\n width?: number | string;\n height?: number | string;\n color?: string;\n}\n\nconst props = withDefaults(defineProps<IIconProps>(), {\n width: 16,\n height: 17,\n color: \"currentColor\",\n});\n\nconst attrs = useAttrs();\nconst { width, height, color } = props;\n</script>\n","<template>\n <IconCopySuccess class=\"cursor-pointer\" :color=\"color\" @click=\"copyHandler\" />\n</template>\n\n<script setup lang=\"ts\">\nimport IconCopySuccess from \"../icons/icon-copy-success.vue\";\n\ninterface IBaseCopyProps {\n copyText: string;\n color?: string;\n}\n\nconst props = defineProps<IBaseCopyProps>();\n\nfunction copyToClipboard(text: string) {\n return navigator.clipboard.writeText(text);\n}\n\nfunction copyHandler() {\n copyToClipboard(props.copyText)\n .then(() => {\n // success: optionally emit an event or show toast\n })\n .catch((err) => {\n console.error(\"Copy failed:\", err);\n });\n}\n</script>\n","<template>\n <div\n v-if=\"type === 'vertical'\"\n :class=\"['flex flex-col gap-1', alignRight ? 'text-right items-end' : '']\"\n >\n <p :class=\"labelCustomClass\">{{ upperLabel }}</p>\n\n <div class=\"flex items-center gap-1\">\n <BaseImage\n v-if=\"showPrefixImg\"\n :src=\"valueImageSrc\"\n :alt=\"value\"\n :width=\"22\"\n :customClass=\"valueImageCustomClass\"\n />\n\n <p v-if=\"!hasValueCopy\" :class=\"valueCustomClass\">{{ value }}</p>\n <p v-else :class=\"[valueCustomClass, 'truncate']\">\n {{ truncatedValue }}\n </p>\n\n <BaseCopy v-if=\"hasValueCopy\" :copyText=\"value\" color=\"#9DBFDE\" />\n\n <BaseImage\n v-if=\"showSuffixImg\"\n :src=\"valueImageSrc\"\n :alt=\"value\"\n :width=\"22\"\n :customClass=\"valueImageCustomClass\"\n />\n </div>\n </div>\n\n <!-- horizontal -->\n <div v-else class=\"flex items-center justify-between\">\n <p :class=\"labelCustomClass\">{{ upperLabel }}</p>\n\n <div class=\"flex items-center gap-1\">\n <BaseImage\n v-if=\"showPrefixImg\"\n :src=\"valueImageSrc\"\n :alt=\"value\"\n :width=\"22\"\n :customClass=\"valueImageCustomClass\"\n />\n\n <p :class=\"valueCustomClass\">{{ value }}</p>\n\n <BaseCopy v-if=\"hasValueCopy\" :copyText=\"value\" color=\"#9DBFDE\" />\n\n <BaseImage\n v-if=\"showSuffixImg\"\n :src=\"valueImageSrc\"\n :alt=\"value\"\n :width=\"22\"\n :customClass=\"valueImageCustomClass\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { truncateString } from \"../../utils\";\nimport BaseImage from \"./image.vue\";\nimport BaseCopy from \"./copy.vue\";\n\ntype LayoutType = \"vertical\" | \"horizontal\";\ntype ImagePosition = \"prefix\" | \"suffix\";\n\ninterface IBaseLabelInfoProps {\n type?: LayoutType;\n label?: string;\n labelCustomClass?: string;\n valueImageSrc?: string;\n valueImageCustomClass?: string;\n valueImagePosition?: ImagePosition;\n hasValueCopy?: boolean;\n value?: string;\n valueCustomClass?: string;\n alignRight?: boolean;\n}\n\nconst props = withDefaults(defineProps<IBaseLabelInfoProps>(), {\n type: \"vertical\",\n label: \"\",\n labelCustomClass: \"text-body-4xs font-medium text-light-copy\",\n valueImageSrc: \"\",\n valueImageCustomClass: \"\",\n valueImagePosition: \"prefix\",\n hasValueCopy: false,\n value: \"\",\n valueCustomClass: \"text-body-2xs font-medium text-sub-copy\",\n alignRight: false,\n});\n\nconst upperLabel = computed(() => (props.label ?? \"\").toUpperCase());\nconst showPrefixImg = computed(\n () => !!props.valueImageSrc && props.valueImagePosition === \"prefix\"\n);\nconst showSuffixImg = computed(\n () => !!props.valueImageSrc && props.valueImagePosition === \"suffix\"\n);\nconst truncatedValue = computed(() => truncateString(props.value, 40));\n\nconst {\n type,\n labelCustomClass,\n valueImageSrc,\n valueImageCustomClass,\n hasValueCopy,\n value,\n valueCustomClass,\n alignRight,\n} = props;\n</script>\n","<!-- PayByTransfer.vue -->\n<template>\n <div class=\"flex flex-col gap-10\">\n <!-- Step 0: collect customer name -->\n <div v-if=\"formIndex === 0\" class=\"flex flex-col gap-10\">\n <BaseInput\n label=\"Customer Name\"\n required\n v-model=\"transferForm.customerName\"\n @update:modelValue=\"(e: string) => {\n transferForm.customerName = e\n if (transferForm.customerName) transferErrors.customerName = ''\n }\"\n :validationError=\"transferErrors.customerName ?? ''\"\n />\n\n <BaseButton\n :label=\"`Pay ${formatAmountHandler}`\"\n type=\"primary\"\n customClass=\"w-full\"\n :loading=\"isMakingPayment\"\n :onClick=\"payHandler\"\n />\n </div>\n\n <!-- Step 1: show virtual account details and confirm -->\n <div v-else-if=\"formIndex === 1\" class=\"flex flex-col gap-10\">\n <div class=\"bg-[#EFF7FF] p-4 rounded-lg flex flex-col gap-6\">\n <BaseLabelInfo\n label=\"Bank Name\"\n :value=\"`${paymentAccountDetails?.bank ?? ''} ${\n paymentAccountDetails?.accountName ?? ''\n }`\"\n />\n\n <div class=\"flex items-center justify-between\">\n <BaseLabelInfo\n label=\"Account Number\"\n :value=\"paymentAccountDetails?.accountNumber\"\n />\n <BaseCopy\n color=\"#9DBFDE\"\n :copyText=\"paymentAccountDetails?.accountNumber ?? ''\"\n />\n </div>\n\n <div class=\"flex items-center justify-between\">\n <BaseLabelInfo label=\"Amount\" :value=\"formatAmountHandler\" />\n <BaseCopy color=\"#9DBFDE\" :copyText=\"formatAmountHandler\" />\n </div>\n </div>\n\n <p\n class=\"w-2/3 mx-auto text-center text-body-2xs font-medium text-sub-copy\"\n >\n This account is for this transaction only and expires in\n <span class=\"text-orange-500\">\n {{ remainingSeconds >= 0 ? countDownTime : \"00:00\" }}\n </span>\n </p>\n\n <div class=\"flex flex-col gap-4\">\n <BaseButton\n label=\"I have paid the money\"\n type=\"primary\"\n customClass=\"w-full\"\n :loading=\"isFetchingPaymentDetails\"\n :onClick=\"getReferenceDetails\"\n />\n <button\n type=\"button\"\n @click=\"onCancel?.()\"\n class=\"text-heading-text text-body-2xs font-medium text-center py-2 cursor-pointer\"\n >\n Cancel Payment\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, reactive, ref } from \"vue\";\nimport {\n IPaymentAccountResponse,\n IPaymentObject,\n IPaymentReferenceDetail,\n ISuccessObject,\n} from \"../types/checkout.type\";\nimport {\n checkObjectTruthy,\n formatAmount,\n getQueryParams,\n validateGroup,\n} from \"../utils\";\nimport {\n createPaymentLink,\n generatePaymentAccount,\n getPaymentReferenceDetails,\n} from \"../apis\";\nimport BaseInput from \"./base/input.vue\";\nimport BaseLabelInfo from \"./base/label-info.vue\";\nimport BaseButton from \"./base/button.vue\";\nimport BaseCopy from \"./base/copy.vue\";\n\nconst props = defineProps<{\n secretKey: string;\n paymentObject: IPaymentObject;\n environment?: \"sandbox\" | \"prod\";\n onPaymentAuthorized?: (data: ISuccessObject) => void;\n onCancel?: () => void;\n}>();\n\nconst environment = props.environment ?? \"sandbox\";\n\n/** UI state */\nconst formIndex = ref(0);\nconst isMakingPayment = ref(false);\nconst isConfirmCall = ref(false);\nconst isPaymentConfirmed = ref(false);\n\nconst transactionReference = ref(\"\");\nconst paymentReferenceStatus = ref(\"\");\n\nconst isFetchingPaymentDetails = ref(false);\nconst paymentReferenceDetails = ref<IPaymentReferenceDetail | null>(null);\nconst paymentAccountDetails = ref<IPaymentAccountResponse | null>(null);\nconst paymentMade = ref(false);\n\nconst loading = ref(false);\nconst message = ref(\"\");\n\n/** Countdown */\nconst remainingSeconds = ref(60);\nconst countDownTime = ref(\"00:00\");\nconst intervalRef = ref<number | null>(null);\n\n/** Form + errors */\nconst transferForm = reactive<Record<string, string>>({\n customerName: \"\",\n});\n\nconst transferErrors = reactive<Record<string, string>>({});\n\nconst transferRules: Record<string, string> = {\n customerName: \"required\",\n};\n\nconst transferLabels: Record<string, string> = {\n customerName: \"Customer Name\",\n};\n\n/** Amount label */\nconst formatAmountHandler = computed(() =>\n formatAmount(props.paymentObject.amount, props.paymentObject.currency)\n);\n\n/** Actions */\nasync function payHandler() {\n if (formIndex.value === 0) {\n const errs = validateGroup(transferForm, transferRules, transferLabels);\n Object.assign(transferErrors, errs);\n\n if (Object.keys(errs).length === 0) {\n const payload = {\n paymentReference: transactionReference.value,\n channel: \"virtual_account\",\n customerName: transferForm.customerName ?? \"\",\n merchantId: props.secretKey,\n };\n isMakingPayment.value = true;\n\n try {\n const response = await generatePaymentAccount(environment, payload);\n if ((response as any)?.isSuccessful) {\n // some backends nest under data; keep flexible\n const data =\n (response as any).data?.data ?? (response as any).data ?? null;\n paymentAccountDetails.value = data as IPaymentAccountResponse;\n startTimer();\n message.value = \"Virtual account generated successfully for payment.\";\n isMakingPayment.value = true;\n formIndex.value = 1;\n } else {\n isMakingPayment.value = false;\n message.value =\n (response as any)?.responseMessage || \"Failed to generate account\";\n }\n } catch (err: any) {\n isMakingPayment.value = false;\n message.value =\n err?.error?.responseMessage || err?.error?.message || \"Error\";\n }\n }\n return;\n }\n}\n\nasync function getReferenceDetails() {\n isFetchingPaymentDetails.value = true;\n try {\n const response = await getPaymentReferenceDetails(\n environment,\n transactionReference.value\n );\n\n if (response?.isSuccessful) {\n const data =\n (response as any).data?.data ?? (response as any).data ?? null;\n paymentReferenceDetails.value = data as IPaymentReferenceDetail;\n\n const made =\n data?.paymentStatus === \"Payment Received\" ||\n data?.paymentStatus === \"Received\";\n paymentMade.value = made;\n\n const noServerStatus =\n data?.finalTransactionStatus == null || data?.paymentStatus == null;\n\n if (noServerStatus) {\n if (isConfirmCall.value) {\n message.value = \"Transaction not confirmed !!\";\n }\n\n if (!isPaymentConfirmed.value && !made) {\n paymentReferenceStatus.value = \"pending\";\n props.onPaymentAuthorized?.({\n paymentId: transactionReference.value,\n paymentDate: data?.updatedAt,\n paymentStatus: \"pending\",\n });\n } else {\n paymentReferenceStatus.value = \"confirmed\";\n props.onPaymentAuthorized?.({\n paymentId: transactionReference.value,\n paymentDate: data?.updatedAt,\n paymentStatus: \"confirmed\",\n });\n }\n } else if (\n data?.finalTransactionStatus === \"Success\" ||\n data?.paymentStatus === \"Received\" ||\n data?.paymentStatus === \"Payment Received\"\n ) {\n paymentReferenceStatus.value = \"confirmed\";\n isPaymentConfirmed.value = true;\n message.value = \"Transaction confirmed !!\";\n\n props.onPaymentAuthorized?.({\n paymentId: transactionReference.value,\n paymentDate: data?.updatedAt,\n paymentStatus: \"confirmed\",\n });\n }\n } else if (\n !response?.isSuccessful &&\n (response as any)?.responseCode === \"119\"\n ) {\n paymentReferenceStatus.value = \"used\";\n message.value = (response as any)?.responseMessage || \"\";\n props.onPaymentAuthorized?.({\n paymentId: transactionReference.value,\n paymentDate: null,\n paymentStatus: \"used\",\n });\n }\n } catch (err: any) {\n paymentReferenceStatus.value = \"\";\n message.value =\n err?.error?.responseMessage ||\n err?.error?.message ||\n \"Something went wrong\";\n } finally {\n isFetchingPaymentDetails.value = false;\n }\n}\n\nasync function generatePaymentLinkHandler() {\n if (!props.secretKey) {\n message.value = \"Secret key is required.\";\n return;\n }\n if (!checkObjectTruthy<IPaymentObject>(props.paymentObject)) {\n message.value = \"Kindly ensure you are passing all the required data.\";\n return;\n }\n\n loading.value = true;\n message.value = \"\";\n try {\n const response = await createPaymentLink(\n props.paymentObject,\n environment,\n props.secretKey\n );\n\n if (response?.isSuccessful && response.launchUrl) {\n const queryParams = getQueryParams(response.launchUrl);\n transactionReference.value = queryParams[\"paymentReference\"];\n message.value = \"Payment link created successfully\";\n } else {\n message.value = \"Failed to create payment link\";\n }\n } catch (e: any) {\n message.value = e?.message || \"Failed to create payment link\";\n } finally {\n loading.value = false;\n }\n}\n\n/** Timer utilities */\nfunction updateDisplay(secs: number) {\n const minutes = String(Math.floor(secs / 60)).padStart(2, \"0\");\n const seconds = String(secs % 60).padStart(2, \"0\");\n countDownTime.value = `${minutes}:${seconds}`;\n}\n\nfunction startTimer() {\n if (intervalRef.value) {\n clearInterval(intervalRef.value);\n intervalRef.value = null;\n }\n\n updateDisplay(remainingSeconds.value);\n\n intervalRef.value = window.setInterval(() => {\n const next = remainingSeconds.value - 1;\n if (next < 0) {\n if (intervalRef.value) {\n clearInterval(intervalRef.value);\n intervalRef.value = null;\n }\n countDownTime.value = \"00:00\";\n remainingSeconds.value = 0;\n return;\n }\n remainingSeconds.value = next;\n updateDisplay(next);\n }, 1000);\n}\n\nfunction stopTimer() {\n if (intervalRef.value) {\n clearInterval(intervalRef.value);\n intervalRef.value = null;\n }\n}\n\nonMounted(async () => {\n await generatePaymentLinkHandler();\n});\n</script>\n","<template>\n <svg\n :width=\"width\"\n :height=\"height\"\n viewBox=\"0 0 28 28\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n v-bind=\"attrs\"\n >\n <g clip-path=\"url(#clip0_10908_387048)\">\n <path\n d=\"M14 0C21.7324 0 28 6.26763 28 14C28 21.7324 21.7324 28 14 28C6.26763 28 0 21.7324 0 14C0 6.26763 6.26763 0 14 0ZM16.933 4.865C16.7195 4.76 16.506 4.865 16.4535 5.07762C16.4001 5.131 16.4001 5.18438 16.4001 5.29025V6.034L16.4089 6.125C16.4546 6.30501 16.5652 6.46177 16.7195 6.56512C20.8792 8.05262 23.0125 12.6726 21.4655 16.7615C20.6657 18.9928 18.9061 20.6911 16.7195 21.4883C16.506 21.5941 16.4001 21.7534 16.4001 22.0194V22.7631L16.4045 22.8401C16.4128 22.9241 16.4479 23.0033 16.5047 23.0658C16.5614 23.1284 16.6367 23.171 16.7195 23.1875C16.7729 23.1875 16.8796 23.1875 16.933 23.135C18.1331 22.7602 19.2473 22.1517 20.2113 21.3446C21.1753 20.5375 21.9701 19.5476 22.5499 18.432C23.1298 17.3164 23.4833 16.0972 23.59 14.8444C23.6967 13.5917 23.5546 12.3302 23.1718 11.1326C22.2128 8.10512 19.866 5.8205 16.933 4.865ZM11.2805 4.8125C11.2271 4.8125 11.1204 4.8125 11.067 4.865C9.86688 5.23978 8.75274 5.84826 7.78874 6.6554C6.82475 7.46254 6.02993 8.4524 5.45006 9.56797C4.87019 10.6836 4.51673 11.9028 4.41001 13.1556C4.30329 14.4083 4.44543 15.6698 4.82825 16.8674C5.78725 19.8424 8.08062 22.1261 11.067 23.0816C11.2805 23.1875 11.494 23.0816 11.5465 22.869C11.5999 22.8165 11.5999 22.7622 11.5999 22.6564V21.9126L11.5911 21.8426C11.5544 21.6947 11.417 21.5259 11.2805 21.4349C7.12075 19.9474 4.9875 15.3274 6.5345 11.2385C7.33425 9.00725 9.09388 7.30887 11.2805 6.51175C11.494 6.40587 11.5999 6.24663 11.5999 5.98063V5.23688L11.5955 5.15987C11.5872 5.07585 11.5521 4.99673 11.4954 4.93418C11.4386 4.87163 11.3633 4.82898 11.2805 4.8125ZM14.3736 7.574H13.573L13.496 7.581C13.321 7.616 13.1933 7.7665 13.146 7.99925V9.22075L12.9649 9.24875C11.4704 9.51475 10.5341 10.5464 10.5341 11.823C10.5341 13.5748 11.5999 14.2651 13.8399 14.5311C15.3335 14.7963 15.813 15.1156 15.813 15.9653C15.813 16.814 15.0666 17.3985 14.0534 17.3985C12.6665 17.3985 12.187 16.8149 12.0269 16.0177C11.9744 15.806 11.8134 15.6992 11.6532 15.6992H10.7467L10.6776 15.7054C10.5913 15.7193 10.513 15.7641 10.4572 15.8313C10.4014 15.8985 10.3718 15.9838 10.374 16.0711V16.1236L10.4029 16.2811C10.6566 17.5271 11.5106 18.4187 13.2003 18.6734V19.9483L13.2072 20.0252C13.2422 20.1985 13.3936 20.3263 13.6273 20.3726H14.427L14.504 20.3656C14.679 20.3306 14.8067 20.1801 14.854 19.9483V18.6725L15.0351 18.6375C16.534 18.3207 17.5201 17.2366 17.5201 15.8576C17.5201 13.9991 16.4001 13.3621 14.1601 13.0961C12.5598 12.8835 12.2404 12.4591 12.2404 11.7154C12.2404 10.9716 12.7741 10.4939 13.8399 10.4939C14.7998 10.4939 15.3335 10.8124 15.5995 11.6095C15.6272 11.6866 15.6779 11.7533 15.7447 11.8007C15.8115 11.8481 15.8912 11.8739 15.9731 11.8746H16.8262L16.8954 11.8694C16.982 11.8556 17.0606 11.8108 17.1166 11.7434C17.1726 11.6759 17.2022 11.5904 17.1999 11.5027V11.4503L17.1675 11.2989C17.0361 10.755 16.7366 10.2664 16.3115 9.90255C15.8864 9.53872 15.3574 9.31821 14.7997 9.27238V7.99925L14.7928 7.92225C14.7578 7.74812 14.6073 7.62038 14.3736 7.574Z\"\n :fill=\"color\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_10908_387048\">\n <rect width=\"28\" height=\"28\" :fill=\"color\" />\n </clipPath>\n </defs>\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from \"vue\";\n\ninterface IIconProps {\n width?: number | string;\n height?: number | string;\n color?: string;\n}\n\nconst props = withDefaults(defineProps<IIconProps>(), {\n width: 28,\n height: 28,\n color: \"currentColor\",\n});\n\nconst attrs = useAttrs();\nconst { width, height, color } = props;\n</script>\n","<template>\n <svg\n :width=\"width\"\n :height=\"height\"\n viewBox=\"0 0 28 28\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n v-bind=\"attrs\"\n >\n <g clip-path=\"url(#clip0_10908_387045)\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M14 28C6.26763 28 0 21.7324 0 14C0 6.26763 6.26763 0 14 0C21.7324 0 28 6.26763 28 14C28 21.7324 21.7324 28 14 28ZM15.6818 12.0689V9.99863H20.419V6.84162H7.52063V9.99863H12.2579V12.068C8.40787 12.2447 5.5125 13.0077 5.5125 13.9212C5.5125 14.8347 8.40787 15.5969 12.2579 15.7745V22.4088H15.6818V15.7727C19.5256 15.596 22.414 14.8339 22.414 13.9212C22.414 13.0086 19.5256 12.2465 15.6818 12.0689ZM15.6818 15.2101V15.2084C15.5855 15.2154 15.0894 15.2451 13.9825 15.2451C13.0987 15.2451 12.4766 15.2189 12.2579 15.2084V15.211C8.85587 15.0614 6.31662 14.469 6.31662 13.7602C6.31662 13.0524 8.85587 12.46 12.2579 12.3077V14.6212C12.4801 14.637 13.1171 14.6746 13.9974 14.6746C15.0535 14.6746 15.5829 14.6309 15.6818 14.6221V12.3095C19.0768 12.4609 21.6099 13.0532 21.6099 13.7602C21.6099 14.469 19.0768 15.0596 15.6818 15.2101Z\"\n :fill=\"color\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_10908_387045\">\n <rect width=\"28\" height=\"28\" :fill=\"color\" />\n </clipPath>\n </defs>\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from \"vue\";\n\ninterface IIconProps {\n width?: number | string;\n height?: number | string;\n color?: string;\n}\n\nconst props = withDefaults(defineProps<IIconProps>(), {\n width: 28,\n height: 28,\n color: \"currentColor\",\n});\n\nconst attrs = useAttrs();\nconst { width, height, color } = props;\n</script>\n","<template>\n <p v-if=\"cur !== 'USDT' && cur !== 'USDC'\" :class=\"textClass\">\n {{ formatAmount(amount, cur) }}\n </p>\n <div v-else class=\"flex items-center gap-1\">\n <IconUsdt\n v-if=\"cur === 'USDT'\"\n :width=\"iconWidth\"\n :height=\"iconHeight\"\n :color=\"iconColorClass\"\n />\n <IconUsdc\n v-if=\"cur === 'USDC'\"\n :width=\"iconWidth\"\n :height=\"iconHeight\"\n :color=\"iconColorClass\"\n />\n <p :class=\"textClass\">{{ formatAmount(amount) }}</p>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { formatAmount } from \"../../utils\";\nimport IconUsdc from \"../icons/icon-usdc.vue\";\nimport IconUsdt from \"../icons/icon-usdt.vue\";\n\ninterface IBaseCurrencyAmountProps {\n currency: string;\n amount: number | string;\n textClass?: string;\n iconColorClass?: string;\n iconWidth?: number | string;\n iconHeight?: number | string;\n}\n\nconst props = withDefaults(defineProps<IBaseCurrencyAmountProps>(), {\n textClass: \"\",\n iconColorClass: \"\",\n iconWidth: 16,\n iconHeight: 16,\n});\n\nconst cur = computed(() => props.currency?.toUpperCase());\n</script>\n","<template>\n <svg\n :width=\"width\"\n :height=\"height\"\n viewBox=\"0 0 16 17\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n v-bind=\"attrs\"\n >\n <path\n d=\"M10.3265 14.1948C10.1998 14.1948 10.0731 14.1481 9.97313 14.0481C9.77979 13.8548 9.77979 13.5348 9.97313 13.3414L13.3131 10.0014C13.5065 9.80811 13.8265 9.80811 14.0198 10.0014C14.2131 10.1948 14.2131 10.5148 14.0198 10.7081L10.6798 14.0481C10.5798 14.1414 10.4531 14.1948 10.3265 14.1948Z\"\n :fill=\"color\"\n />\n <path\n d=\"M13.6668 10.8477H2.3335C2.06016 10.8477 1.8335 10.621 1.8335 10.3477C1.8335 10.0743 2.06016 9.84766 2.3335 9.84766H13.6668C13.9402 9.84766 14.1668 10.0743 14.1668 10.3477C14.1668 10.621 13.9402 10.8477 13.6668 10.8477Z\"\n :fill=\"color\"\n />\n <path\n d=\"M2.33329 6.86079C2.20663 6.86079 2.07996 6.81413 1.97996 6.71413C1.78663 6.52079 1.78663 6.20079 1.97996 6.00746L5.31996 2.66746C5.51329 2.47413 5.83329 2.47413 6.02663 2.66746C6.21996 2.86079 6.21996 3.18079 6.02663 3.37413L2.68663 6.71413C2.59329 6.80746 2.45996 6.86079 2.33329 6.86079Z\"\n :fill=\"color\"\n />\n <path\n d=\"M13.6668 6.86133H2.3335C2.06016 6.86133 1.8335 6.63466 1.8335 6.36133C1.8335 6.08799 2.06016 5.86133 2.3335 5.86133H13.6668C13.9402 5.86133 14.1668 6.08799 14.1668 6.36133C14.1668 6.63466 13.9402 6.86133 13.6668 6.86133Z\"\n :fill=\"color\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from \"vue\";\n\ninterface IIconProps {\n width?: number | string;\n height?: number | string;\n color?: string;\n}\n\nconst props = withDefaults(defineProps<IIconProps>(), {\n width: 16,\n height: 17,\n color: \"currentColor\",\n});\n\nconst attrs = useAttrs();\nconst { width, height, color } = props;\n</script>\n","<!-- PayByStableCoin.vue -->\n<template>\n <div class=\"flex flex-col gap-6\">\n <!-- Step 0: choose coin + network -->\n <template v-if=\"formIndex === 0\">\n <div class=\"grid grid-cols-1 gap-6\">\n <BaseSelect\n label=\"Select Crypto\"\n required\n :options=\"stableCoins\"\n :loading=\"loadingStableCoins\"\n :value=\"stableCoinForm.stableCoin\"\n :onChange=\"(e: string) => {\n stableCoinForm.stableCoin = e\n getAllStableCoinNetworks(e)\n if (stableCoinErrors.stableCoin) stableCoinErrors.stableCoin = ''\n }\"\n :validationError=\"stableCoinErrors.stableCoin ?? ''\"\n />\n\n <BaseSelect\n label=\"Select Network\"\n required\n :options=\"networkList\"\n :loading=\"loadingStableCoinNetworks\"\n :value=\"stableCoinForm.network\"\n :onChange=\"(e: string) => {\n stableCoinForm.network = e\n if (stableCoinErrors.network) stableCoinErrors.network = ''\n }\"\n :validationError=\"stableCoinErrors.network ?? ''\"\n />\n </div>\n\n <BaseButton\n :label=\"`Pay ${formatAmountHandler}`\"\n type=\"primary\"\n customClass=\"w-full\"\n :loading=\"generatingAddress\"\n :onClick=\"payHandler\"\n />\n </template>\n\n <!-- Step 1: show deposit details + confirm -->\n <div v-else class=\"flex flex-col gap-6\">\n <div class=\"mx-auto\">\n <!-- Optional QR image slot (host can provide) -->\n <p class=\"mb-0 text-body-4xs text-light-copy font-normal text-center\">\n {{ generateAddressPayload?.currency }}\n </p>\n </div>\n\n <div\n class=\"flex flex-col gap-6 border-c border-grey-100 p-4 rounded-2xl bg-light-white-50\"\n >\n <div class=\"border-b border-grey-border pb-4 flex flex-col gap-2\">\n <p class=\"mb-0 text-body-3xs text-light-copy font-normal\">Network</p>\n\n <div class=\"flex justify-between\">\n <div class=\"flex flex-col gap-1\">\n <p class=\"mb-0 text-body-2xs font-medium text-sub-copy\">\n {{ addressDetails?.chain }}\n </p>\n\n <div class=\"flex items-center gap-2\">\n <p class=\"mb-0 text-body-3xs text-light-copy font-normal\">\n *Est. arrival = 3 mins\n </p>\n <p class=\"mb-0 text-body-3xs text-light-copy font-normal\">|</p>\n\n <BaseCurrencyAmount\n :currency=\"generateAddressPayload?.currency ?? ''\"\n :amount=\"addressDetails?.networkFee ?? 0\"\n textClass=\"mb-0 text-body-3xs text-light-copy font-normal\"\n iconColorClass=\"#557591\"\n :iconWidth=\"12\"\n :iconHeight=\"12\"\n />\n </div>\n </div>\n\n <!-- Assume globally registered -->\n <IconArrowSwap />\n </div>\n </div>\n\n <div class=\"pb-4 flex flex-col gap-2\">\n <p class=\"mb-0 text-body-3xs text-light-copy font-normal\">\n Deposit Address >\n </p>\n\n <div class=\"flex justify-between\">\n <p\n class=\"mb-0 text-body-2xs font-medium text-sub-copy w-2/3 break-words\"\n >\n {{ addressDetails?.walletAddress }}\n </p>\n\n <BaseCopy :copyText=\"addressDetails?.walletAddress ?? ''\" />\n </div>\n </div>\n </div>\n\n <div class=\"flex flex-col gap-2\">\n <div\n class=\"flex items-center justify-between border-b border-grey-border py-3\"\n >\n <p class=\"mb-0 text-body-2xs font-medium text-primary-black\">\n Network fee\n </p>\n <BaseCurrencyAmount\n :currency=\"generateAddressPayload?.currency ?? ''\"\n :amount=\"addressDetails?.networkFee ?? 0\"\n textClass=\"mb-0 text-body-2xs font-extrabold text-primary-black\"\n iconColorClass=\"#231F20\"\n />\n </div>\n\n <div class=\"flex items-center justify-between py-4\">\n <p class=\"mb-0 text-body-lg font-semibold text-primary-black\">Pay</p>\n <BaseCurrencyAmount\n :currency=\"generateAddressPayload?.currency ?? ''\"\n :amount=\"amountPlusNetworkFee\"\n textClass=\"mb-0 text-body-lg font-extrabold text-primary-black\"\n iconColorClass=\"#231F20\"\n :iconWidth=\"20\"\n :iconHeight=\"20\"\n />\n </div>\n </div>\n\n <div class=\"flex flex-col gap-6\">\n <BaseButton\n label=\"Confirm Payment\"\n type=\"primary\"\n customClass=\"w-full\"\n :loading=\"isConfirmingPayment\"\n :onClick=\"confirmPaymentHandler\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, reactive, ref } from \"vue\";\nimport {\n IGenerateStableCoinAddress,\n IGenerateStableCoinAddressResponse,\n IPaymentObject,\n IPaymentReferenceDetail,\n ISuccessObject,\n} from \"../types/checkout.type\";\nimport { ISelectOption } from \"../types/resource.type\";\nimport {\n checkObjectTruthy,\n formatAmount,\n getQueryParams,\n validateGroup,\n} from \"../utils\";\nimport {\n createPaymentLink,\n generateStableCoinAddress,\n getPaymentReferenceDetails,\n getStableCoinNetworks,\n getStableCoins,\n} from \"../apis\";\nimport BaseSelect from \"./base/select.vue\";\nimport BaseCurrencyAmount from \"./base/currency-amount.vue\";\nimport BaseButton from \"./base/button.vue\";\nimport BaseCopy from \"./base/copy.vue\";\nimport IconArrowSwap from \"./icons/icon-arrow-swap.vue\";\n\nconst props = defineProps<{\n secretKey: string;\n paymentObject: IPaymentObject;\n environment?: \"sandbox\" | \"prod\";\n onPaymentAuthorized?: (data: ISuccessObject) => void;\n}>();\n\nconst environment = props.environment ?? \"sandbox\";\n\n/** Local state */\nconst formIndex = ref<number>(0);\nconst message = ref(\"\");\nconst loading = ref(false);\n\nconst generatingAddress = ref(false);\nconst loadingStableCoins = ref(false);\nconst loadingStableCoinNetworks = ref(false);\n\nconst transactionReference = ref(\"\");\nconst stableCoins = ref<ISelectOption[]>([]);\nconst networkList = ref<ISelectOption[]>([]);\n\nconst addressDetails = ref<IGenerateStableCoinAddressResponse | null>(null);\nconst generateAddressPayload = ref<IGenerateStableCoinAddress | null>(null);\n\nconst isConfirmingPayment = ref(false);\nconst paymentReferenceDetails = ref<IPaymentReferenceDetail | null>(null);\nconst paymentReferenceStatus = ref<string>(\"\");\n\n/** Form + errors */\nconst stableCoinForm = reactive<Record<string, string>>({\n stableCoin: \"\",\n network: \"\",\n});\nconst stableCoinErrors = reactive<Record<string, string>>({});\n\n/** Rules & labels */\nconst stableCoinRules: Record<string, string> = {\n stableCoin: \"required\",\n network: \"required\",\n};\nconst stableCoinLabels: Record<string, string> = {\n stableCoin: \"Stable Coin\",\n network: \"Network\",\n};\n\n/** Format amount text */\nconst formatAmountHandler = computed(() =>\n formatAmount(props.paymentObject.amount, props.paymentObject.currency)\n);\n\n/** Derived */\nconst amountPlusNetworkFee = computed(() => {\n if (!addressDetails.value) return 0;\n const base = Number(addressDetails.value.transactionAmount) || 0;\n return base + (addressDetails.value.networkFee || 0);\n});\n\n/** Data fetching */\nasync function generatePaymentLinkHandler() {\n if (!props.secretKey) {\n message.value = \"Secret key is required.\";\n return;\n }\n if (!checkObjectTruthy<IPaymentObject>(props.paymentObject)) {\n message.value = \"Kindly ensure you are passing all the required data.\";\n return;\n }\n\n loading.value = true;\n message.value = \"\";\n try {\n const response = await createPaymentLink(\n props.paymentObject,\n environment,\n props.secretKey\n );\n\n if (response?.isSuccessful && response.launchUrl) {\n const queryParams = getQueryParams(response.launchUrl);\n transactionReference.value = queryParams[\"paymentReference\"];\n message.value = \"Payment link created successfully\";\n } else {\n message.value = \"Failed to create payment link\";\n }\n } catch (e: any) {\n message.value = e?.message || \"Failed to create payment link\";\n } finally {\n loading.value = false;\n }\n}\n\nasync function generateAddress(payload: IGenerateStableCoinAddress) {\n if (!payload) return;\n generatingAddress.value = true;\n try {\n const response = await generateStableCoinAddress(environment, payload);\n if (response?.isSuccessful) {\n addressDetails.value = (response as any).data;\n formIndex.value = 1;\n } else {\n message.value =\n (response as any)?.responseMessage || \"Failed to generate address\";\n }\n } catch (e: any) {\n message.value = e?.message || \"Failed to generate address\";\n } finally {\n generatingAddress.value = false;\n }\n}\n\nasync function getAllStableCoins() {\n loadingStableCoins.value = true;\n try {\n const response = await getStableCoins(environment);\n if (response?.isSuccessful) {\n stableCoins.value =\n (response.data ?? []).map((c: { name: string }) => ({\n label: c.name,\n value: c.name,\n })) ?? [];\n }\n } catch (e: any) {\n message.value = e?.message || \"Failed to get stable coins\";\n } finally {\n loadingStableCoins.value = false;\n }\n}\n\nasync function getAllStableCoinNetworks(stableCoin: string) {\n loadingStableCoinNetworks.value = true;\n try {\n const response = await getStableCoinNetworks(environment, stableCoin);\n if (response?.isSuccessful) {\n const nets = (response as any).networks ?? response.data?.networks ?? [];\n networkList.value = (nets ?? []).map((n: string) => ({\n label: n,\n value: n,\n }));\n }\n } catch (e: any) {\n message.value = e?.message || \"Failed to get stable coin networks\";\n } finally {\n loadingStableCoinNetworks.value = false;\n }\n}\n\n/** Confirm payment */\nasync function confirmPaymentHandler(): Promise<void> {\n isConfirmingPayment.value = true;\n try {\n const response = await getPaymentReferenceDetails(\n environment,\n transactionReference.value\n );\n\n if (response?.isSuccessful) {\n const data = (response as any).data;\n paymentReferenceDetails.value = data;\n\n const needsConfirm =\n data?.finalTransactionStatus == null || data?.paymentStatus == null;\n\n if (needsConfirm) {\n message.value = \"Transaction not confirmed !!\";\n paymentReferenceStatus.value = \"pending\";\n props.onPaymentAuthorized?.({\n paymentId: transactionReference.value,\n paymentDate: data?.updatedAt ?? \"\",\n paymentStatus: \"pending\",\n });\n } else if (\n data?.finalTransactionStatus === \"Success\" ||\n data?.paymentStatus === \"Payment Received\"\n ) {\n message.value = \"Transaction confirmed !!\";\n paymentReferenceStatus.value = \"confirmed\";\n props.onPaymentAuthorized?.({\n paymentId: transactionReference.value,\n paymentDate: data?.updatedAt,\n paymentStatus: \"confirmed\",\n });\n }\n } else if (\n !response?.isSuccessful &&\n (response as any)?.responseCode === \"119\"\n ) {\n paymentReferenceStatus.value = \"used\";\n message.value = (response as any)?.responseMessage || \"\";\n props.onPaymentAuthorized?.({\n paymentId: transactionReference.value,\n paymentDate: null,\n paymentStatus: \"used\",\n });\n }\n } catch (err: any) {\n paymentReferenceStatus.value = \"\";\n message.value =\n err?.error?.responseMessage ||\n err?.error?.message ||\n \"Something went wrong\";\n } finally {\n isConfirmingPayment.value = false;\n }\n}\n\n/** Primary action */\nasync function payHandler() {\n const errs = validateGroup(stableCoinForm, stableCoinRules, stableCoinLabels);\n Object.assign(stableCoinErrors, errs);\n if (Object.keys(errs).length === 0) {\n const payload: IGenerateStableCoinAddress = {\n paymentReference: transactionReference.value,\n currency: stableCoinForm.stableCoin,\n chain: stableCoinForm.network,\n transactionAmount: props.paymentObject.amount,\n merchantId: props.secretKey,\n };\n generateAddressPayload.value = payload;\n await generateAddress(payload);\n }\n}\n\nonMounted(async () => {\n await generatePaymentLinkHandler();\n await getAllStableCoins();\n});\n</script>\n","<template>\n <svg\n :width=\"width\"\n :height=\"height\"\n viewBox=\"0 0 67 67\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n v-bind=\"attrs\"\n >\n <path\n d=\"M33.6705 0.0820312C15.2758 0.0820312 0.36377 14.9941 0.36377 33.3888C0.36377 51.7846 15.2758 66.6956 33.6705 66.6956C52.0663 66.6956 66.9773 51.7846 66.9773 33.3888C66.9773 14.9941 52.0663 0.0820312 33.6705 0.0820312ZM33.6705 62.5978C17.6011 62.5978 4.52712 49.4583 4.52712 33.3887C4.52712 17.3192 17.6011 4.24525 33.6705 4.24525C49.74 4.24525 62.814 17.3193 62.814 33.3887C62.814 49.4581 49.74 62.5978 33.6705 62.5978ZM46.9631 21.2016L27.4213 40.8662L18.621 32.0659C17.8081 31.253 16.4904 31.253 15.6765 32.0659C14.8636 32.8788 14.8636 34.1965 15.6765 35.0094L25.9797 45.3137C26.7926 46.1255 28.1103 46.1255 28.9243 45.3137C29.0179 45.22 29.0981 45.1179 29.171 45.0118L49.9086 24.1461C50.7205 23.3332 50.7205 22.0155 49.9086 21.2016C49.0947 20.3888 47.777 20.3888 46.9631 21.2016Z\"\n :fill=\"color\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from \"vue\";\n\ninterface IIconProps {\n width?: number | string;\n height?: number | string;\n color?: string;\n}\n\nconst props = withDefaults(defineProps<IIconProps>(), {\n width: 67,\n height: 67,\n color: \"currentColor\",\n});\n\nconst attrs = useAttrs();\nconst { width, height, color } = props;\n</script>\n","<template>\n <div class=\"flex flex-col gap-8 p-16\">\n <div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col gap-8\">\n <IconCheckCircle color=\"#F47A1F\" class=\"mx-auto\" />\n\n <div class=\"flex flex-col text-center\" style=\"gap: 2px\">\n <p class=\"text-heading-text font-medium text-header-2xl\">₦2,500.00</p>\n <p class=\"text-sub-copy font-regular text-body-3xs\">\n Has been paid successfully\n </p>\n </div>\n </div>\n\n <div class=\"flex flex-col\">\n <div class=\"py-4 border-b border-grey-100\">\n <BaseLabelInfo\n type=\"horizontal\"\n label=\"Order ID\"\n value=\"9900009000-8890-8829hd7\"\n />\n </div>\n\n <div class=\"py-4\">\n <BaseLabelInfo\n type=\"horizontal\"\n label=\"Payment date\"\n value=\"July 24, 2025\"\n />\n </div>\n </div>\n </div>\n\n <div class=\"mx-auto\" style=\"width: 80%\">\n <BaseButton\n label=\"Return to Merchant Website\"\n type=\"secondary\"\n customClass=\"w-full\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport BaseButton from \"./button.vue\";\nimport BaseLabelInfo from \"./label-info.vue\";\nimport IconCheckCircle from \"../icons/icon-check-circle.vue\";\n\ninterface IBaseSuccessProps {}\n\ndefineProps<IBaseSuccessProps>();\n</script>\n","<!-- BzpCheckoutCard.vue -->\n<template>\n <BaseCard>\n <div class=\"grid grid-cols-3\">\n <div\n v-if=\"checkoutState === 'PENDING'\"\n class=\"bg-[#EFF7FF] px-6 py-8 flex flex-col gap-5 col-span-1 rounded-l-xl\"\n >\n <p class=\"text-heading-text text-body-xs font-semibold\">Pay with</p>\n <BaseRadioGroup\n :options=\"filteredPaymentTypeOptions\"\n @selectedChange=\"(e: string) => paymentTypeHandler(e)\"\n />\n </div>\n\n <div :class=\"checkoutState === 'SUCCESS' ? 'col-span-3' : 'col-span-2'\">\n <div\n v-if=\"checkoutState === 'PENDING'\"\n class=\"flex items-center justify-between px-12 py-8\"\n >\n <BaseImage\n v-if=\"options?.imageUrl\"\n :src=\"options?.imageUrl ?? ''\"\n alt=\"Merchant Logo\"\n :width=\"52\"\n :height=\"52\"\n customClass=\"rounded-lg\"\n />\n <div\n v-else\n class=\"bg-heading-text rounded flex flex-col justify-center\"\n :style=\"{ width: '52px', height: '52px' }\"\n >\n <p class=\"text-white text-center text-body-2xs font-medium\">Logo</p>\n </div>\n\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-body-2xs font-regular text-sub-copy text-right\">\n {{ paymentObject.merchantName }}\n </p>\n <p class=\"text-body-2xs font-regular text-sub-copy text-right\">\n Pay:\n <span class=\"text-orange-500 font-extrabold\">\n {{ formatAmount(paymentObject.amount, paymentObject.currency) }}\n </span>\n </p>\n </div>\n </div>\n\n <div\n v-if=\"checkoutState === 'PENDING'\"\n class=\"overflow-y-scroll px-10 pb-10 pt-2\"\n >\n <PayByCard\n v-if=\"paymentType === 'CARD'\"\n :secretKey=\"secretKey\"\n :environment=\"environment\"\n :paymentObject=\"paymentObject\"\n :onPaymentAuthorized=\"setSuccess\"\n />\n <PayByTransfer\n v-else-if=\"paymentType === 'BANK_TRANSFER'\"\n :secretKey=\"secretKey\"\n :environment=\"environment\"\n :paymentObject=\"paymentObject\"\n :onPaymentAuthorized=\"setSuccess\"\n />\n <PayByStableCoin\n v-else\n :secretKey=\"secretKey\"\n :environment=\"environment\"\n :paymentObject=\"paymentObject\"\n :onPaymentAuthorized=\"setSuccess\"\n />\n </div>\n\n <BaseSuccess\n v-if=\"checkoutState === 'SUCCESS'\"\n :amount=\"paymentObject.amount\"\n :currency=\"paymentObject.currency\"\n :redirectUrl=\"paymentObject.redirectUrl\"\n :successObject=\"successObject\"\n />\n </div>\n </div>\n </BaseCard>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch } from \"vue\";\nimport { IPaymentObject, ISuccessObject } from \"../types/checkout.type\";\nimport { ISelectOption } from \"../types/resource.type\";\nimport { formatAmount } from \"../utils\";\nimport BaseCard from \"../components/base/card.vue\";\nimport BaseRadioGroup from \"../components/base/radio-group.vue\";\nimport BaseImage from \"../components/base/image.vue\";\nimport PayByCard from \"../components/pay-by-card.vue\";\nimport PayByTransfer from \"../components/pay-by-transfer.vue\";\nimport PayByStableCoin from \"../components/pay-by-stable-coin.vue\";\nimport BaseSuccess from \"../components/base/success.vue\";\n\nexport interface CheckoutIframeStyle {\n [cssProp: string]: string | number;\n}\n\nexport interface CheckoutCardOptions {\n imageUrl?: string;\n numberPlaceholder?: string;\n expiryPlaceholder?: string;\n cvcPlaceholder?: string;\n styles?: {\n base?: CheckoutIframeStyle;\n invalid?: CheckoutIframeStyle;\n focus?: CheckoutIframeStyle;\n };\n}\n\nconst props = defineProps<{\n secretKey: string;\n environment?: \"sandbox\" | \"prod\";\n paymentObject?: IPaymentObject;\n options?: CheckoutCardOptions;\n}>();\n\nconst environment = props.environment ?? \"sandbox\";\nconst paymentObject = props.paymentObject ?? {\n merchantName: \"\",\n amount: 0,\n currency: \"\",\n email: \"\",\n phoneNumber: \"\",\n narration: \"\",\n redirectUrl: \"\",\n};\n\nconst checkoutState = ref<\"SUCCESS\" | \"PENDING\" | \"USED\">(\"PENDING\");\n\nconst paymentTypeOptions = ref<ISelectOption[]>([\n { label: \"Card\", value: \"CARD\" },\n { label: \"Bank Transfer\", value: \"BANK_TRANSFER\" },\n { label: \"Stable Coin\", value: \"STABLE_COIN\" },\n]);\n\nconst filteredPaymentTypeOptions = ref<ISelectOption[]>([]);\nconst paymentType = ref<string>(\"\");\n\nconst successObject = ref<ISuccessObject>({\n paymentDate: \"\",\n paymentId: \"\",\n paymentStatus: \"\",\n});\n\nfunction paymentTypeHandler(event: string): void {\n paymentType.value = event;\n}\n\nfunction setSuccess(event: ISuccessObject): void {\n successObject.value = { ...event };\n if (event.paymentStatus === \"Authorized\") {\n checkoutState.value = \"SUCCESS\";\n } else if (event.paymentStatus === \"Payment failed\") {\n checkoutState.value = \"PENDING\";\n } else if (event.paymentStatus === \"used\") {\n checkoutState.value = \"USED\";\n } else {\n checkoutState.value = \"PENDING\";\n }\n}\n\n// Update available payment types whenever currency changes\nwatch(\n () => paymentObject.currency,\n (curr) => {\n let options: ISelectOption[] = [];\n if (curr === \"USD\") {\n options = paymentTypeOptions.value.filter(\n (o) => o.value !== \"BANK_TRANSFER\"\n );\n } else {\n options = paymentTypeOptions.value.filter(\n (o) => o.value !== \"STABLE_COIN\"\n );\n }\n filteredPaymentTypeOptions.value = options;\n },\n { immediate: true }\n);\n\n// Default to the first available payment type\nwatch(\n () => filteredPaymentTypeOptions.value,\n (opts) => {\n if (opts.length) {\n paymentType.value = opts[0].value;\n }\n },\n { immediate: true }\n);\n\n// Expose for template\nconst secretKey = props.secretKey;\nconst options = props.options;\n</script>\n"],"names":["ConfigKey","createMidenPG","config","app","useMidenPG","cfg","inject","checkObjectTruthy","obj","getQueryParams","url","params","value","key","getBaseUrl","mode","currencySign","currency","formatAmount","num","truncateString","str","restrictToNumericKeys","event","allowedKeys","validateRegex","regex","parseRules","rules","chunk","rule","val","getValidationErrorMessage","rulesStr","inputValue","label","errors","lowerLabel","v","hasNum","r","validateGroup","values","rulesMap","prettyLabels","out","field","err","CardSchemes","VISA_RE","MC_RE","AMEX_RE","DISCOVER_RE","JCB_RE","DINERS_RE","MAESTRO_RE","UNIONPAY_RE","UATP_RE","VERVE_BIN6_RANGES","VERVE_BIN6_SINGLES","PAYPAK_BIN6","JAYWAN_BIN7","MADA_ONLY_BIN6","MADA_VISA_BIN6","MADA_MC_BIN6","UNIONPAY_3DS_BIN6","UNIONPAY_NON3DS_BIN6","cardTypeHandler","cardNumber","scheme","detect","digits","bin6","isVerve","bin7","length","start","end","props","__props","attrs","useAttrs","size","color","className","_openBlock","_createElementBlock","_mergeProps","_unref","_createElementVNode","emit","__emit","isDisabled","computed","handleClick","getButtonBgClass","type","disabled","getButtonSizeClass","getLabelSizeClass","_normalizeClass","paddingClassX","customClass","_renderSlot","_ctx","loading","_createBlock","IconLoader","_hoisted_2","_hoisted_1","_toDisplayString","errorMessage","createPaymentLink","paymentObject","environment","secretKey","baseUrl","authorizeCardPayment","merchantId","rest","generatePaymentAccount","getPaymentReferenceDetails","paymentReference","generateStableCoinAddress","resolvedStyle","containerRef","ref","iframeRef","message","destroyIframe","launchIframe","iframe","s","_a","generatePaymentLinkHandler","response","e","onMounted","watch","newUrl","onBeforeUnmount","_createVNode","launchUrl","CheckoutIframe","BaseButton","BaseInputError","width","height","$emit","IconChevronLeft","_cache","showBackButton","BaseBack","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","IconBuzapayIcon","isControlled","internal","initial","selected","setSelected","containerLayout","options","_Fragment","_renderList","opt","$event","src","alt","isFullWidth","_normalizeStyle","__viteBrowserExternal","root","factory","module","this","CryptoJS","Math","undefined","crypto","global","require","require$$0","cryptoSecureRandomInt","create","F","subtype","C","C_lib","Base","overrides","instance","properties","propertyName","WordArray","words","sigBytes","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","i","thatByte","j","clone","nBytes","C_enc","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","utf8Str","BufferedBlockAlgorithm","data","doFlush","processedWords","dataWords","dataSigBytes","blockSize","blockSizeBytes","nBlocksReady","nWordsReady","nBytesReady","offset","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","a","b","c","d","FF","GG","HH","II","nBitsTotal","nBitsLeft","nBitsTotalH","nBitsTotalL","H_i","x","t","n","W","SHA1","K","isPrime","sqrtN","factor","getFractionalBits","nPrime","SHA256","f","g","h","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","el","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","y","newX","newY","LFSR","roundConstantMsw","roundConstantLsw","bitPosition","SHA3","state","nBlockSizeLanes","M2i","M2i1","lane","round","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","ar","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","padding","modeCreator","CipherParams","cipherParams","formatter","C_format","OpenSSLFormatter","openSSLStr","ciphertextWords","encryptor","cipherCfg","plaintext","format","C_kdf","OpenSSLKdf","ivSize","derivedParams","CFB","generateKeystreamAndEncrypt","keystream","CTR","Encryptor","counter","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","left","right","Xl","Xr","temp","BlowFish_Decrypt","BlowFishInit","keysize","Row","Col","keyIndex","index","Data1","Data2","res","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","encryptPayload","formData","merchId","first16Key","last16Iv","postDataObj","decryptPayload","payload","decryptedText","getCountries","getCountryStates","countryIso3","getStableCoins","getStableCoinNetworks","stableCoin","isString","isObject","_obj$constructor","pick","keys","_","k","acc","_ref","DIRECTION","forceDirection","direction","escapeRegExp","objectIncludes","arrA","arrB","dateA","dateB","regexpA","regexpB","ActionDetails","opts","IMask","maskedClass","normalizeOpts","instanceOpts","_mask","createMask","nOpts","MaskedClass","MaskElement","KEY_Z","KEY_Y","HTMLMaskElement","_this$input$getRootNo","_this$input$getRootNo2","_this$input","handlers","HTMLInputMaskElement","HTMLContenteditableMaskElement","selection","anchorOffset","focusOffset","range","InputHistory","steps","InputMask","_this$masked","masked","ev","listeners","l","pos","cursorPos","newUnmaskedValue","newValue","newRawInputValue","newDisplayValue","isChanged","restOpts","updateMask","updateOpts","handler","hIndex","details","oldRawValue","removeDirection","ChangeDetails","prep","ContinuousTailDetails","from","stop","tail","beforePos","shiftChar","Masked","flags","fromPos","toPos","checkTail","consistentState","noFixState","fixDetails","chDetails","consistentTail","appended","beforeTailState","tailDetails","ci","fn","rawInput","ret","deleteCount","inserted","tailPos","eagerRemove","startChangePos","valLength","tval","ChunksTailDetails","chunks","tailChunk","lastChunk","extendLast","firstTailChunk","lastBlockIter","chunkBlock","remainChars","cstate","chunkShiftPos","PatternCursor","_this$block","PatternFixedDefinition","minPos","maxPos","appendEager","isResolved","PatternInputDefinition","parent","isOptional","placeholderChar","displayChar","lazy","eager","maskOpts","boundPos","_flags$_beforeTailSta","MaskedRegExp","MaskedPattern","defs","pattern","unmaskingBlock","optionalBlock","p","bNames","bName","expose","repeat","bOpts","blockOpts","maskedBlock","char","isInput","def","_blocks","maskedState","bi","unmaskedValue","_this$_mapPosToBlock","startBlockIndex","blockIter","blockDetails","chunkTail","bFromPos","bToPos","blockChunk","stopBefore","si","toBlockIndex","startBlockIter","endBlockIndex","_blocks2","accVal","blockStartPos","fromBlockIter","toBlockIter","isSameBlock","fromBlockStartPos","fromBlockEndPos","removeDetails","cursor","total","name","indices","gi","MaskedRange","to","maxLength","autofix","patternOpts","fromStr","toStr","sameCharsCount","minstr","maxstr","placeholder","padLength","DefaultPattern","MaskedDate","blocks","patternBlocks","date","day","month","year","MaskedDynamic","m","prevValueBeforeTail","insertValue","tailValue","prevMask","prevMaskState","_flags$_beforeTailSta2","currentDetails","_this$currentMask","typedValue","_this$currentMask2","_this$currentMask3","_this$currentMask4","compiledMasks","currentMaskRef","currentMask","mi","overwrite","skipInvalid","oldMask","_this$currentMask5","inputs","isCurrent","startInputPos","MaskedEnum","enum_","eopts","lengths","requiredLength","optionalLength","matchFrom","matches","mch","estr","istr","MaskedFunction","_MaskedNumber","MaskedNumber","mid","parts","prepCh","extendOnSeparators","count","slice","prevBeforeTailValue","prevBeforeTailSeparatorsCount","oldValue","accepted","skip","fixedNum","appendDetails","beforeTailValue","beforeTailSeparatorsCount","searchFrom","separatorPos","separatorAroundFromPos","separatorAroundToPos","valueBeforePos","valueAfterPos","separatorAtLeftPos","separatorAtLeftEndPos","separatorAtRightPos","number","validnum","formatted","match","sign","zeros","dropFractional","PIPE_TYPE","createPipe","arg","pipe","RepeatBlock","_ref2","_ref3","_ref4","_this$_blocks","_this$_mapPosToBlock$","allocated","_this$_blocks$bi","_this$_mapPosToBlock2","_this$_mapPosToBlock3","firstBlockIndex","lastBlockIndex","removeCount","rawValue","localHint","localError","inputEl","imaskInstance","formattedValue","handleInput","incoming","nextTick","target","len","handleBlur","handleKeyDown","containerBg","containerBorder","copyToClipboard","text","copyHandler","maskOptions","next","required","isAmountInput","showCopyIcon","BaseImage","hint","validationError","open","internalValue","filtered","activeIndex","triggerRef","menuRef","searchRef","o","displayText","openMenu","idx","closeMenu","toggleMenu","onDocMouseDown","tri","menu","commit","onSearchInput","q","list","onTriggerKeyDown","onMenuKeyDown","moveActive","scrollActiveIntoView","delta","max","items","hasSearch","itemImageType","toRefs","_createTextVNode","IconChevronUp","IconChevronDown","_hoisted_8","_hoisted_11","BaseHint","formIndex","isMakingPayment","cardType","transactionReference","loadingCountries","loadingStates","rawCountries","countries","countryStates","billingForm","reactive","payForm","billingErrors","payErrors","billingRules","payRules","billingLabels","payLabels","formatAmountHandler","proceedHandler","errs","cardDetails","billingDetails","encryptedCardDetails","request","_b","_c","_d","_e","threeDsData","_f","_g","_h","_i","_j","stringifiedThreeDsData","threeDsUrl","_k","_l","_m","_n","_o","_p","_r","_q","_t","_s","friendly","_u","decryptedError","_v","_w","_x","_y","queryParams","getAllCountries","getStates","countryIso2","country","cardNumberInputHandler","BaseInput","BaseSelect","_hoisted_7","IconCopySuccess","upperLabel","showPrefixImg","showSuffixImg","truncatedValue","labelCustomClass","valueImageSrc","valueImageCustomClass","hasValueCopy","valueCustomClass","alignRight","BaseCopy","isConfirmCall","isPaymentConfirmed","paymentReferenceStatus","isFetchingPaymentDetails","paymentReferenceDetails","paymentAccountDetails","paymentMade","remainingSeconds","countDownTime","intervalRef","transferForm","transferErrors","transferRules","transferLabels","payHandler","startTimer","getReferenceDetails","made","updateDisplay","secs","minutes","seconds","BaseLabelInfo","_hoisted_9","onCancel","cur","textClass","amount","IconUsdt","iconWidth","iconHeight","iconColorClass","IconUsdc","generatingAddress","loadingStableCoins","loadingStableCoinNetworks","stableCoins","networkList","addressDetails","generateAddressPayload","isConfirmingPayment","stableCoinForm","stableCoinErrors","stableCoinRules","stableCoinLabels","amountPlusNetworkFee","generateAddress","getAllStableCoins","getAllStableCoinNetworks","nets","confirmPaymentHandler","_hoisted_10","BaseCurrencyAmount","IconArrowSwap","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","IconCheckCircle","checkoutState","paymentTypeOptions","filteredPaymentTypeOptions","paymentType","successObject","paymentTypeHandler","setSuccess","curr","BaseCard","BaseRadioGroup","PayByCard","PayByTransfer","PayByStableCoin","BaseSuccess"],"mappings":"uGAIMA,GAAyC,OAAO,eAAe,EAE9D,SAASC,GAAcC,EAAuB,CACnD,GAAI,EAACA,GAAA,MAAAA,EAAQ,gBACX,MAAM,IAAI,MAAM,6CAA6C,EAE/D,MAAO,CACL,QAAQC,EAAU,CAChBA,EAAI,QAAQH,GAAWE,CAAM,CAC/B,CAAA,CAEJ,CAEO,SAASE,IAA4B,CAC1C,MAAMC,EAAMC,EAAAA,OAAON,EAAS,EAC5B,GAAI,CAACK,EACH,MAAM,IAAI,MACR,mFAAA,EAGJ,OAAOA,CACT,CCzBO,MAAME,GAAuCC,GAC9CA,GAAO,MAAQ,OAAOA,GAAQ,SAAiB,GAC5C,OAAO,OAAOA,CAA8B,EAAE,MAAM,OAAO,EAGvDC,GAAkBC,GAAwC,CACrE,MAAMC,EAAiC,CAAA,EAGvC,OAFqB,IAAI,IAAID,CAAG,EAAE,aAErB,QAAQ,CAACE,EAAOC,IAAQ,CACnCF,EAAOE,CAAG,EAAID,CAChB,CAAC,EAEMD,CACT,ECdaG,GAAcC,GAClBA,IAAS,UACZ,wDACA,GCHOC,GAAgBC,GACvBA,IAAa,MAAc,IAC3BA,IAAa,MAAc,IAC3BA,IAAa,MAAc,IAC3BA,IAAa,MAAc,IAC3BA,IAAa,OACbA,IAAa,MAAc,IAC3BA,IAAa,QAAUA,IAAa,OAAe,KACnDA,IAAa,QAAUA,IAAa,OAAe,IAChD,IAGIC,GAAe,CAC1BN,EACAK,IACW,CACX,MAAME,EAAM,OAAOP,GAAU,SAAW,WAAWA,CAAK,EAAIA,EAC5D,OAAI,MAAMO,CAAG,EAAU,IAChB,GAAGF,EAAWD,GAAaC,CAAQ,EAAI,EAAE,IAAIE,GAAA,YAAAA,EAAK,eACvD,QACD,EACH,EAEaC,GAAiB,CAACC,EAAaF,IACtCE,EAAI,QAAUF,EACTE,EAEFA,EAAI,MAAM,EAAGF,CAAG,EAAI,MC3BhBG,GAAyBC,GAA+B,CACnE,MAAMC,EAAc,CAClB,YACA,MACA,YACA,aACA,SACA,OACA,MACA,GAAA,GAICD,EAAM,SAAWA,EAAM,UACxB,CAAC,IAAK,IAAK,IAAK,GAAG,EAAE,SAASA,EAAM,IAAI,YAAA,CAAa,IAMnD,CAACC,EAAY,SAASD,EAAM,GAAG,GAAK,CAAC,OAAO,KAAKA,EAAM,GAAG,GAC5DA,EAAM,eAAA,EAKNA,EAAM,MAAQ,KACbA,EAAM,OAA4B,MAAM,SAAS,GAAG,GAErDA,EAAM,eAAA,EAEV,EC1BME,GAAgB,CAACb,EAAec,IAAkBA,EAAM,KAAKd,CAAK,EAExE,SAASe,GAAWC,EAAgC,CAClD,OAAKA,EACEA,EAAM,MAAM,GAAG,EAAE,IAAKC,GAAU,CACrC,KAAM,CAACC,EAAMC,CAAG,EAAIF,EAAM,MAAM,GAAG,EACnC,MAAO,CAAE,KAAAC,EAAsB,MAAOC,CAAA,CACxC,CAAC,EAJkB,CAAA,CAKrB,CAEO,SAASC,GACdC,EACAC,EACAC,EACe,CACf,MAAMC,EAAmB,CAAA,EACnBR,EAAQD,GAAWM,CAAQ,EAC3BI,GAAcF,GAAS,cAAc,YAAA,EACrCG,EAAIJ,GAAc,GAElBf,EAAM,OAAOmB,CAAC,EACdC,EAAS,CAAC,OAAO,MAAMpB,CAAG,EAEhC,UAAWqB,KAAKZ,EACd,OAAQY,EAAE,KAAA,CACR,IAAK,WACEF,GAAGF,EAAO,KAAK,OAAOC,CAAU,oBAAoB,EACzD,MAEF,IAAK,QACEZ,GAAca,EAAG,aAAa,GACjCF,EAAO,KACL,OAAOC,CAAU,gDAAA,EAErB,MAEF,IAAK,yBACEZ,GAAca,EAAG,WAAW,GAC/BF,EAAO,KACL,OAAOC,CAAU,sDAAA,EAErB,MAEF,IAAK,yBACEZ,GAAca,EAAG,WAAW,GAC/BF,EAAO,KACL,OAAOC,CAAU,sDAAA,EAErB,MAEF,IAAK,sBACEZ,GAAca,EAAG,QAAQ,GAC5BF,EAAO,KACL,OAAOC,CAAU,yCAAA,EAErB,MAEF,IAAK,YACEZ,GAAca,EAAG,cAAc,GAClCF,EAAO,KACL,OAAOC,CAAU,4DAAA,EAErB,MAEF,IAAK,aACEZ,GAAca,EAAG,aAAa,GACjCF,EAAO,KACL,OAAOC,CAAU,4CAAA,EAErB,MAEF,IAAK,eACEZ,GAAca,EAAG,eAAe,GACnCF,EAAO,KACL,OAAOC,CAAU,2DAAA,EAErB,MAEF,IAAK,UACEZ,GAAca,EAAG,OAAO,GAC3BF,EAAO,KAAK,OAAOC,CAAU,kCAAkC,EACjE,MAEF,IAAK,aACCZ,GAAca,EAAG,gBAAgB,GACnCF,EAAO,KACL,OAAOC,CAAU,4CAAA,EAErB,MAEF,IAAK,uBACEZ,GAAca,EAAG,gBAAgB,GACpCF,EAAO,KACL,OAAOC,CAAU,oDAAA,EAErB,MAEF,IAAK,QACEZ,GAAca,EAAG,8CAA8C,GAClEF,EAAO,KAAK,oCAAoC,EAElD,MAEF,IAAK,KACCI,EAAE,QAAUF,GAAGF,EAAO,KAAK,yBAAyBI,EAAE,KAAK,EAAE,EACjE,MAEF,IAAK,SACCA,EAAE,QAAUF,GAAGF,EAAO,KAAK,6BAA6BI,EAAE,KAAK,EAAE,EACrE,MAEF,IAAK,cACCF,EAAE,SAAW,OAAOE,EAAE,KAAK,GAC7BJ,EAAO,KACL,OAAOC,CAAU,kBAAkBG,EAAE,KAAK,kBAAA,EAE9C,MAEF,IAAK,kBACCF,EAAE,OAAS,OAAOE,EAAE,KAAK,GAC3BJ,EAAO,KACL,OAAOC,CAAU,gCAAgCG,EAAE,KAAK,kBAAA,EAE5D,MAEF,IAAK,kBACCF,EAAE,OAAS,OAAOE,EAAE,KAAK,GAC3BJ,EAAO,KACL,OAAOC,CAAU,mCAAmCG,EAAE,KAAK,kBAAA,EAE/D,MAGF,IAAK,OACC,CAACD,GAAUpB,IAAQ,OAAOqB,EAAE,KAAK,IACnCJ,EAAO,KAAK,uBAAuBI,EAAE,KAAK,EAAE,EAC9C,MAEF,IAAK,WACC,CAACD,GAAUpB,EAAM,OAAOqB,EAAE,KAAK,IACjCJ,EAAO,KAAK,qCAAqCI,EAAE,KAAK,EAAE,EAC5D,MAEF,IAAK,WACC,CAACD,GAAUpB,EAAM,OAAOqB,EAAE,KAAK,IACjCJ,EAAO,KAAK,wCAAwCI,EAAE,KAAK,EAAE,EAC/D,MAGF,IAAK,UACC,CAACD,GAAUpB,IAAQ,OAAOqB,EAAE,KAAK,IACnCJ,EAAO,KAAK,0BAA0BI,EAAE,KAAK,EAAE,EACjD,MAEF,IAAK,aACCD,GAAUpB,IAAQ,OAAOqB,EAAE,KAAK,GAClCJ,EAAO,KAAK,8BAA8BI,EAAE,KAAK,EAAE,EACrD,MAEF,IAAK,cACC,CAACD,GAAUpB,EAAM,OAAOqB,EAAE,KAAK,IACjCJ,EAAO,KAAK,wCAAwCI,EAAE,KAAK,EAAE,EAC/D,MAEF,IAAK,cACC,CAACD,GAAUpB,EAAM,OAAOqB,EAAE,KAAK,IACjCJ,EAAO,KAAK,2CAA2CI,EAAE,KAAK,EAAE,EAClE,KAIA,CAIN,OAAOJ,EAAO,OAAS,EAAIA,EAAO,CAAC,EAAI,IACzC,CAEO,MAAMK,GAAgB,CAC3BC,EACAC,EACAC,IACG,CACH,MAAMC,EAA8B,CAAA,EACpC,SAAW,CAACC,EAAOlB,CAAK,IAAK,OAAO,QAAQe,CAAQ,EAAG,CACrD,GAAI,CAACf,EAAO,SACZ,MAAMO,GAAQS,GAAA,YAAAA,EAAeE,KAAUA,EACjCC,EAAMf,GAA0BJ,EAAOc,EAAOI,CAAK,GAAK,GAAIX,CAAK,EACnEY,IAAKF,EAAIC,CAAK,EAAIC,EACxB,CACA,OAAOF,CACT,ECpMO,IAAKG,IAAAA,IACVA,EAAAA,EAAA,KAAO,CAAA,EAAP,OACAA,EAAAA,EAAA,WAAa,CAAA,EAAb,aACAA,EAAAA,EAAA,MAAQ,CAAA,EAAR,QACAA,EAAAA,EAAA,kBAAoB,CAAA,EAApB,oBACAA,EAAAA,EAAA,gBAAkB,CAAA,EAAlB,kBACAA,EAAAA,EAAA,SAAW,CAAA,EAAX,WACAA,EAAAA,EAAA,IAAM,CAAA,EAAN,MACAA,EAAAA,EAAA,WAAa,CAAA,EAAb,aACAA,EAAAA,EAAA,QAAU,CAAA,EAAV,UACAA,EAAAA,EAAA,SAAW,EAAA,EAAX,WACAA,EAAAA,EAAA,YAAc,EAAA,EAAd,cACAA,EAAAA,EAAA,eAAiB,EAAA,EAAjB,iBACAA,EAAAA,EAAA,KAAO,EAAA,EAAP,OACAA,EAAAA,EAAA,OAAS,EAAA,EAAT,SACAA,EAAAA,EAAA,OAAS,EAAA,EAAT,SACAA,EAAAA,EAAA,KAAO,EAAA,EAAP,OACAA,EAAAA,EAAA,SAAW,EAAA,EAAX,WACAA,EAAAA,EAAA,eAAiB,EAAA,EAAjB,iBACAA,EAAAA,EAAA,QAAU,EAAA,EAAV,UAnBUA,IAAAA,IAAA,CAAA,CAAA,EAuBZ,MAAMC,GAAU,wBACVC,GACJ,0FACIC,GAAU,kBACVC,GACJ,wFACIC,GAAS,sCACTC,GAAY,8CACZC,GAAa,kCACbC,GAAc,gBACdC,GAAU,YAGVC,GAA6C,CACjD,CAAC,OAAQ,MAAM,EACf,CAAC,OAAQ,MAAM,CACjB,EACMC,GAAqB,IAAI,IAAY,CAAC,OAAQ,MAAM,CAAC,EACrDC,GAAc,IAAI,IAAY,CAAC,OAAQ,MAAM,CAAC,EAC9CC,GAAc,IAAI,IAAY,CAAC,OAAO,CAAC,EACvCC,GAAiB,IAAI,IAAY,CAAC,OAAQ,MAAM,CAAC,EACjDC,GAAiB,IAAI,IAAY,CAAC,OAAQ,MAAM,CAAC,EACjDC,GAAe,IAAI,IAAY,CAAC,OAAQ,MAAM,CAAC,EAC/CC,GAAoB,IAAI,IAAY,CAAC,MAAM,CAAC,EAC5CC,GAAuB,IAAI,IAAY,CAAC,MAAM,CAAC,EAE9C,SAASC,GAAgBC,EAA4B,CAC1D,MAAMC,EAASC,GAAOF,CAAU,EAChC,OAAOpB,GAAYqB,CAAM,CAC3B,CAEO,SAASC,GAAOF,EAAiC,CACtD,GAAI,CAACA,GAAc,CAACA,EAAW,KAAA,EAAQ,MAAO,IAG9C,MAAMG,EAASH,EAAW,QAAQ,MAAO,EAAE,EAC3C,GAAIG,EAAO,OAAS,IAAMA,EAAO,OAAS,GAAI,MAAO,IAGrD,GAAIA,EAAO,QAAU,EAAG,CACtB,MAAMC,EAAO,SAASD,EAAO,MAAM,EAAG,CAAC,EAAG,EAAE,EAG5C,GAAIT,GAAe,IAAIU,CAAI,GAAKD,EAAO,QAAU,IAAMA,EAAO,QAAU,GACtE,MAAO,IAGT,GAAIR,GAAe,IAAIS,CAAI,GAAKvB,GAAQ,KAAKsB,CAAM,EACjD,MAAO,IAGT,GAAIP,GAAa,IAAIQ,CAAI,GAAKtB,GAAM,KAAKqB,CAAM,EAC7C,MAAO,IAGT,GAAIX,GAAY,IAAIY,CAAI,GAAKD,EAAO,SAAW,GAC7C,MAAO,IAGT,GAAIN,GAAkB,IAAIO,CAAI,GAAKhB,GAAY,KAAKe,CAAM,EACxD,MAAO,IACT,GAAIL,GAAqB,IAAIM,CAAI,GAAKhB,GAAY,KAAKe,CAAM,EAC3D,MAAO,IAGT,GAAIE,GAAQD,EAAMD,EAAO,MAAM,EAAG,MAAO,EAC3C,CAEA,GAAIA,EAAO,QAAU,EAAG,CACtB,MAAMG,EAAO,SAASH,EAAO,MAAM,EAAG,CAAC,EAAG,EAAE,EAG5C,GAAIV,GAAY,IAAIa,CAAI,GAAKH,EAAO,SAAW,GAC7C,MAAO,GACX,CAGA,OAAId,GAAQ,KAAKc,CAAM,EAAU,GAC7BpB,GAAQ,KAAKoB,CAAM,EAAU,EAC7BnB,GAAY,KAAKmB,CAAM,EAAU,EACjClB,GAAO,KAAKkB,CAAM,EAAU,EAC5BjB,GAAU,KAAKiB,CAAM,EAAU,EAC/BrB,GAAM,KAAKqB,CAAM,EAAU,EAC3BtB,GAAQ,KAAKsB,CAAM,EAAU,EAC7Bf,GAAY,KAAKe,CAAM,EAAU,GACjChB,GAAW,KAAKgB,CAAM,EAAU,EAE7B,EACT,CAEA,SAASE,GAAQD,EAAcG,EAAyB,CACtD,OAAIA,EAAS,IAAMA,EAAS,GAAW,GACvBjB,GAAkB,KAChC,CAAC,CAACkB,EAAOC,CAAG,IAAML,GAAQI,GAASJ,GAAQK,CAAA,GAE3BlB,GAAmB,IAAIa,CAAI,CAC/C,2LClFA,MAAMM,EAAQC,EAMRC,EAAQC,EAAAA,SAAA,EACR,CAAE,KAAAC,EAAM,MAAAC,EAAO,UAAAC,CAAA,EAAcN,gBA3CjCO,YAAA,EAAAC,qBAwBM,MAxBNC,EAAAA,WAwBM,CAvBH,sBAAwBC,EAAAA,MAAAJ,CAAA,CAAS,EAClC,MAAM,6BACN,KAAK,OACL,QAAQ,YACP,MAAOI,EAAAA,MAAAN,CAAA,EACP,OAAQM,EAAAA,MAAAN,CAAA,EACT,KAAK,MACL,aAAW,SAAA,EACHM,EAAAA,MAAAR,CAAA,CAAK,EAAA,CAEbS,EAAAA,mBAOE,SAAA,CANA,MAAM,aACN,GAAG,KACH,GAAG,KACH,EAAE,KACD,OAAQD,EAAAA,MAAAL,CAAA,EACT,eAAa,GAAA,aAEfM,EAAAA,mBAIE,OAAA,CAHA,MAAM,aACL,KAAMD,EAAAA,MAAAL,CAAA,EACP,EAAE,6CAAA,iUCkBR,MAAML,EAAQC,EAURW,EAAOC,EAIPC,EAAaC,EAAAA,SAAS,IAAMf,EAAM,UAAYA,EAAM,OAAO,EAEjE,SAASgB,GAAc,CAChBF,EAAW,OAAOF,EAAK,OAAO,CACrC,CAGA,SAASK,EAAiBC,EAAcC,EAAoB,CAC1D,GAAIA,EACF,MAAO,+DACT,OAAQD,EAAA,CACN,IAAK,UACH,MAAO,yFACT,IAAK,YACH,MAAO,kEACT,IAAK,SACH,MAAO,wDACT,IAAK,UACL,QACE,MAAO,mDAAA,CAEb,CAEA,SAASE,EAAmBhB,EAAe,CACzC,OAAQA,EAAA,CACN,IAAK,KACH,MAAO,oBACT,IAAK,KACH,MAAO,oBACT,IAAK,KACH,MAAO,oBACT,QACE,MAAO,mBAAA,CAEb,CAEA,SAASiB,EAAkBjB,EAAe,CACxC,OAAQA,EAAA,CACN,IAAK,KACL,IAAK,KACL,IAAK,KACH,MAAO,4BACT,QACE,MAAO,0BAAA,CAEb,6BAnGEI,EAAAA,mBAuBS,SAAA,CAtBN,MAAKc,EAAAA,eAAA,6HAA6IL,EAAiBC,EAAAA,KAAMJ,EAAA,KAAU,EAASM,EAAmBhB,EAAAA,IAAI,EAASmB,EAAAA,cAAqBC,EAAAA,WAAAA,GAOlP,KAAK,SACJ,SAAUV,EAAA,MACV,QAAOE,CAAA,GAERS,aAAsBC,EAAA,OAAA,QAAA,EAEJC,EAAAA,uBAAlBC,EAAAA,YAA6BC,GAAA,CAAA,IAAA,CAAA,CAAA,kBAC7BrB,EAAAA,mBAKM,MAAAsB,GAAA,CAJKzE,EAAAA,qBAATmD,EAAAA,mBAEI,IAAA,OAFa,MAAKc,EAAAA,eAAA,CAAA,OAAWD,EAAkBjB,EAAAA,IAAI,CAAA,CAAA,CAAA,oBAClD/C,EAAAA,KAAK,EAAA,CAAA,GAEVoE,aAAeC,EAAA,OAAA,UAAA,CAAA,IAAA,EAAA,CAAA,IAGjBD,aAAsBC,EAAA,OAAA,QAAA,CAAA,8KCtBxBlB,EAAAA,mBAEI,IAFJuB,GAEIC,EAAAA,gBADCC,EAAAA,YAAY,EAAA,CAAA,MCMnB,eAAsBC,GACpBC,EACAC,EACAC,EACc,CACd,GAAI,CACF,MAAMC,EAAUtG,GAAWoG,CAAW,EAgBtC,OAAO,MAfK,MAAM,MAChB,GAAGE,CAAO,0CACV,CACE,OAAQ,OACR,QAAS,CACP,eAAgB,mBAChB,OAAQ,mBACR,WAAYD,CAAA,EAEd,KAAM,KAAK,UAAU,CACnB,GAAGF,EACH,SAAU,GAAG,KAAK,IAAA,CAAK,OAAA,CACxB,CAAA,CACH,GAEe,KAAA,CACnB,MAAgB,CAAC,CACnB,CAEA,eAAsBI,GACpBH,EACA,CAAE,WAAAI,EAAY,GAAGC,GACH,CACd,GAAI,CACF,MAAMH,EAAUtG,GAAWoG,CAAW,EAatC,OAAO,MAZK,MAAM,MAChB,GAAGE,CAAO,kDACV,CACE,OAAQ,OACR,QAAS,CACP,eAAgB,mBAChB,OAAQ,mBACR,WAAAE,CAAA,EAEF,KAAM,KAAK,UAAUC,CAAI,CAAA,CAC3B,GAEe,KAAA,CACnB,MAAgB,CAAC,CACnB,CAEA,eAAsBC,GACpBN,EACA,CAAE,WAAAI,EAAY,GAAGC,GACH,CACd,GAAI,CACF,MAAMH,EAAUtG,GAAWoG,CAAW,EAatC,OAAO,MAZK,MAAM,MAChB,GAAGE,CAAO,4CACV,CACE,OAAQ,OACR,QAAS,CACP,eAAgB,mBAChB,OAAQ,mBACR,WAAAE,CAAA,EAEF,KAAM,KAAK,UAAUC,CAAI,CAAA,CAC3B,GAEe,KAAA,CACnB,MAAgB,CAAC,CACnB,CAEA,eAAsBE,GACpBP,EACAQ,EACc,CACd,GAAI,CACF,MAAMN,EAAUtG,GAAWoG,CAAW,EAWtC,OAAO,MAVK,MAAM,MAChB,GAAGE,CAAO,4BAA4BM,CAAgB,GACtD,CACE,OAAQ,MACR,QAAS,CACP,eAAgB,mBAChB,OAAQ,kBAAA,CACV,CACF,GAEe,KAAA,CACnB,MAAgB,CAAC,CACnB,CAEA,eAAsBC,GACpBT,EACA,CAAE,WAAAI,EAAY,GAAGC,GACH,CACd,GAAI,CACF,MAAMH,EAAUtG,GAAWoG,CAAW,EAatC,OAAO,MAZK,MAAM,MAChB,GAAGE,CAAO,kDACV,CACE,OAAQ,OACR,QAAS,CACP,eAAgB,mBAChB,OAAQ,mBACR,WAAAE,CAAA,EAEF,KAAM,KAAK,UAAUC,CAAI,CAAA,CAC3B,GAEe,KAAA,CACnB,MAAgB,CAAC,CACnB,8ZCxEA,MAAMzC,EAAQC,EAqBR6C,EAAgB/B,EAAAA,SAAwB,KAAO,CACnD,GAAGf,EAAM,KAAA,EACT,EAEI+C,EAAeC,EAAAA,IAA2B,IAAI,EAC9CC,EAAYD,EAAAA,IAA8B,IAAI,EAE9CE,EAAUF,EAAAA,IAAY,EAAE,EACxBrB,EAAUqB,EAAAA,IAAa,EAAK,EAElC,SAASG,GAAgB,CACnBF,EAAU,OAASA,EAAU,MAAM,YACrCA,EAAU,MAAM,WAAW,YAAYA,EAAU,KAAK,EAExDA,EAAU,MAAQ,IACpB,CAEA,SAASG,EAAaxH,EAAa,OAEjCuH,EAAA,EAEA,MAAME,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,IAAMzH,EAGb,MAAM0H,EAAItD,EAAM,MACZsD,EAAE,QAAOD,EAAO,MAAM,MAAQC,EAAE,OAChCA,EAAE,SAAQD,EAAO,MAAM,OAASC,EAAE,QAClCA,EAAE,SAAQD,EAAO,MAAM,OAASC,EAAE,QAClCA,EAAE,eAAcD,EAAO,MAAM,aAAeC,EAAE,cAC9CA,EAAE,WAAUD,EAAO,MAAM,SAAWC,EAAE,WAE1CC,EAAAR,EAAa,QAAb,MAAAQ,EAAoB,YAAYF,GAChCJ,EAAU,MAAQI,CACpB,CAEA,eAAeG,GAA6B,CAE1C,GAAIxD,EAAM,IAAK,CACboD,EAAapD,EAAM,GAAG,EACtB,MACF,CAEA,GAAI,CAACA,EAAM,UAAW,CACpBkD,EAAQ,MAAQ,0BAChB,MACF,CAEA,GAAI,CAACzH,GAAkCuE,EAAM,aAAa,EAAG,CAC3DkD,EAAQ,MAAQ,uDAChB,MACF,CAEAvB,EAAQ,MAAQ,GAChBuB,EAAQ,MAAQ,GAEhB,GAAI,CACF,MAAMO,EAA8B,MAAMvB,GACxClC,EAAM,cACNA,EAAM,YACNA,EAAM,SAAA,EAGJyD,GAAA,MAAAA,EAAU,cAAgBA,EAAS,WACrCP,EAAQ,MAAQ,oCAChBE,EAAaK,EAAS,SAAS,GAE/BP,EAAQ,MAAQ,+BAEpB,OAASQ,EAAQ,CACfR,EAAQ,OAAQQ,GAAA,YAAAA,EAAG,UAAW,+BAChC,QAAA,CACE/B,EAAQ,MAAQ,EAClB,CACF,CAEAgC,OAAAA,EAAAA,UAAU,IAAM,CACTZ,EAAa,OAClBS,EAAA,CACF,CAAC,EAGDI,EAAAA,MACE,IAAM5D,EAAM,IACX6D,GAAW,CACNA,KAAqBA,CAAM,CACjC,CAAA,EAGFC,EAAAA,gBAAgB,IAAM,CACpBX,EAAA,CACF,CAAC,wBA7JC3C,EAAAA,mBAQM,MAAA,CARD,MAAM,WAAY,uBAAOsC,EAAA,KAAa,CAAA,GACzCnC,EAAAA,mBAAoD,MAAA,SAA3C,eAAJ,IAAIoC,EAAe,MAAM,eAAA,YAEtBpB,EAAA,OADRpB,EAAAA,UAAA,EAAAC,EAAAA,mBAKM,MALNuB,GAKM,CADJgC,EAAAA,YAAclC,EAAA,CAAA,mSCgCpB,MAAM7B,EAAQC,EAcRiD,EAAUF,EAAAA,IAAY,EAAE,EACxBgB,EAAYhB,EAAAA,IAAY,EAAE,EAC1BrB,EAAUqB,EAAAA,IAAa,EAAK,EAElC,eAAeQ,GAA6B,CAC1C,GAAI,CAACxD,EAAM,UAAW,CACpBkD,EAAQ,MAAQ,0BAChB,MACF,CACA,GAAI,CAACzH,GAAkCuE,EAAM,aAAa,EAAG,CAC3DkD,EAAQ,MAAQ,uDAChB,MACF,CAEAvB,EAAQ,MAAQ,GAChBuB,EAAQ,MAAQ,GAEhB,GAAI,CACF,MAAMO,EAA8B,MAAMvB,GACxClC,EAAM,cACNA,EAAM,YACNA,EAAM,SAAA,EAGJyD,GAAA,MAAAA,EAAU,cAAgBA,EAAS,WACrCO,EAAU,MAAQP,EAAS,UAC3BP,EAAQ,MAAQ,oCAEZlD,EAAM,OAAS,YAEjB,OAAO,KAAKyD,EAAS,UAAW,SAAU,qBAAqB,GAGjEP,EAAQ,MAAQ,+BAEpB,OAASQ,EAAQ,CACfR,EAAQ,OAAQQ,GAAA,YAAAA,EAAG,UAAW,+BAChC,QAAA,CACE/B,EAAQ,MAAQ,EAClB,CACF,CAGA,KAAM,CAAE,UAAAU,EAAW,YAAAD,EAAa,KAAAnG,CAAA,EAAS+D,eA9F/BgE,EAAA,OAAatD,EAAAA,MAAAzE,CAAA,IAAI,wBADzB2F,EAAAA,YAKEqC,GAAA,OAHC,IAAKD,EAAA,MACL,UAAWtD,EAAAA,MAAA2B,CAAA,EACX,YAAa3B,EAAAA,MAAA0B,CAAA,CAAA,4DAEhB5B,qBASM,MAAAuB,GAAA,CARJgC,EAAAA,YAMEG,GAAA,CALA,MAAM,MACN,KAAK,UACL,YAAY,SACX,QAASvC,EAAA,MACT,QAAO6B,CAAA,sBAEVO,cAA0CI,GAAA,CAAzB,aAAcjB,EAAA,KAAA,EAAO,KAAA,EAAA,CAAA,cAAA,CAAA,CAAA,iLCU1C,MAAMlD,EAAQC,EAMRC,EAAQC,EAAAA,SAAA,EACR,CAAE,MAAAiE,EAAO,OAAAC,EAAQ,MAAAhE,CAAA,EAAUL,gBA/B/BO,YAAA,EAAAC,qBAYM,MAZNC,EAAAA,WAYM,CAXH,MAAOC,EAAAA,MAAA0D,CAAA,EACP,OAAQ1D,EAAAA,MAAA2D,CAAA,EACT,QAAQ,YACR,KAAK,OACL,MAAM,4BAAA,EACE3D,EAAAA,MAAAR,CAAA,CAAK,EAAA,CAEbS,EAAAA,mBAGE,OAAA,CAFA,EAAE,8YACD,KAAMD,EAAAA,MAAAL,CAAA,CAAA,0HCVXG,EAAAA,mBAGM,MAAA,CAHD,MAAM,yCAA0C,uBAAO8D,EAAAA,MAAK,MAAA,EAAA,GAC/DP,EAAAA,YAAmBQ,EAAA,EACnBC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA7D,EAAAA,mBAAiD,IAAA,CAA9C,MAAM,iCAAgC,OAAI,EAAA,EAAA,iLCsBjD,MAAMX,EAAQC,EAMRC,EAAQC,EAAAA,SAAA,EACR,CAAE,MAAAiE,EAAO,OAAAC,EAAQ,MAAAhE,CAAA,EAAUL,gBA/B/BO,YAAA,EAAAC,qBAYM,MAZNC,EAAAA,WAYM,CAXH,MAAOC,EAAAA,MAAA0D,CAAA,EACP,OAAQ1D,EAAAA,MAAA2D,CAAA,EACT,QAAQ,YACR,KAAK,OACL,MAAM,4BAAA,EACE3D,EAAAA,MAAAR,CAAA,CAAK,EAAA,CAEbS,EAAAA,mBAGE,OAAA,CAFA,EAAE,8rBACD,KAAMD,EAAAA,MAAAL,CAAA,CAAA,+aCoCb,MAAMO,EAAOC,gBA9CXN,YAAA,EAAAC,qBA+BM,MA/BNuB,GA+BM,CA5BJpB,EAAAA,mBA2BM,MA3BNmB,GA2BM,CA1BY2C,EAAAA,8BAAhB7C,EAAAA,YAAuD8C,GAAA,OAAtB,sBAAM9D,EAAI,MAAA,EAAA,gCAE3CD,EAAAA,mBAuBM,MAvBNgE,GAuBM,CAtBJhE,EAAAA,mBAWM,MAXNiE,GAWM,CAVJjE,EAAAA,mBAEM,MAFNkE,GAEM,CADJpD,aAAQC,EAAA,OAAA,SAAA,CAAA,GAGVf,EAAAA,mBAKM,MALNmE,GAKM,CAJJN,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA7D,EAAAA,mBAEI,IAAA,CAFD,MAAM,iDAAA,EAAkD,uBAE3D,EAAA,GACAoD,EAAAA,YAAmCgB,GAAA,CAAlB,MAAM,UAAS,CAAA,KAKpCpE,EAAAA,mBAOM,MAAA,CANJ,MAAM,mGACL,uBAAOC,EAAI,OAAA,GACZ,KAAK,SACL,aAAW,OAAA,mBAEXD,EAAAA,mBAA2B,IAAA,CAAxB,MAAM,YAAA,EAAa,IAAC,EAAA,CAAA,0aC6BjC,MAAMX,EAAQC,EAQRW,EAAOC,EAMPmE,EAAejE,EAAAA,SAAS,IAAMf,EAAM,aAAe,MAAS,EAC5DiF,EAAWjC,EAAAA,IAAY,EAAE,EAG/BW,EAAAA,UAAU,IAAM,CACd,GAAIqB,EAAa,MAAO,OACxB,MAAME,EACJlF,EAAM,eAAiBA,EAAM,QAAQ,OAASA,EAAM,QAAQ,CAAC,EAAE,MAAQ,IACzEiF,EAAS,MAAQC,EACbA,IACFtE,EAAK,oBAAqBsE,CAAO,EACjCtE,EAAK,iBAAkBsE,CAAO,EAElC,CAAC,EAGDtB,EAAAA,MACE,IAAM5D,EAAM,WACXxC,GAAM,CACDwH,EAAa,QAAOC,EAAS,MAAQzH,GAAK,GAChD,EACA,CAAE,UAAW,EAAA,CAAK,EAGpB,MAAM2H,EAAWpE,EAAAA,SAAS,IACxBiE,EAAa,MAAQhF,EAAM,YAAc,GAAKiF,EAAS,KAAA,EAGzD,SAASG,EAAY5H,EAAW,CACzBwH,EAAa,QAAOC,EAAS,MAAQzH,GAC1CoD,EAAK,oBAAqBpD,CAAC,EAC3BoD,EAAK,iBAAkBpD,CAAC,CAC1B,CAEA,MAAM6H,EAAkBtE,EAAAA,SAAS,IAC/Bf,EAAM,OAAS,aAAe,iBAAmB,gBAAA,EAG7C,CAAE,QAAAsF,EAAS,KAAApE,EAAM,UAAAZ,CAAA,EAAcN,8BA5GnCQ,EAAAA,mBAgCM,MAAA,CA/BH,MAAKc,EAAAA,eAAA,CAAA,OAAW+D,EAAA,MAAiB3E,EAAAA,MAAAJ,CAAA,CAAS,CAAA,EAC3C,KAAK,aACJ,mBAAkBI,EAAAA,MAAAQ,CAAA,IAAI,aAAA,aAAA,WACvB,SAAS,GAAA,oBAETV,EAAAA,mBAyBM+E,WAAA,KAAAC,EAAAA,WAxBU9E,QAAA4E,CAAA,EAAPG,kBADTjF,EAAAA,mBAyBM,MAAA,CAvBH,IAAKiF,EAAI,MACV,KAAK,QACJ,eAAcN,EAAA,QAAaM,EAAI,MAChC,SAAS,KACR,QAAKC,GAAEN,EAAYK,EAAI,KAAK,EAC7B,MAAM,uEAAA,GAEN9E,EAAAA,mBAYM,MAAA,CAXH,MAAKW,EAAAA,eAAA,gEAAwF6D,EAAA,QAAaM,EAAI,uEAQvGN,EAAA,QAAaM,EAAI,OADzBlF,EAAAA,UAAA,EAAAC,qBAGE,MAHFmE,EAGE,mCAEJhE,EAAAA,mBAEI,IAFJiE,GAEI5C,EAAAA,gBADCyD,EAAI,KAAK,EAAA,CAAA,CAAA,wQCTpB,MAAMzF,EAAQC,EAQRW,EAAOC,EAIP,CAAE,IAAA8E,EAAK,OAAAtB,EAAQ,MAAAD,EAAO,IAAAwB,EAAK,YAAApE,EAAa,YAAAqE,GAAgB7F,8BAhC5DQ,EAAAA,mBAOE,MAAA,CANC,IAAKE,EAAAA,MAAAiF,CAAA,EACL,OAAQjF,EAAAA,MAAA2D,CAAA,EACR,IAAK3D,EAAAA,MAAAkF,CAAA,EACL,MAAKtE,EAAAA,eAAA,CAAGZ,EAAAA,MAAAc,CAAA,EAAad,EAAAA,MAAAmF,CAAA,EAAW,SAAA,EAAA,CAAA,EAChC,MAAKC,EAAAA,eAAA,CAAA,MAAWpF,QAAAmF,CAAA,EAAW,OAAYnF,EAAAA,MAAA0D,CAAA,EAAK,IAAA,CAAA,EAC5C,uBAAOxD,EAAI,OAAA,EAAA,i7BCPhB,MAAAmF,GAAe,CAAA,yKCAb,SAAUC,EAAMC,EAAS,CAGzBC,EAAA,QAA2BD,EAAO,CAUpC,GAAEE,EAAM,UAAY,CAOnB,IAAIC,EAAWA,GAAa,SAAUC,EAAMC,EAAW,CAEnD,IAAIC,EA4BJ,GAzBI,OAAO,OAAW,KAAe,OAAO,SACxCA,EAAS,OAAO,QAIhB,OAAO,KAAS,KAAe,KAAK,SACpCA,EAAS,KAAK,QAId,OAAO,WAAe,KAAe,WAAW,SAChDA,EAAS,WAAW,QAIpB,CAACA,GAAU,OAAO,OAAW,KAAe,OAAO,WACnDA,EAAS,OAAO,UAIhB,CAACA,GAAU,OAAOC,EAAW,KAAeA,EAAO,SACnDD,EAASC,EAAO,QAIhB,CAACD,GAAU,OAAOE,IAAY,WAC9B,GAAI,CACAF,EAASG,EACtB,MAAuB,CAAA,CAQlB,IAAIC,EAAwB,UAAY,CACpC,GAAIJ,EAAQ,CAER,GAAI,OAAOA,EAAO,iBAAoB,WAClC,GAAI,CACA,OAAOA,EAAO,gBAAgB,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,CACxE,MAA+B,CAAA,CAIlB,GAAI,OAAOA,EAAO,aAAgB,WAC9B,GAAI,CACA,OAAOA,EAAO,YAAY,CAAC,EAAE,YAAW,CAC7D,MAA+B,CAAA,CAE/B,CAES,MAAM,IAAI,MAAM,qEAAqE,CAC9F,EAMSK,EAAS,OAAO,QAAW,UAAY,CACvC,SAASC,GAAI,CAAA,CAEb,OAAO,SAAUnL,EAAK,CAClB,IAAIoL,EAEJ,OAAAD,EAAE,UAAYnL,EAEdoL,EAAU,IAAID,EAEdA,EAAE,UAAY,KAEPC,CACpB,CACA,IAKSC,EAAI,CAAA,EAKJC,EAAQD,EAAE,IAAM,CAAA,EAKhBE,EAAOD,EAAM,KAAQ,UAAY,CAGjC,MAAO,CAmBH,OAAQ,SAAUE,EAAW,CAEzB,IAAIJ,EAAUF,EAAO,IAAI,EAGzB,OAAIM,GACAJ,EAAQ,MAAMI,CAAS,GAIvB,CAACJ,EAAQ,eAAe,MAAM,GAAK,KAAK,OAASA,EAAQ,QACzDA,EAAQ,KAAO,UAAY,CACvBA,EAAQ,OAAO,KAAK,MAAM,KAAM,SAAS,CAClE,GAIiBA,EAAQ,KAAK,UAAYA,EAGzBA,EAAQ,OAAS,KAEVA,CACxB,EAca,OAAQ,UAAY,CAChB,IAAIK,EAAW,KAAK,OAAM,EAC1B,OAAAA,EAAS,KAAK,MAAMA,EAAU,SAAS,EAEhCA,CACxB,EAca,KAAM,UAAY,CAC/B,EAaa,MAAO,SAAUC,EAAY,CACzB,QAASC,KAAgBD,EACjBA,EAAW,eAAeC,CAAY,IACtC,KAAKA,CAAY,EAAID,EAAWC,CAAY,GAKhDD,EAAW,eAAe,UAAU,IACpC,KAAK,SAAWA,EAAW,SAEhD,EAWa,MAAO,UAAY,CACf,OAAO,KAAK,KAAK,UAAU,OAAO,IAAI,CACvD,CACA,CACA,IAQSE,EAAYN,EAAM,UAAYC,EAAK,OAAO,CAa1C,KAAM,SAAUM,EAAOC,EAAU,CAC7BD,EAAQ,KAAK,MAAQA,GAAS,CAAA,EAE1BC,GAAYlB,EACZ,KAAK,SAAWkB,EAEhB,KAAK,SAAWD,EAAM,OAAS,CAEhD,EAeS,SAAU,SAAUE,EAAS,CACzB,OAAQA,GAAWC,GAAK,UAAU,IAAI,CACnD,EAaS,OAAQ,SAAUC,EAAW,CAEzB,IAAIC,EAAY,KAAK,MACjBC,EAAYF,EAAU,MACtBG,EAAe,KAAK,SACpBC,EAAeJ,EAAU,SAM7B,GAHA,KAAK,MAAK,EAGNG,EAAe,EAEf,QAASE,EAAI,EAAGA,EAAID,EAAcC,IAAK,CACnC,IAAIC,EAAYJ,EAAUG,IAAM,CAAC,IAAO,GAAMA,EAAI,EAAK,EAAM,IAC7DJ,EAAWE,EAAeE,IAAO,CAAC,GAAKC,GAAa,IAAOH,EAAeE,GAAK,EAAK,CACzG,KAGiB,SAASE,EAAI,EAAGA,EAAIH,EAAcG,GAAK,EACnCN,EAAWE,EAAeI,IAAO,CAAC,EAAIL,EAAUK,IAAM,CAAC,EAG/D,YAAK,UAAYH,EAGV,IACpB,EASS,MAAO,UAAY,CAEf,IAAIR,EAAQ,KAAK,MACbC,EAAW,KAAK,SAGpBD,EAAMC,IAAa,CAAC,GAAK,YAAe,GAAMA,EAAW,EAAK,EAC9DD,EAAM,OAASlB,EAAK,KAAKmB,EAAW,CAAC,CAClD,EAWS,MAAO,UAAY,CACf,IAAIW,EAAQlB,EAAK,MAAM,KAAK,IAAI,EAChC,OAAAkB,EAAM,MAAQ,KAAK,MAAM,MAAM,CAAC,EAEzBA,CACpB,EAeS,OAAQ,SAAUC,EAAQ,CAGtB,QAFIb,EAAQ,CAAA,EAEHS,EAAI,EAAGA,EAAII,EAAQJ,GAAK,EAC7BT,EAAM,KAAKZ,GAAuB,EAGtC,OAAO,IAAIW,EAAU,KAAKC,EAAOa,CAAM,CACpD,CACA,CAAM,EAKGC,EAAQtB,EAAE,IAAM,CAAA,EAKhBW,EAAMW,EAAM,IAAM,CAclB,UAAW,SAAUV,EAAW,CAO5B,QALIJ,EAAQI,EAAU,MAClBH,EAAWG,EAAU,SAGrBW,EAAW,CAAA,EACNN,EAAI,EAAGA,EAAIR,EAAUQ,IAAK,CAC/B,IAAIO,EAAQhB,EAAMS,IAAM,CAAC,IAAO,GAAMA,EAAI,EAAK,EAAM,IACrDM,EAAS,MAAMC,IAAS,GAAG,SAAS,EAAE,CAAC,EACvCD,EAAS,MAAMC,EAAO,IAAM,SAAS,EAAE,CAAC,CACzD,CAEa,OAAOD,EAAS,KAAK,EAAE,CACpC,EAeS,MAAO,SAAUE,EAAQ,CAMrB,QAJIC,EAAeD,EAAO,OAGtBjB,EAAQ,CAAA,EACHS,EAAI,EAAGA,EAAIS,EAAcT,GAAK,EACnCT,EAAMS,IAAM,CAAC,GAAK,SAASQ,EAAO,OAAOR,EAAG,CAAC,EAAG,EAAE,GAAM,GAAMA,EAAI,EAAK,EAG3E,OAAO,IAAIV,EAAU,KAAKC,EAAOkB,EAAe,CAAC,CAC9D,CACA,EAKSC,EAASL,EAAM,OAAS,CAcxB,UAAW,SAAUV,EAAW,CAO5B,QALIJ,EAAQI,EAAU,MAClBH,EAAWG,EAAU,SAGrBgB,EAAc,CAAA,EACTX,EAAI,EAAGA,EAAIR,EAAUQ,IAAK,CAC/B,IAAIO,EAAQhB,EAAMS,IAAM,CAAC,IAAO,GAAMA,EAAI,EAAK,EAAM,IACrDW,EAAY,KAAK,OAAO,aAAaJ,CAAI,CAAC,CAC3D,CAEa,OAAOI,EAAY,KAAK,EAAE,CACvC,EAeS,MAAO,SAAUC,EAAW,CAMxB,QAJIC,EAAkBD,EAAU,OAG5BrB,EAAQ,CAAA,EACHS,EAAI,EAAGA,EAAIa,EAAiBb,IACjCT,EAAMS,IAAM,CAAC,IAAMY,EAAU,WAAWZ,CAAC,EAAI,MAAU,GAAMA,EAAI,EAAK,EAG1E,OAAO,IAAIV,EAAU,KAAKC,EAAOsB,CAAe,CAC7D,CACA,EAKSC,EAAOT,EAAM,KAAO,CAcpB,UAAW,SAAUV,EAAW,CAC5B,GAAI,CACA,OAAO,mBAAmB,OAAOe,EAAO,UAAUf,CAAS,CAAC,CAAC,CAC9E,MAAyB,CACR,MAAM,IAAI,MAAM,sBAAsB,CACvD,CACA,EAeS,MAAO,SAAUoB,EAAS,CACtB,OAAOL,EAAO,MAAM,SAAS,mBAAmBK,CAAO,CAAC,CAAC,CACtE,CACA,EASSC,EAAyBhC,EAAM,uBAAyBC,EAAK,OAAO,CAQpE,MAAO,UAAY,CAEf,KAAK,MAAQ,IAAIK,EAAU,KAC3B,KAAK,YAAc,CAChC,EAYS,QAAS,SAAU2B,EAAM,CAEjB,OAAOA,GAAQ,WACfA,EAAOH,EAAK,MAAMG,CAAI,GAI1B,KAAK,MAAM,OAAOA,CAAI,EACtB,KAAK,aAAeA,EAAK,QACtC,EAgBS,SAAU,SAAUC,EAAS,CACzB,IAAIC,EAGAF,EAAO,KAAK,MACZG,EAAYH,EAAK,MACjBI,EAAeJ,EAAK,SACpBK,EAAY,KAAK,UACjBC,EAAiBD,EAAY,EAG7BE,EAAeH,EAAeE,EAC9BL,EAEAM,EAAenD,EAAK,KAAKmD,CAAY,EAIrCA,EAAenD,EAAK,KAAKmD,EAAe,GAAK,KAAK,eAAgB,CAAC,EAIvE,IAAIC,EAAcD,EAAeF,EAG7BI,EAAcrD,EAAK,IAAIoD,EAAc,EAAGJ,CAAY,EAGxD,GAAII,EAAa,CACb,QAASE,EAAS,EAAGA,EAASF,EAAaE,GAAUL,EAEjD,KAAK,gBAAgBF,EAAWO,CAAM,EAI1CR,EAAiBC,EAAU,OAAO,EAAGK,CAAW,EAChDR,EAAK,UAAYS,CAClC,CAGa,OAAO,IAAIpC,EAAU,KAAK6B,EAAgBO,CAAW,CAClE,EAWS,MAAO,UAAY,CACf,IAAIvB,EAAQlB,EAAK,MAAM,KAAK,IAAI,EAChC,OAAAkB,EAAM,MAAQ,KAAK,MAAM,MAAK,EAEvBA,CACpB,EAES,eAAgB,CACzB,CAAM,EAOYnB,EAAM,OAASgC,EAAuB,OAAO,CAItD,IAAK/B,EAAK,OAAM,EAWhB,KAAM,SAAU1L,EAAK,CAEjB,KAAK,IAAM,KAAK,IAAI,OAAOA,CAAG,EAG9B,KAAK,MAAK,CACvB,EASS,MAAO,UAAY,CAEfyN,EAAuB,MAAM,KAAK,IAAI,EAGtC,KAAK,SAAQ,CAC1B,EAcS,OAAQ,SAAUY,EAAe,CAE7B,YAAK,QAAQA,CAAa,EAG1B,KAAK,SAAQ,EAGN,IACpB,EAgBS,SAAU,SAAUA,EAAe,CAE3BA,GACA,KAAK,QAAQA,CAAa,EAI9B,IAAIC,EAAO,KAAK,YAAW,EAE3B,OAAOA,CACpB,EAES,UAAW,GAeX,cAAe,SAAUC,EAAQ,CAC7B,OAAO,SAAU5G,EAAS3H,EAAK,CAC3B,OAAO,IAAIuO,EAAO,KAAKvO,CAAG,EAAE,SAAS2H,CAAO,CAC7D,CACA,EAeS,kBAAmB,SAAU4G,EAAQ,CACjC,OAAO,SAAU5G,EAASnH,EAAK,CAC3B,OAAO,IAAIgO,EAAO,KAAK,KAAKD,EAAQ/N,CAAG,EAAE,SAASmH,CAAO,CAC1E,CACA,CACA,CAAM,EAKD,IAAI6G,EAAShD,EAAE,KAAO,CAAA,EAEtB,OAAOA,CACZ,EAAG,IAAI,EAGN,OAAOX,CAER,CAAC,wFCtyBC,SAAUJ,EAAMC,EAAS,CAGzBC,UAA2BD,EAAQS,GAAiB,CAUtD,GAAEP,EAAM,SAAUC,EAAU,CAE3B,OAAC,SAAUE,EAAW,CAElB,IAAIS,EAAIX,EACJY,EAAQD,EAAE,IACVE,EAAOD,EAAM,KACbgD,EAAehD,EAAM,UAKrBiD,EAAQlD,EAAE,IAAM,CAAA,EAKNkD,EAAM,KAAOhD,EAAK,OAAO,CAWnC,KAAM,SAAUiD,EAAMC,EAAK,CACvB,KAAK,KAAOD,EACZ,KAAK,IAAMC,CACxB,CAsKA,CAAM,EAQkBF,EAAM,UAAYhD,EAAK,OAAO,CAqB7C,KAAM,SAAUM,EAAOC,EAAU,CAC7BD,EAAQ,KAAK,MAAQA,GAAS,CAAA,EAE1BC,GAAYlB,EACZ,KAAK,SAAWkB,EAEhB,KAAK,SAAWD,EAAM,OAAS,CAEhD,EAWS,MAAO,UAAY,CAOf,QALI6C,EAAW,KAAK,MAChBC,EAAiBD,EAAS,OAG1BE,EAAW,CAAA,EACNtC,EAAI,EAAGA,EAAIqC,EAAgBrC,IAAK,CACrC,IAAIuC,EAAUH,EAASpC,CAAC,EACxBsC,EAAS,KAAKC,EAAQ,IAAI,EAC1BD,EAAS,KAAKC,EAAQ,GAAG,CAC1C,CAEa,OAAOP,EAAa,OAAOM,EAAU,KAAK,QAAQ,CAC/D,EAWS,MAAO,UAAY,CAQf,QAPInC,EAAQlB,EAAK,MAAM,KAAK,IAAI,EAG5BM,EAAQY,EAAM,MAAQ,KAAK,MAAM,MAAM,CAAC,EAGxCqC,EAAcjD,EAAM,OACfS,EAAI,EAAGA,EAAIwC,EAAaxC,IAC7BT,EAAMS,CAAC,EAAIT,EAAMS,CAAC,EAAE,MAAK,EAG7B,OAAOG,CACpB,CACA,CAAM,CACN,EAAE,EAGM/B,CAER,CAAC,wFC/SC,SAAUJ,EAAMC,EAAS,CAGzBC,UAA2BD,EAAQS,GAAiB,CAUtD,GAAEP,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,GAAI,OAAO,aAAe,WAK1B,KAAIW,EAAIX,EACJY,EAAQD,EAAE,IACVO,EAAYN,EAAM,UAGlByD,EAAYnD,EAAU,KAGtBoD,EAAUpD,EAAU,KAAO,SAAUqD,EAAY,CAqBjD,GAnBIA,aAAsB,cACtBA,EAAa,IAAI,WAAWA,CAAU,IAKtCA,aAAsB,WACrB,OAAO,kBAAsB,KAAeA,aAAsB,mBACnEA,aAAsB,YACtBA,aAAsB,aACtBA,aAAsB,YACtBA,aAAsB,aACtBA,aAAsB,cACtBA,aAAsB,gBAEtBA,EAAa,IAAI,WAAWA,EAAW,OAAQA,EAAW,WAAYA,EAAW,UAAU,GAI3FA,aAAsB,WAAY,CAMlC,QAJIC,EAAuBD,EAAW,WAGlCpD,EAAQ,CAAA,EACHS,EAAI,EAAGA,EAAI4C,EAAsB5C,IACtCT,EAAMS,IAAM,CAAC,GAAK2C,EAAW3C,CAAC,GAAM,GAAMA,EAAI,EAAK,EAIvDyC,EAAU,KAAK,KAAMlD,EAAOqD,CAAoB,CAC7D,MAEaH,EAAU,MAAM,KAAM,SAAS,CAE5C,EAEKC,EAAQ,UAAYpD,EACzB,EAAE,EAGMlB,EAAS,IAAI,SAErB,CAAC,wFC3EC,SAAUJ,EAAMC,EAAS,CAGzBC,UAA2BD,EAAQS,GAAiB,CAUtD,GAAEP,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIW,EAAIX,EACJY,EAAQD,EAAE,IACVO,EAAYN,EAAM,UAClBqB,EAAQtB,EAAE,IAKAsB,EAAM,MAAQA,EAAM,QAAU,CAcxC,UAAW,SAAUV,EAAW,CAO5B,QALIJ,EAAQI,EAAU,MAClBH,EAAWG,EAAU,SAGrBkD,EAAa,CAAA,EACR7C,EAAI,EAAGA,EAAIR,EAAUQ,GAAK,EAAG,CAClC,IAAI8C,EAAavD,EAAMS,IAAM,CAAC,IAAO,GAAMA,EAAI,EAAK,EAAM,MAC1D6C,EAAW,KAAK,OAAO,aAAaC,CAAS,CAAC,CAC/D,CAEa,OAAOD,EAAW,KAAK,EAAE,CACtC,EAeS,MAAO,SAAUE,EAAU,CAMvB,QAJIC,EAAiBD,EAAS,OAG1BxD,EAAQ,CAAA,EACHS,EAAI,EAAGA,EAAIgD,EAAgBhD,IAChCT,EAAMS,IAAM,CAAC,GAAK+C,EAAS,WAAW/C,CAAC,GAAM,GAAMA,EAAI,EAAK,GAGhE,OAAOV,EAAU,OAAOC,EAAOyD,EAAiB,CAAC,CAC9D,CACA,EAKK3C,EAAM,QAAU,CAcZ,UAAW,SAAUV,EAAW,CAO5B,QALIJ,EAAQI,EAAU,MAClBH,EAAWG,EAAU,SAGrBkD,EAAa,CAAA,EACR7C,EAAI,EAAGA,EAAIR,EAAUQ,GAAK,EAAG,CAClC,IAAI8C,EAAYG,EAAY1D,EAAMS,IAAM,CAAC,IAAO,GAAMA,EAAI,EAAK,EAAM,KAAM,EAC3E6C,EAAW,KAAK,OAAO,aAAaC,CAAS,CAAC,CAC/D,CAEa,OAAOD,EAAW,KAAK,EAAE,CACtC,EAeS,MAAO,SAAUE,EAAU,CAMvB,QAJIC,EAAiBD,EAAS,OAG1BxD,EAAQ,CAAA,EACHS,EAAI,EAAGA,EAAIgD,EAAgBhD,IAChCT,EAAMS,IAAM,CAAC,GAAKiD,EAAWF,EAAS,WAAW/C,CAAC,GAAM,GAAMA,EAAI,EAAK,EAAG,EAG9E,OAAOV,EAAU,OAAOC,EAAOyD,EAAiB,CAAC,CAC9D,CACA,EAEK,SAASC,EAAWC,EAAM,CACtB,OAASA,GAAQ,EAAK,WAAgBA,IAAS,EAAK,QAC7D,CACA,EAAE,EAGM9E,EAAS,IAAI,KAErB,CAAC,wFCpJC,SAAUJ,EAAMC,EAAS,CAGzBC,UAA2BD,EAAQS,GAAiB,CAUtD,GAAEP,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIW,EAAIX,EACJY,EAAQD,EAAE,IACVO,EAAYN,EAAM,UAClBqB,EAAQtB,EAAE,IAKDsB,EAAM,OAAS,CAcxB,UAAW,SAAUV,EAAW,CAE5B,IAAIJ,EAAQI,EAAU,MAClBH,EAAWG,EAAU,SACrBwD,EAAM,KAAK,KAGfxD,EAAU,MAAK,EAIf,QADIyD,EAAc,CAAA,EACTpD,EAAI,EAAGA,EAAIR,EAAUQ,GAAK,EAO/B,QANIqD,EAAS9D,EAAMS,IAAM,CAAC,IAAa,GAAMA,EAAI,EAAK,EAAY,IAC9DsD,EAAS/D,EAAOS,EAAI,IAAO,CAAC,IAAO,IAAOA,EAAI,GAAK,EAAK,EAAM,IAC9DuD,EAAShE,EAAOS,EAAI,IAAO,CAAC,IAAO,IAAOA,EAAI,GAAK,EAAK,EAAM,IAE9DwD,EAAWH,GAAS,GAAOC,GAAS,EAAKC,EAEpCrD,EAAI,EAAIA,EAAI,GAAOF,EAAIE,EAAI,IAAOV,EAAWU,IAClDkD,EAAY,KAAKD,EAAI,OAAQK,IAAa,GAAK,EAAItD,GAAO,EAAI,CAAC,EAKvE,IAAIuD,EAAcN,EAAI,OAAO,EAAE,EAC/B,GAAIM,EACA,KAAOL,EAAY,OAAS,GACxBA,EAAY,KAAKK,CAAW,EAIpC,OAAOL,EAAY,KAAK,EAAE,CACvC,EAeS,MAAO,SAAUM,EAAW,CAExB,IAAIC,EAAkBD,EAAU,OAC5BP,EAAM,KAAK,KACXS,EAAa,KAAK,YAEtB,GAAI,CAACA,EAAY,CACTA,EAAa,KAAK,YAAc,CAAA,EAChC,QAAS1D,EAAI,EAAGA,EAAIiD,EAAI,OAAQjD,IAC5B0D,EAAWT,EAAI,WAAWjD,CAAC,CAAC,EAAIA,CAEzD,CAGa,IAAIuD,EAAcN,EAAI,OAAO,EAAE,EAC/B,GAAIM,EAAa,CACb,IAAII,EAAeH,EAAU,QAAQD,CAAW,EAC5CI,IAAiB,KACjBF,EAAkBE,EAEvC,CAGa,OAAOC,EAAUJ,EAAWC,EAAiBC,CAAU,CAEpE,EAES,KAAM,mEACf,EAEK,SAASE,EAAUJ,EAAWC,EAAiBC,EAAY,CAGzD,QAFIrE,EAAQ,CAAA,EACRa,EAAS,EACJJ,EAAI,EAAGA,EAAI2D,EAAiB3D,IACjC,GAAIA,EAAI,EAAG,CACP,IAAI+D,EAAQH,EAAWF,EAAU,WAAW1D,EAAI,CAAC,CAAC,GAAOA,EAAI,EAAK,EAC9DgE,EAAQJ,EAAWF,EAAU,WAAW1D,CAAC,CAAC,IAAO,EAAKA,EAAI,EAAK,EAC/DiE,EAAeF,EAAQC,EAC3BzE,EAAMa,IAAW,CAAC,GAAK6D,GAAiB,GAAM7D,EAAS,EAAK,EAC5DA,GACf,CAEO,OAAOd,EAAU,OAAOC,EAAOa,CAAM,CAC5C,CACA,EAAE,EAGMhC,EAAS,IAAI,MAErB,CAAC,wFCvIC,SAAUJ,EAAMC,EAAS,CAGzBC,UAA2BD,EAAQS,GAAiB,CAUtD,GAAEP,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIW,EAAIX,EACJY,EAAQD,EAAE,IACVO,EAAYN,EAAM,UAClBqB,EAAQtB,EAAE,IAKEsB,EAAM,UAAY,CAgB9B,UAAW,SAAUV,EAAWuE,EAAS,CACjCA,IAAY,SACZA,EAAU,IAGd,IAAI3E,EAAQI,EAAU,MAClBH,EAAWG,EAAU,SACrBwD,EAAMe,EAAU,KAAK,UAAY,KAAK,KAG1CvE,EAAU,MAAK,EAIf,QADIyD,EAAc,CAAA,EACTpD,EAAI,EAAGA,EAAIR,EAAUQ,GAAK,EAO/B,QANIqD,EAAS9D,EAAMS,IAAM,CAAC,IAAa,GAAMA,EAAI,EAAK,EAAY,IAC9DsD,EAAS/D,EAAOS,EAAI,IAAO,CAAC,IAAO,IAAOA,EAAI,GAAK,EAAK,EAAM,IAC9DuD,EAAShE,EAAOS,EAAI,IAAO,CAAC,IAAO,IAAOA,EAAI,GAAK,EAAK,EAAM,IAE9DwD,EAAWH,GAAS,GAAOC,GAAS,EAAKC,EAEpCrD,EAAI,EAAIA,EAAI,GAAOF,EAAIE,EAAI,IAAOV,EAAWU,IAClDkD,EAAY,KAAKD,EAAI,OAAQK,IAAa,GAAK,EAAItD,GAAO,EAAI,CAAC,EAKvE,IAAIuD,EAAcN,EAAI,OAAO,EAAE,EAC/B,GAAIM,EACA,KAAOL,EAAY,OAAS,GACxBA,EAAY,KAAKK,CAAW,EAIpC,OAAOL,EAAY,KAAK,EAAE,CACvC,EAiBS,MAAO,SAAUM,EAAWQ,EAAS,CAC7BA,IAAY,SACZA,EAAU,IAId,IAAIP,EAAkBD,EAAU,OAC5BP,EAAMe,EAAU,KAAK,UAAY,KAAK,KACtCN,EAAa,KAAK,YAEtB,GAAI,CAACA,EAAY,CACbA,EAAa,KAAK,YAAc,CAAA,EAChC,QAAS1D,EAAI,EAAGA,EAAIiD,EAAI,OAAQjD,IAC5B0D,EAAWT,EAAI,WAAWjD,CAAC,CAAC,EAAIA,CAErD,CAGa,IAAIuD,EAAcN,EAAI,OAAO,EAAE,EAC/B,GAAIM,EAAa,CACb,IAAII,EAAeH,EAAU,QAAQD,CAAW,EAC5CI,IAAiB,KACjBF,EAAkBE,EAEvC,CAGa,OAAOC,EAAUJ,EAAWC,EAAiBC,CAAU,CAEpE,EAES,KAAM,oEACN,UAAW,kEACpB,EAEK,SAASE,EAAUJ,EAAWC,EAAiBC,EAAY,CAGvD,QAFIrE,EAAQ,CAAA,EACRa,EAAS,EACJJ,EAAI,EAAGA,EAAI2D,EAAiB3D,IACjC,GAAIA,EAAI,EAAG,CACP,IAAI+D,EAAQH,EAAWF,EAAU,WAAW1D,EAAI,CAAC,CAAC,GAAOA,EAAI,EAAK,EAC9DgE,EAAQJ,EAAWF,EAAU,WAAW1D,CAAC,CAAC,IAAO,EAAKA,EAAI,EAAK,EAC/DiE,EAAeF,EAAQC,EAC3BzE,EAAMa,IAAW,CAAC,GAAK6D,GAAiB,GAAM7D,EAAS,EAAK,EAC5DA,GACjB,CAES,OAAOd,EAAU,OAAOC,EAAOa,CAAM,CAC9C,CACA,EAAE,EAGMhC,EAAS,IAAI,SAErB,CAAC,wFCnJC,SAAUJ,EAAMC,EAAS,CAGzBC,UAA2BD,EAAQS,GAAiB,CAUtD,GAAEP,EAAM,SAAUC,EAAU,CAE3B,OAAC,SAAUC,EAAM,CAEb,IAAIU,EAAIX,EACJY,EAAQD,EAAE,IACVO,EAAYN,EAAM,UAClBmF,EAASnF,EAAM,OACf+C,EAAShD,EAAE,KAGXqF,EAAI,CAAA,GAGP,UAAY,CACT,QAASpE,EAAI,EAAGA,EAAI,GAAIA,IACpBoE,EAAEpE,CAAC,EAAK3B,EAAK,IAAIA,EAAK,IAAI2B,EAAI,CAAC,CAAC,EAAI,WAAe,CAEhE,GAAM,EAKD,IAAIqE,EAAMtC,EAAO,IAAMoC,EAAO,OAAO,CACjC,SAAU,UAAY,CAClB,KAAK,MAAQ,IAAI7E,EAAU,KAAK,CAC5B,WAAY,WACZ,WAAY,SAC7B,CAAc,CACd,EAES,gBAAiB,SAAUgF,EAAG3C,EAAQ,CAElC,QAAS3B,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAEzB,IAAIuE,EAAW5C,EAAS3B,EACpBwE,EAAaF,EAAEC,CAAQ,EAE3BD,EAAEC,CAAQ,GACHC,GAAc,EAAOA,IAAe,IAAO,UAC3CA,GAAc,GAAOA,IAAe,GAAO,UAEnE,CAGa,IAAIC,EAAI,KAAK,MAAM,MAEfC,EAAcJ,EAAE3C,EAAS,CAAC,EAC1BgD,EAAcL,EAAE3C,EAAS,CAAC,EAC1BiD,EAAcN,EAAE3C,EAAS,CAAC,EAC1BkD,EAAcP,EAAE3C,EAAS,CAAC,EAC1BmD,EAAcR,EAAE3C,EAAS,CAAC,EAC1BoD,EAAcT,EAAE3C,EAAS,CAAC,EAC1BqD,EAAcV,EAAE3C,EAAS,CAAC,EAC1BsD,EAAcX,EAAE3C,EAAS,CAAC,EAC1BuD,EAAcZ,EAAE3C,EAAS,CAAC,EAC1BwD,EAAcb,EAAE3C,EAAS,CAAC,EAC1ByD,EAAcd,EAAE3C,EAAS,EAAE,EAC3B0D,EAAcf,EAAE3C,EAAS,EAAE,EAC3B2D,EAAchB,EAAE3C,EAAS,EAAE,EAC3B4D,EAAcjB,EAAE3C,EAAS,EAAE,EAC3B6D,EAAclB,EAAE3C,EAAS,EAAE,EAC3B8D,EAAcnB,EAAE3C,EAAS,EAAE,EAG3B+D,EAAIjB,EAAE,CAAC,EACPkB,EAAIlB,EAAE,CAAC,EACPmB,EAAInB,EAAE,CAAC,EACPoB,EAAIpB,EAAE,CAAC,EAGXiB,EAAII,EAAGJ,EAAGC,EAAGC,EAAGC,EAAGnB,EAAa,EAAIN,EAAE,CAAC,CAAC,EACxCyB,EAAIC,EAAGD,EAAGH,EAAGC,EAAGC,EAAGjB,EAAa,GAAIP,EAAE,CAAC,CAAC,EACxCwB,EAAIE,EAAGF,EAAGC,EAAGH,EAAGC,EAAGf,EAAa,GAAIR,EAAE,CAAC,CAAC,EACxCuB,EAAIG,EAAGH,EAAGC,EAAGC,EAAGH,EAAGb,EAAa,GAAIT,EAAE,CAAC,CAAC,EACxCsB,EAAII,EAAGJ,EAAGC,EAAGC,EAAGC,EAAGf,EAAa,EAAIV,EAAE,CAAC,CAAC,EACxCyB,EAAIC,EAAGD,EAAGH,EAAGC,EAAGC,EAAGb,EAAa,GAAIX,EAAE,CAAC,CAAC,EACxCwB,EAAIE,EAAGF,EAAGC,EAAGH,EAAGC,EAAGX,EAAa,GAAIZ,EAAE,CAAC,CAAC,EACxCuB,EAAIG,EAAGH,EAAGC,EAAGC,EAAGH,EAAGT,EAAa,GAAIb,EAAE,CAAC,CAAC,EACxCsB,EAAII,EAAGJ,EAAGC,EAAGC,EAAGC,EAAGX,EAAa,EAAId,EAAE,CAAC,CAAC,EACxCyB,EAAIC,EAAGD,EAAGH,EAAGC,EAAGC,EAAGT,EAAa,GAAIf,EAAE,CAAC,CAAC,EACxCwB,EAAIE,EAAGF,EAAGC,EAAGH,EAAGC,EAAGP,EAAa,GAAIhB,EAAE,EAAE,CAAC,EACzCuB,EAAIG,EAAGH,EAAGC,EAAGC,EAAGH,EAAGL,EAAa,GAAIjB,EAAE,EAAE,CAAC,EACzCsB,EAAII,EAAGJ,EAAGC,EAAGC,EAAGC,EAAGP,EAAa,EAAIlB,EAAE,EAAE,CAAC,EACzCyB,EAAIC,EAAGD,EAAGH,EAAGC,EAAGC,EAAGL,EAAa,GAAInB,EAAE,EAAE,CAAC,EACzCwB,EAAIE,EAAGF,EAAGC,EAAGH,EAAGC,EAAGH,EAAa,GAAIpB,EAAE,EAAE,CAAC,EACzCuB,EAAIG,EAAGH,EAAGC,EAAGC,EAAGH,EAAGD,EAAa,GAAIrB,EAAE,EAAE,CAAC,EAEzCsB,EAAIK,EAAGL,EAAGC,EAAGC,EAAGC,EAAGlB,EAAa,EAAIP,EAAE,EAAE,CAAC,EACzCyB,EAAIE,EAAGF,EAAGH,EAAGC,EAAGC,EAAGZ,EAAa,EAAIZ,EAAE,EAAE,CAAC,EACzCwB,EAAIG,EAAGH,EAAGC,EAAGH,EAAGC,EAAGN,EAAa,GAAIjB,EAAE,EAAE,CAAC,EACzCuB,EAAII,EAAGJ,EAAGC,EAAGC,EAAGH,EAAGhB,EAAa,GAAIN,EAAE,EAAE,CAAC,EACzCsB,EAAIK,EAAGL,EAAGC,EAAGC,EAAGC,EAAGd,EAAa,EAAIX,EAAE,EAAE,CAAC,EACzCyB,EAAIE,EAAGF,EAAGH,EAAGC,EAAGC,EAAGR,EAAa,EAAIhB,EAAE,EAAE,CAAC,EACzCwB,EAAIG,EAAGH,EAAGC,EAAGH,EAAGC,EAAGF,EAAa,GAAIrB,EAAE,EAAE,CAAC,EACzCuB,EAAII,EAAGJ,EAAGC,EAAGC,EAAGH,EAAGZ,EAAa,GAAIV,EAAE,EAAE,CAAC,EACzCsB,EAAIK,EAAGL,EAAGC,EAAGC,EAAGC,EAAGV,EAAa,EAAIf,EAAE,EAAE,CAAC,EACzCyB,EAAIE,EAAGF,EAAGH,EAAGC,EAAGC,EAAGJ,EAAa,EAAIpB,EAAE,EAAE,CAAC,EACzCwB,EAAIG,EAAGH,EAAGC,EAAGH,EAAGC,EAAGd,EAAa,GAAIT,EAAE,EAAE,CAAC,EACzCuB,EAAII,EAAGJ,EAAGC,EAAGC,EAAGH,EAAGR,EAAa,GAAId,EAAE,EAAE,CAAC,EACzCsB,EAAIK,EAAGL,EAAGC,EAAGC,EAAGC,EAAGN,EAAa,EAAInB,EAAE,EAAE,CAAC,EACzCyB,EAAIE,EAAGF,EAAGH,EAAGC,EAAGC,EAAGhB,EAAa,EAAIR,EAAE,EAAE,CAAC,EACzCwB,EAAIG,EAAGH,EAAGC,EAAGH,EAAGC,EAAGV,EAAa,GAAIb,EAAE,EAAE,CAAC,EACzCuB,EAAII,EAAGJ,EAAGC,EAAGC,EAAGH,EAAGJ,EAAa,GAAIlB,EAAE,EAAE,CAAC,EAEzCsB,EAAIM,EAAGN,EAAGC,EAAGC,EAAGC,EAAGd,EAAa,EAAIX,EAAE,EAAE,CAAC,EACzCyB,EAAIG,EAAGH,EAAGH,EAAGC,EAAGC,EAAGV,EAAa,GAAId,EAAE,EAAE,CAAC,EACzCwB,EAAII,EAAGJ,EAAGC,EAAGH,EAAGC,EAAGN,EAAa,GAAIjB,EAAE,EAAE,CAAC,EACzCuB,EAAIK,EAAGL,EAAGC,EAAGC,EAAGH,EAAGF,EAAa,GAAIpB,EAAE,EAAE,CAAC,EACzCsB,EAAIM,EAAGN,EAAGC,EAAGC,EAAGC,EAAGlB,EAAa,EAAIP,EAAE,EAAE,CAAC,EACzCyB,EAAIG,EAAGH,EAAGH,EAAGC,EAAGC,EAAGd,EAAa,GAAIV,EAAE,EAAE,CAAC,EACzCwB,EAAII,EAAGJ,EAAGC,EAAGH,EAAGC,EAAGV,EAAa,GAAIb,EAAE,EAAE,CAAC,EACzCuB,EAAIK,EAAGL,EAAGC,EAAGC,EAAGH,EAAGN,EAAa,GAAIhB,EAAE,EAAE,CAAC,EACzCsB,EAAIM,EAAGN,EAAGC,EAAGC,EAAGC,EAAGN,EAAa,EAAInB,EAAE,EAAE,CAAC,EACzCyB,EAAIG,EAAGH,EAAGH,EAAGC,EAAGC,EAAGlB,EAAa,GAAIN,EAAE,EAAE,CAAC,EACzCwB,EAAII,EAAGJ,EAAGC,EAAGH,EAAGC,EAAGd,EAAa,GAAIT,EAAE,EAAE,CAAC,EACzCuB,EAAIK,EAAGL,EAAGC,EAAGC,EAAGH,EAAGV,EAAa,GAAIZ,EAAE,EAAE,CAAC,EACzCsB,EAAIM,EAAGN,EAAGC,EAAGC,EAAGC,EAAGV,EAAa,EAAIf,EAAE,EAAE,CAAC,EACzCyB,EAAIG,EAAGH,EAAGH,EAAGC,EAAGC,EAAGN,EAAa,GAAIlB,EAAE,EAAE,CAAC,EACzCwB,EAAII,EAAGJ,EAAGC,EAAGH,EAAGC,EAAGF,EAAa,GAAIrB,EAAE,EAAE,CAAC,EACzCuB,EAAIK,EAAGL,EAAGC,EAAGC,EAAGH,EAAGd,EAAa,GAAIR,EAAE,EAAE,CAAC,EAEzCsB,EAAIO,EAAGP,EAAGC,EAAGC,EAAGC,EAAGnB,EAAa,EAAIN,EAAE,EAAE,CAAC,EACzCyB,EAAII,EAAGJ,EAAGH,EAAGC,EAAGC,EAAGX,EAAa,GAAIb,EAAE,EAAE,CAAC,EACzCwB,EAAIK,EAAGL,EAAGC,EAAGH,EAAGC,EAAGH,EAAa,GAAIpB,EAAE,EAAE,CAAC,EACzCuB,EAAIM,EAAGN,EAAGC,EAAGC,EAAGH,EAAGX,EAAa,GAAIX,EAAE,EAAE,CAAC,EACzCsB,EAAIO,EAAGP,EAAGC,EAAGC,EAAGC,EAAGP,EAAa,EAAIlB,EAAE,EAAE,CAAC,EACzCyB,EAAII,EAAGJ,EAAGH,EAAGC,EAAGC,EAAGf,EAAa,GAAIT,EAAE,EAAE,CAAC,EACzCwB,EAAIK,EAAGL,EAAGC,EAAGH,EAAGC,EAAGP,EAAa,GAAIhB,EAAE,EAAE,CAAC,EACzCuB,EAAIM,EAAGN,EAAGC,EAAGC,EAAGH,EAAGf,EAAa,GAAIP,EAAE,EAAE,CAAC,EACzCsB,EAAIO,EAAGP,EAAGC,EAAGC,EAAGC,EAAGX,EAAa,EAAId,EAAE,EAAE,CAAC,EACzCyB,EAAII,EAAGJ,EAAGH,EAAGC,EAAGC,EAAGH,EAAa,GAAIrB,EAAE,EAAE,CAAC,EACzCwB,EAAIK,EAAGL,EAAGC,EAAGH,EAAGC,EAAGX,EAAa,GAAIZ,EAAE,EAAE,CAAC,EACzCuB,EAAIM,EAAGN,EAAGC,EAAGC,EAAGH,EAAGH,EAAa,GAAInB,EAAE,EAAE,CAAC,EACzCsB,EAAIO,EAAGP,EAAGC,EAAGC,EAAGC,EAAGf,EAAa,EAAIV,EAAE,EAAE,CAAC,EACzCyB,EAAII,EAAGJ,EAAGH,EAAGC,EAAGC,EAAGP,EAAa,GAAIjB,EAAE,EAAE,CAAC,EACzCwB,EAAIK,EAAGL,EAAGC,EAAGH,EAAGC,EAAGf,EAAa,GAAIR,EAAE,EAAE,CAAC,EACzCuB,EAAIM,EAAGN,EAAGC,EAAGC,EAAGH,EAAGP,EAAa,GAAIf,EAAE,EAAE,CAAC,EAGzCK,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAIiB,EAAK,EACpBjB,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAIkB,EAAK,EACpBlB,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAImB,EAAK,EACpBnB,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAIoB,EAAK,CACjC,EAES,YAAa,UAAY,CAErB,IAAI5E,EAAO,KAAK,MACZG,EAAYH,EAAK,MAEjBiF,EAAa,KAAK,YAAc,EAChCC,EAAYlF,EAAK,SAAW,EAGhCG,EAAU+E,IAAc,CAAC,GAAK,KAAS,GAAKA,EAAY,GAExD,IAAIC,EAAc/H,EAAK,MAAM6H,EAAa,UAAW,EACjDG,EAAcH,EAClB9E,GAAa+E,EAAY,KAAQ,GAAM,GAAK,EAAE,GACvCC,GAAe,EAAOA,IAAgB,IAAO,UAC7CA,GAAe,GAAOA,IAAgB,GAAO,WAEpDhF,GAAa+E,EAAY,KAAQ,GAAM,GAAK,EAAE,GACvCE,GAAe,EAAOA,IAAgB,IAAO,UAC7CA,GAAe,GAAOA,IAAgB,GAAO,WAGpDpF,EAAK,UAAYG,EAAU,OAAS,GAAK,EAGzC,KAAK,SAAQ,EAOb,QAJIS,EAAO,KAAK,MACZ4C,EAAI5C,EAAK,MAGJ7B,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAExB,IAAIsG,EAAM7B,EAAEzE,CAAC,EAEbyE,EAAEzE,CAAC,GAAOsG,GAAO,EAAOA,IAAQ,IAAO,UAC7BA,GAAO,GAAOA,IAAQ,GAAO,UACxD,CAGa,OAAOzE,CACpB,EAES,MAAO,UAAY,CACf,IAAI1B,EAAQgE,EAAO,MAAM,KAAK,IAAI,EAClC,OAAAhE,EAAM,MAAQ,KAAK,MAAM,MAAK,EAEvBA,CACpB,CACA,CAAM,EAED,SAAS2F,EAAGJ,EAAGC,EAAGC,EAAGC,EAAGU,EAAGjL,EAAGkL,EAAG,CAC7B,IAAIC,EAAIf,GAAMC,EAAIC,EAAM,CAACD,EAAIE,GAAMU,EAAIC,EACvC,OAASC,GAAKnL,EAAMmL,IAAO,GAAKnL,GAAOqK,CAChD,CAEK,SAASI,EAAGL,EAAGC,EAAGC,EAAGC,EAAGU,EAAGjL,EAAGkL,EAAG,CAC7B,IAAIC,EAAIf,GAAMC,EAAIE,EAAMD,EAAI,CAACC,GAAMU,EAAIC,EACvC,OAASC,GAAKnL,EAAMmL,IAAO,GAAKnL,GAAOqK,CAChD,CAEK,SAASK,EAAGN,EAAGC,EAAGC,EAAGC,EAAGU,EAAGjL,EAAGkL,EAAG,CAC7B,IAAIC,EAAIf,GAAKC,EAAIC,EAAIC,GAAKU,EAAIC,EAC9B,OAASC,GAAKnL,EAAMmL,IAAO,GAAKnL,GAAOqK,CAChD,CAEK,SAASM,EAAGP,EAAGC,EAAGC,EAAGC,EAAGU,EAAGjL,EAAGkL,EAAG,CAC7B,IAAIC,EAAIf,GAAKE,GAAKD,EAAI,CAACE,IAAMU,EAAIC,EACjC,OAASC,GAAKnL,EAAMmL,IAAO,GAAKnL,GAAOqK,CAChD,CAgBK5G,EAAE,IAAMoF,EAAO,cAAcE,CAAG,EAgBhCtF,EAAE,QAAUoF,EAAO,kBAAkBE,CAAG,CAC7C,EAAG,IAAI,EAGCjG,EAAS,GAEjB,CAAC,wFC3QC,SAAUJ,EAAMC,EAAS,CAGzBC,UAA2BD,EAAQS,GAAiB,CAUtD,GAAEP,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIW,EAAIX,EACJY,EAAQD,EAAE,IACVO,EAAYN,EAAM,UAClBmF,EAASnF,EAAM,OACf+C,EAAShD,EAAE,KAGX2H,EAAI,CAAA,EAKJC,EAAO5E,EAAO,KAAOoC,EAAO,OAAO,CACnC,SAAU,UAAY,CAClB,KAAK,MAAQ,IAAI7E,EAAU,KAAK,CAC5B,WAAY,WACZ,WAAY,UACZ,UACjB,CAAc,CACd,EAES,gBAAiB,SAAUgF,EAAG3C,EAAQ,CAYlC,QAVI8C,EAAI,KAAK,MAAM,MAGfiB,EAAIjB,EAAE,CAAC,EACPkB,EAAIlB,EAAE,CAAC,EACPmB,EAAInB,EAAE,CAAC,EACPoB,EAAIpB,EAAE,CAAC,EACP/I,EAAI+I,EAAE,CAAC,EAGFzE,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,GAAIA,EAAI,GACJ0G,EAAE1G,CAAC,EAAIsE,EAAE3C,EAAS3B,CAAC,EAAI,MACpB,CACH,IAAIyG,EAAIC,EAAE1G,EAAI,CAAC,EAAI0G,EAAE1G,EAAI,CAAC,EAAI0G,EAAE1G,EAAI,EAAE,EAAI0G,EAAE1G,EAAI,EAAE,EAClD0G,EAAE1G,CAAC,EAAKyG,GAAK,EAAMA,IAAM,EAC9C,CAEiB,IAAID,GAAMd,GAAK,EAAMA,IAAM,IAAOhK,EAAIgL,EAAE1G,CAAC,EACrCA,EAAI,GACJwG,IAAOb,EAAIC,EAAM,CAACD,EAAIE,GAAM,WACrB7F,EAAI,GACXwG,IAAMb,EAAIC,EAAIC,GAAK,WACZ7F,EAAI,GACXwG,IAAOb,EAAIC,EAAMD,EAAIE,EAAMD,EAAIC,GAAM,WAErCW,IAAMb,EAAIC,EAAIC,GAAK,UAGvBnK,EAAImK,EACJA,EAAID,EACJA,EAAKD,GAAK,GAAOA,IAAM,EACvBA,EAAID,EACJA,EAAIc,CACrB,CAGa/B,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAIiB,EAAK,EACpBjB,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAIkB,EAAK,EACpBlB,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAImB,EAAK,EACpBnB,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAIoB,EAAK,EACpBpB,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI/I,EAAK,CACjC,EAES,YAAa,UAAY,CAErB,IAAIuF,EAAO,KAAK,MACZG,EAAYH,EAAK,MAEjBiF,EAAa,KAAK,YAAc,EAChCC,EAAYlF,EAAK,SAAW,EAGhC,OAAAG,EAAU+E,IAAc,CAAC,GAAK,KAAS,GAAKA,EAAY,GACxD/E,GAAa+E,EAAY,KAAQ,GAAM,GAAK,EAAE,EAAI,KAAK,MAAMD,EAAa,UAAW,EACrF9E,GAAa+E,EAAY,KAAQ,GAAM,GAAK,EAAE,EAAID,EAClDjF,EAAK,SAAWG,EAAU,OAAS,EAGnC,KAAK,SAAQ,EAGN,KAAK,KACzB,EAES,MAAO,UAAY,CACf,IAAIjB,EAAQgE,EAAO,MAAM,KAAK,IAAI,EAClC,OAAAhE,EAAM,MAAQ,KAAK,MAAM,MAAK,EAEvBA,CACpB,CACA,CAAM,EAgBDpB,EAAE,KAAOoF,EAAO,cAAcwC,CAAI,EAgBlC5H,EAAE,SAAWoF,EAAO,kBAAkBwC,CAAI,CAC/C,EAAE,EAGMvI,EAAS,IAEjB,CAAC,wFCrJC,SAAUJ,EAAMC,EAAS,CAGzBC,UAA2BD,EAAQS,GAAiB,CAUtD,GAAEP,EAAM,SAAUC,EAAU,CAE3B,OAAC,SAAUC,EAAM,CAEb,IAAIU,EAAIX,EACJY,EAAQD,EAAE,IACVO,EAAYN,EAAM,UAClBmF,EAASnF,EAAM,OACf+C,EAAShD,EAAE,KAGX0F,EAAI,CAAA,EACJmC,EAAI,CAAA,GAGP,UAAY,CACT,SAASC,EAAQJ,EAAG,CAEhB,QADIK,EAAQzI,EAAK,KAAKoI,CAAC,EACdM,EAAS,EAAGA,GAAUD,EAAOC,IAClC,GAAI,EAAEN,EAAIM,GACN,MAAO,GAIf,MAAO,EACpB,CAES,SAASC,EAAkBP,EAAG,CAC1B,OAASA,GAAKA,EAAI,IAAM,WAAe,CACpD,CAIS,QAFIA,EAAI,EACJQ,EAAS,EACNA,EAAS,IACRJ,EAAQJ,CAAC,IACLQ,EAAS,IACTxC,EAAEwC,CAAM,EAAID,EAAkB3I,EAAK,IAAIoI,EAAG,EAAI,CAAC,CAAC,GAEpDG,EAAEK,CAAM,EAAID,EAAkB3I,EAAK,IAAIoI,EAAG,EAAI,CAAC,CAAC,EAEhDQ,KAGJR,GAEb,GAAM,EAGD,IAAIC,EAAI,CAAA,EAKJQ,EAASnF,EAAO,OAASoC,EAAO,OAAO,CACvC,SAAU,UAAY,CAClB,KAAK,MAAQ,IAAI7E,EAAU,KAAKmF,EAAE,MAAM,CAAC,CAAC,CACvD,EAES,gBAAiB,SAAUH,EAAG3C,EAAQ,CAelC,QAbI8C,EAAI,KAAK,MAAM,MAGfiB,EAAIjB,EAAE,CAAC,EACPkB,EAAIlB,EAAE,CAAC,EACPmB,EAAInB,EAAE,CAAC,EACPoB,EAAIpB,EAAE,CAAC,EACP/I,EAAI+I,EAAE,CAAC,EACP0C,EAAI1C,EAAE,CAAC,EACP2C,EAAI3C,EAAE,CAAC,EACP4C,EAAI5C,EAAE,CAAC,EAGFzE,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,GAAIA,EAAI,GACJ0G,EAAE1G,CAAC,EAAIsE,EAAE3C,EAAS3B,CAAC,EAAI,MACpB,CACH,IAAIsH,EAAUZ,EAAE1G,EAAI,EAAE,EAClBuH,GAAYD,GAAW,GAAOA,IAAY,IAC9BA,GAAW,GAAOA,IAAY,IAC9BA,IAAY,EAExBE,EAAUd,EAAE1G,EAAI,CAAC,EACjByH,GAAYD,GAAW,GAAOA,IAAY,KAC9BA,GAAW,GAAOA,IAAY,IAC9BA,IAAY,GAE5Bd,EAAE1G,CAAC,EAAIuH,EAASb,EAAE1G,EAAI,CAAC,EAAIyH,EAASf,EAAE1G,EAAI,EAAE,CACjE,CAEiB,IAAI0H,EAAOhM,EAAIyL,EAAM,CAACzL,EAAI0L,EACtBO,EAAOjC,EAAIC,EAAMD,EAAIE,EAAMD,EAAIC,EAE/BgC,GAAWlC,GAAK,GAAOA,IAAM,IAAQA,GAAK,GAAOA,IAAM,KAASA,GAAK,GAAOA,IAAM,IAClFmC,GAAWnM,GAAK,GAAOA,IAAM,IAAQA,GAAK,GAAOA,IAAM,KAASA,GAAK,EAAOA,IAAM,IAElFoM,EAAKT,EAAIQ,EAASH,EAAKd,EAAE5G,CAAC,EAAI0G,EAAE1G,CAAC,EACjC+H,EAAKH,EAASD,EAElBN,EAAID,EACJA,EAAID,EACJA,EAAIzL,EACJA,EAAKmK,EAAIiC,EAAM,EACfjC,EAAID,EACJA,EAAID,EACJA,EAAID,EACJA,EAAKoC,EAAKC,EAAM,CACjC,CAGatD,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAIiB,EAAK,EACpBjB,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAIkB,EAAK,EACpBlB,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAImB,EAAK,EACpBnB,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAIoB,EAAK,EACpBpB,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI/I,EAAK,EACpB+I,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI0C,EAAK,EACpB1C,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI2C,EAAK,EACpB3C,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI4C,EAAK,CACjC,EAES,YAAa,UAAY,CAErB,IAAIpG,EAAO,KAAK,MACZG,EAAYH,EAAK,MAEjBiF,EAAa,KAAK,YAAc,EAChCC,EAAYlF,EAAK,SAAW,EAGhC,OAAAG,EAAU+E,IAAc,CAAC,GAAK,KAAS,GAAKA,EAAY,GACxD/E,GAAa+E,EAAY,KAAQ,GAAM,GAAK,EAAE,EAAI9H,EAAK,MAAM6H,EAAa,UAAW,EACrF9E,GAAa+E,EAAY,KAAQ,GAAM,GAAK,EAAE,EAAID,EAClDjF,EAAK,SAAWG,EAAU,OAAS,EAGnC,KAAK,SAAQ,EAGN,KAAK,KACzB,EAES,MAAO,UAAY,CACf,IAAIjB,EAAQgE,EAAO,MAAM,KAAK,IAAI,EAClC,OAAAhE,EAAM,MAAQ,KAAK,MAAM,MAAK,EAEvBA,CACpB,CACA,CAAM,EAgBDpB,EAAE,OAASoF,EAAO,cAAc+C,CAAM,EAgBtCnI,EAAE,WAAaoF,EAAO,kBAAkB+C,CAAM,CACnD,EAAG,IAAI,EAGC9I,EAAS,MAEjB,CAAC,wFCtMC,SAAUJ,EAAMC,EAAS+J,EAAO,CAGhC9J,EAAA,QAA2BD,EAAQS,EAAA,EAAmBuJ,GAAA,CAAmB,CAU3E,GAAE9J,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIW,EAAIX,EACJY,EAAQD,EAAE,IACVO,EAAYN,EAAM,UAClB+C,EAAShD,EAAE,KACXmI,EAASnF,EAAO,OAKhBmG,EAASnG,EAAO,OAASmF,EAAO,OAAO,CACvC,SAAU,UAAY,CAClB,KAAK,MAAQ,IAAI5H,EAAU,KAAK,CAC5B,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACrD,CAAc,CACd,EAES,YAAa,UAAY,CACrB,IAAIuC,EAAOqF,EAAO,YAAY,KAAK,IAAI,EAEvC,OAAArF,EAAK,UAAY,EAEVA,CACpB,CACA,CAAM,EAgBD9C,EAAE,OAASmI,EAAO,cAAcgB,CAAM,EAgBtCnJ,EAAE,WAAamI,EAAO,kBAAkBgB,CAAM,CACnD,EAAE,EAGM9J,EAAS,MAEjB,CAAC,wFC/EC,SAAUJ,EAAMC,EAAS+J,EAAO,CAGhC9J,EAAA,QAA2BD,EAAQS,EAAA,EAAmBuJ,GAAA,CAAqB,CAU7E,GAAE9J,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIW,EAAIX,EACJY,EAAQD,EAAE,IACVoF,EAASnF,EAAM,OACfiD,EAAQlD,EAAE,IACVoJ,EAAUlG,EAAM,KAChBmG,EAAenG,EAAM,UACrBF,EAAShD,EAAE,KAEf,SAASsJ,GAAiB,CACtB,OAAOF,EAAQ,OAAO,MAAMA,EAAS,SAAS,CACvD,CAGK,IAAIvB,EAAI,CACJyB,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,SAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,UAAY,UAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,SAAU,EAC7EA,EAAe,WAAY,SAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,SAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,UAAY,UAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,SAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,UAAY,SAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,UAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,SAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,SAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,UAAY,SAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,UAAY,UAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,UAAY,UAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,SAAU,EAC7EA,EAAe,WAAY,SAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,SAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,UAAY,UAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,UAAY,SAAU,EAC7EA,EAAe,UAAY,SAAU,EAAGA,EAAe,UAAY,UAAU,EAC7EA,EAAe,WAAY,SAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,SAAU,EAAGA,EAAe,WAAY,UAAU,CACtF,EAGS3B,EAAI,CAAA,GACP,UAAY,CACT,QAAS1G,EAAI,EAAGA,EAAI,GAAIA,IACpB0G,EAAE1G,CAAC,EAAIqI,EAAc,CAElC,GAAM,EAKD,IAAIC,EAASvG,EAAO,OAASoC,EAAO,OAAO,CACvC,SAAU,UAAY,CAClB,KAAK,MAAQ,IAAIiE,EAAa,KAAK,CAC/B,IAAID,EAAQ,KAAK,WAAY,UAAU,EAAG,IAAIA,EAAQ,KAAK,WAAY,UAAU,EACjF,IAAIA,EAAQ,KAAK,WAAY,UAAU,EAAG,IAAIA,EAAQ,KAAK,WAAY,UAAU,EACjF,IAAIA,EAAQ,KAAK,WAAY,UAAU,EAAG,IAAIA,EAAQ,KAAK,WAAY,SAAU,EACjF,IAAIA,EAAQ,KAAK,UAAY,UAAU,EAAG,IAAIA,EAAQ,KAAK,WAAY,SAAU,CAClG,CAAc,CACd,EAES,gBAAiB,SAAU7D,EAAG3C,EAAQ,CAiDlC,QA/CI8C,EAAI,KAAK,MAAM,MAEf8D,EAAK9D,EAAE,CAAC,EACR+D,EAAK/D,EAAE,CAAC,EACRgE,EAAKhE,EAAE,CAAC,EACRiE,EAAKjE,EAAE,CAAC,EACRkE,EAAKlE,EAAE,CAAC,EACRmE,EAAKnE,EAAE,CAAC,EACRoE,EAAKpE,EAAE,CAAC,EACRqE,EAAKrE,EAAE,CAAC,EAERsE,EAAMR,EAAG,KACTS,EAAMT,EAAG,IACTU,EAAMT,EAAG,KACTU,EAAMV,EAAG,IACTW,EAAMV,EAAG,KACTW,EAAMX,EAAG,IACTY,EAAMX,EAAG,KACTY,EAAMZ,EAAG,IACTa,EAAMZ,EAAG,KACTa,EAAMb,EAAG,IACTc,EAAMb,EAAG,KACTc,EAAMd,EAAG,IACTe,EAAMd,EAAG,KACTe,EAAMf,EAAG,IACTgB,EAAMf,EAAG,KACTgB,EAAMhB,EAAG,IAGTiB,EAAKhB,EACLiB,EAAKhB,EACLiB,EAAKhB,EACLiB,EAAKhB,EACLxB,GAAKyB,EACLgB,GAAKf,EACLgB,GAAKf,EACLgB,GAAKf,EACLgB,GAAKf,EACLgB,GAAKf,EACLgB,GAAKf,EACLgB,GAAKf,EACLgB,GAAKf,EACLgB,EAAKf,EACLgB,GAAKf,EACLgB,GAAKf,EAGA9J,GAAI,EAAGA,GAAI,GAAIA,KAAK,CACzB,IAAI8K,GACAC,EAGAC,GAAKtE,EAAE1G,EAAC,EAGZ,GAAIA,GAAI,GACJ+K,EAAMC,GAAG,KAAO1G,EAAE3C,EAAS3B,GAAI,CAAC,EAAQ,EACxC8K,GAAME,GAAG,IAAO1G,EAAE3C,EAAS3B,GAAI,EAAI,CAAC,EAAI,MACrC,CAEH,IAAIsH,GAAWZ,EAAE1G,GAAI,EAAE,EACnBiL,GAAW3D,GAAQ,KACnB4D,GAAW5D,GAAQ,IACnB6D,IAAaF,KAAa,EAAMC,IAAY,KAASD,KAAa,EAAMC,IAAY,IAAQD,KAAa,EACzGG,IAAaF,KAAa,EAAMD,IAAY,KAASC,KAAa,EAAMD,IAAY,KAASC,KAAa,EAAMD,IAAY,IAG5HzD,GAAWd,EAAE1G,GAAI,CAAC,EAClBqL,GAAW7D,GAAQ,KACnB8D,GAAW9D,GAAQ,IACnB+D,IAAaF,KAAa,GAAOC,IAAY,KAASD,IAAY,EAAMC,KAAa,IAAQD,KAAa,EAC1GG,IAAaF,KAAa,GAAOD,IAAY,KAASC,IAAY,EAAMD,KAAa,KAASC,KAAa,EAAMD,IAAY,IAG7HI,GAAO/E,EAAE1G,GAAI,CAAC,EACd0L,GAAOD,GAAI,KACXE,GAAOF,GAAI,IAEXG,GAAQlF,EAAE1G,GAAI,EAAE,EAChB6L,GAAQD,GAAK,KACbE,GAAQF,GAAK,IAEjBd,GAAMM,GAAUO,GAChBZ,EAAMI,GAAUO,IAASZ,KAAQ,EAAMM,KAAY,EAAK,EAAI,GAC5DN,GAAMA,GAAMU,GACZT,EAAMA,EAAMQ,IAAYT,KAAQ,EAAMU,KAAY,EAAK,EAAI,GAC3DV,GAAMA,GAAMgB,GACZf,EAAMA,EAAMc,IAAUf,KAAQ,EAAMgB,KAAU,EAAK,EAAI,GAEvDd,GAAG,KAAOD,EACVC,GAAG,IAAOF,EAC/B,CAEiB,IAAIiB,GAAQzB,GAAKE,GAAO,CAACF,GAAKI,GAC1BsB,GAAQzB,GAAKE,GAAO,CAACF,GAAKI,EAC1BsB,GAAQlC,EAAKE,EAAOF,EAAKrC,GAAOuC,EAAKvC,GACrCwE,GAAQlC,EAAKE,EAAOF,EAAKG,GAAOD,EAAKC,GAErCgC,IAAYpC,IAAO,GAAOC,GAAM,IAASD,GAAM,GAAQC,IAAO,IAAQD,GAAM,GAAOC,IAAO,GAC1FoC,IAAYpC,IAAO,GAAOD,GAAM,IAASC,GAAM,GAAQD,IAAO,IAAQC,GAAM,GAAOD,IAAO,GAC1FsC,IAAY/B,KAAO,GAAOC,IAAM,KAASD,KAAO,GAAOC,IAAM,KAASD,IAAM,GAAOC,KAAO,GAC1F+B,IAAY/B,KAAO,GAAOD,IAAM,KAASC,KAAO,GAAOD,IAAM,KAASC,IAAM,GAAOD,KAAO,GAG1FiC,GAAM3F,EAAE5G,EAAC,EACTwM,GAAMD,GAAG,KACTE,GAAMF,GAAG,IAETG,GAAM7B,GAAKyB,GACXK,GAAM/B,GAAKyB,IAAYK,KAAQ,EAAM7B,KAAO,EAAK,EAAI,GACrD6B,GAAMA,GAAMV,GACZW,GAAMA,GAAMZ,IAAQW,KAAQ,EAAMV,KAAQ,EAAK,EAAI,GACnDU,GAAMA,GAAMD,GACZE,GAAMA,GAAMH,IAAQE,KAAQ,EAAMD,KAAQ,EAAK,EAAI,GACnDC,GAAMA,GAAM5B,GACZ6B,GAAMA,GAAM5B,GAAQ2B,KAAQ,EAAM5B,KAAQ,EAAK,EAAI,GAGnD8B,GAAMR,GAAUF,GAChBW,GAAMV,GAAUF,IAASW,KAAQ,EAAMR,KAAY,EAAK,EAAI,GAGhExB,GAAKF,GACLG,GAAKF,EACLD,GAAKF,GACLG,EAAKF,GACLD,GAAKF,GACLG,GAAKF,GACLA,GAAMF,GAAKqC,GAAO,EAClBpC,GAAMF,GAAKuC,IAAQpC,KAAO,EAAMF,KAAO,EAAK,EAAI,GAAM,EACtDD,GAAK1C,GACL2C,GAAKF,GACLzC,GAAKuC,EACLE,GAAKD,EACLD,EAAKF,EACLG,EAAKF,EACLA,EAAM0C,GAAME,GAAO,EACnB7C,EAAM4C,GAAME,IAAQ7C,IAAO,EAAM0C,KAAQ,EAAK,EAAI,GAAM,CACzE,CAGa1D,EAAMT,EAAG,IAAQS,EAAMgB,EACvBzB,EAAG,KAAQQ,EAAMgB,GAAOf,IAAQ,EAAMgB,IAAO,EAAK,EAAI,GACtDd,EAAMV,EAAG,IAAQU,EAAMgB,EACvB1B,EAAG,KAAQS,EAAMgB,GAAOf,IAAQ,EAAMgB,IAAO,EAAK,EAAI,GACtDd,EAAMX,EAAG,IAAQW,EAAMe,GACvB1B,EAAG,KAAQU,EAAMzB,IAAO0B,IAAQ,EAAMe,KAAO,EAAK,EAAI,GACtDb,EAAMZ,EAAG,IAAQY,EAAMe,GACvB3B,EAAG,KAAQW,EAAMe,IAAOd,IAAQ,EAAMe,KAAO,EAAK,EAAI,GACtDb,EAAMb,EAAG,IAAQa,EAAMe,GACvB5B,EAAG,KAAQY,EAAMe,IAAOd,IAAQ,EAAMe,KAAO,EAAK,EAAI,GACtDb,EAAMd,EAAG,IAAQc,EAAMe,GACvB7B,EAAG,KAAQa,EAAMe,IAAOd,IAAQ,EAAMe,KAAO,EAAK,EAAI,GACtDb,EAAMf,EAAG,IAAQe,EAAMe,EACvB9B,EAAG,KAAQc,EAAMe,IAAOd,IAAQ,EAAMe,IAAO,EAAK,EAAI,GACtDb,EAAMhB,EAAG,IAAQgB,EAAMe,GACvB/B,EAAG,KAAQe,EAAMe,IAAOd,IAAQ,EAAMe,KAAO,EAAK,EAAI,EACnE,EAES,YAAa,UAAY,CAErB,IAAI5J,EAAO,KAAK,MACZG,EAAYH,EAAK,MAEjBiF,EAAa,KAAK,YAAc,EAChCC,EAAYlF,EAAK,SAAW,EAGhCG,EAAU+E,IAAc,CAAC,GAAK,KAAS,GAAKA,EAAY,GACxD/E,GAAa+E,EAAY,MAAS,IAAO,GAAK,EAAE,EAAI,KAAK,MAAMD,EAAa,UAAW,EACvF9E,GAAa+E,EAAY,MAAS,IAAO,GAAK,EAAE,EAAID,EACpDjF,EAAK,SAAWG,EAAU,OAAS,EAGnC,KAAK,SAAQ,EAGb,IAAIS,EAAO,KAAK,MAAM,MAAK,EAG3B,OAAOA,CACpB,EAES,MAAO,UAAY,CACf,IAAI1B,EAAQgE,EAAO,MAAM,KAAK,IAAI,EAClC,OAAAhE,EAAM,MAAQ,KAAK,MAAM,MAAK,EAEvBA,CACpB,EAES,UAAW,KAAK,EACzB,CAAM,EAgBDpB,EAAE,OAASoF,EAAO,cAAcmE,CAAM,EAgBtCvJ,EAAE,WAAaoF,EAAO,kBAAkBmE,CAAM,CACnD,EAAE,EAGMlK,EAAS,MAEjB,CAAC,wFCrUC,SAAUJ,EAAMC,EAAS+J,EAAO,CAGhC9J,EAAA,QAA2BD,EAAQS,EAAA,EAAmBuJ,GAAA,EAAuB6E,IAAmB,CAUlG,GAAE3O,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIW,EAAIX,EACJ6D,EAAQlD,EAAE,IACVoJ,EAAUlG,EAAM,KAChBmG,EAAenG,EAAM,UACrBF,EAAShD,EAAE,KACXuJ,EAASvG,EAAO,OAKhBgL,EAAShL,EAAO,OAASuG,EAAO,OAAO,CACvC,SAAU,UAAY,CAClB,KAAK,MAAQ,IAAIF,EAAa,KAAK,CAC/B,IAAID,EAAQ,KAAK,WAAY,UAAU,EAAG,IAAIA,EAAQ,KAAK,WAAY,SAAU,EACjF,IAAIA,EAAQ,KAAK,WAAY,SAAU,EAAG,IAAIA,EAAQ,KAAK,UAAY,UAAU,EACjF,IAAIA,EAAQ,KAAK,WAAY,UAAU,EAAG,IAAIA,EAAQ,KAAK,WAAY,UAAU,EACjF,IAAIA,EAAQ,KAAK,WAAY,UAAU,EAAG,IAAIA,EAAQ,KAAK,WAAY,UAAU,CAClG,CAAc,CACd,EAES,YAAa,UAAY,CACrB,IAAItG,EAAOyG,EAAO,YAAY,KAAK,IAAI,EAEvC,OAAAzG,EAAK,UAAY,GAEVA,CACpB,CACA,CAAM,EAgBD9C,EAAE,OAASuJ,EAAO,cAAcyE,CAAM,EAgBtChO,EAAE,WAAauJ,EAAO,kBAAkByE,CAAM,CACnD,EAAE,EAGM3O,EAAS,MAEjB,CAAC,wFClFC,SAAUJ,EAAMC,EAAS+J,EAAO,CAGhC9J,EAAA,QAA2BD,EAAQS,EAAA,EAAmBuJ,GAAA,CAAqB,CAU7E,GAAE9J,EAAM,SAAUC,EAAU,CAE3B,OAAC,SAAUC,EAAM,CAEb,IAAIU,EAAIX,EACJY,EAAQD,EAAE,IACVO,EAAYN,EAAM,UAClBmF,EAASnF,EAAM,OACfiD,EAAQlD,EAAE,IACVoJ,EAAUlG,EAAM,KAChBF,EAAShD,EAAE,KAGXiO,EAAc,CAAA,EACdC,EAAc,CAAA,EACdC,EAAkB,CAAA,GAGrB,UAAY,CAGT,QADI3G,EAAI,EAAG4G,EAAI,EACN3G,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzBwG,EAAYzG,EAAI,EAAI4G,CAAC,GAAM3G,EAAI,IAAMA,EAAI,GAAK,EAAK,GAEnD,IAAI4G,EAAOD,EAAI,EACXE,GAAQ,EAAI9G,EAAI,EAAI4G,GAAK,EAC7B5G,EAAI6G,EACJD,EAAIE,CACjB,CAGS,QAAS9G,EAAI,EAAGA,EAAI,EAAGA,IACnB,QAAS4G,EAAI,EAAGA,EAAI,EAAGA,IACnBF,EAAW1G,EAAI,EAAI4G,CAAC,EAAIA,GAAM,EAAI5G,EAAI,EAAI4G,GAAK,EAAK,EAM5D,QADIG,EAAO,EACFtN,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAIzB,QAHIuN,EAAmB,EACnBC,EAAmB,EAEdtN,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,GAAIoN,EAAO,EAAM,CACb,IAAIG,GAAe,GAAKvN,GAAK,EACzBuN,EAAc,GACdD,GAAoB,GAAKC,EAEzBF,GAAoB,GAAME,EAAc,EAEjE,CAGqBH,EAAO,IAEPA,EAAQA,GAAQ,EAAK,IAErBA,IAAS,CAE9B,CAEaJ,EAAgBlN,CAAC,EAAImI,EAAQ,OAAOoF,EAAkBC,CAAgB,CACnF,CACA,GAAM,EAGD,IAAIpJ,EAAI,CAAA,GACP,UAAY,CACT,QAASpE,EAAI,EAAGA,EAAI,GAAIA,IACpBoE,EAAEpE,CAAC,EAAImI,EAAQ,OAAM,CAElC,GAAM,EAKD,IAAIuF,EAAO3L,EAAO,KAAOoC,EAAO,OAAO,CASnC,IAAKA,EAAO,IAAI,OAAO,CACnB,aAAc,GAC3B,CAAU,EAED,SAAU,UAAY,CAElB,QADIwJ,EAAQ,KAAK,OAAS,CAAA,EACjB3N,EAAI,EAAGA,EAAI,GAAIA,IACpB2N,EAAM3N,CAAC,EAAI,IAAImI,EAAQ,KAG3B,KAAK,WAAa,KAAO,EAAI,KAAK,IAAI,cAAgB,EACnE,EAES,gBAAiB,SAAU7D,EAAG3C,EAAQ,CAMlC,QAJIgM,EAAQ,KAAK,OACbC,EAAkB,KAAK,UAAY,EAG9B5N,EAAI,EAAGA,EAAI4N,EAAiB5N,IAAK,CAEtC,IAAI6N,EAAOvJ,EAAE3C,EAAS,EAAI3B,CAAC,EACvB8N,EAAOxJ,EAAE3C,EAAS,EAAI3B,EAAI,CAAC,EAG/B6N,GACOA,GAAO,EAAOA,IAAQ,IAAO,UAC7BA,GAAO,GAAOA,IAAQ,GAAO,WAEpCC,GACOA,GAAQ,EAAOA,IAAS,IAAO,UAC/BA,GAAQ,GAAOA,IAAS,GAAO,WAItC,IAAIC,EAAOJ,EAAM3N,CAAC,EAClB+N,EAAK,MAAQD,EACbC,EAAK,KAAQF,CAC9B,CAGa,QAASG,EAAQ,EAAGA,EAAQ,GAAIA,IAAS,CAErC,QAASzH,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAGxB,QADI0H,EAAO,EAAGC,EAAO,EACZf,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAIY,EAAOJ,EAAMpH,EAAI,EAAI4G,CAAC,EAC1Bc,GAAQF,EAAK,KACbG,GAAQH,EAAK,GACtC,CAGqB,IAAII,EAAK/J,EAAEmC,CAAC,EACZ4H,EAAG,KAAOF,EACVE,EAAG,IAAOD,CAC/B,CACiB,QAAS3H,EAAI,EAAGA,EAAI,EAAGA,IAUnB,QARI6H,EAAMhK,GAAGmC,EAAI,GAAK,CAAC,EACnB8H,EAAMjK,GAAGmC,EAAI,GAAK,CAAC,EACnB+H,EAASD,EAAI,KACbE,EAASF,EAAI,IAGbJ,EAAOG,EAAI,MAASE,GAAU,EAAMC,IAAW,IAC/CL,EAAOE,EAAI,KAASG,GAAU,EAAMD,IAAW,IAC1CnB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAIY,EAAOJ,EAAMpH,EAAI,EAAI4G,CAAC,EAC1BY,EAAK,MAAQE,EACbF,EAAK,KAAQG,CACtC,CAIiB,QAASM,EAAY,EAAGA,EAAY,GAAIA,IAAa,CACjD,IAAIP,EACAC,EAGAH,EAAOJ,EAAMa,CAAS,EACtBC,EAAUV,EAAK,KACfW,EAAUX,EAAK,IACfY,EAAY3B,EAAYwB,CAAS,EAGjCG,EAAY,IACZV,EAAQQ,GAAWE,EAAcD,IAAa,GAAKC,EACnDT,EAAQQ,GAAWC,EAAcF,IAAa,GAAKE,IAEnDV,EAAQS,GAAYC,EAAY,GAAQF,IAAa,GAAKE,EAC1DT,EAAQO,GAAYE,EAAY,GAAQD,IAAa,GAAKC,GAI9D,IAAIC,EAAUxK,EAAE6I,EAAWuB,CAAS,CAAC,EACrCI,EAAQ,KAAOX,EACfW,EAAQ,IAAOV,CACpC,CAGiB,IAAIW,EAAKzK,EAAE,CAAC,EACR0K,EAASnB,EAAM,CAAC,EACpBkB,EAAG,KAAOC,EAAO,KACjBD,EAAG,IAAOC,EAAO,IAGjB,QAASvI,EAAI,EAAGA,EAAI,EAAGA,IACnB,QAAS4G,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAExB,IAAIqB,EAAYjI,EAAI,EAAI4G,EACpBY,EAAOJ,EAAMa,CAAS,EACtBO,EAAQ3K,EAAEoK,CAAS,EACnBQ,EAAU5K,GAAImC,EAAI,GAAK,EAAK,EAAI4G,CAAC,EACjC8B,EAAU7K,GAAImC,EAAI,GAAK,EAAK,EAAI4G,CAAC,EAGrCY,EAAK,KAAOgB,EAAM,KAAQ,CAACC,EAAQ,KAAOC,EAAQ,KAClDlB,EAAK,IAAOgB,EAAM,IAAQ,CAACC,EAAQ,IAAOC,EAAQ,GAC3E,CAIiB,IAAIlB,EAAOJ,EAAM,CAAC,EACduB,EAAgBhC,EAAgBc,CAAK,EACzCD,EAAK,MAAQmB,EAAc,KAC3BnB,EAAK,KAAQmB,EAAc,GAC5C,CACA,EAES,YAAa,UAAY,CAErB,IAAIjO,EAAO,KAAK,MACZG,EAAYH,EAAK,MACJ,KAAK,YAAc,EACpC,IAAIkF,EAAYlF,EAAK,SAAW,EAC5BkO,EAAgB,KAAK,UAAY,GAGrC/N,EAAU+E,IAAc,CAAC,GAAK,GAAQ,GAAKA,EAAY,GACvD/E,GAAY/C,EAAK,MAAM8H,EAAY,GAAKgJ,CAAa,EAAIA,IAAmB,GAAK,CAAC,GAAK,IACvFlO,EAAK,SAAWG,EAAU,OAAS,EAGnC,KAAK,SAAQ,EASb,QANIuM,EAAQ,KAAK,OACbyB,EAAoB,KAAK,IAAI,aAAe,EAC5CC,EAAoBD,EAAoB,EAGxCE,EAAY,CAAA,EACPtP,EAAI,EAAGA,EAAIqP,EAAmBrP,IAAK,CAExC,IAAI+N,EAAOJ,EAAM3N,CAAC,EACdyO,EAAUV,EAAK,KACfW,EAAUX,EAAK,IAGnBU,GACOA,GAAW,EAAOA,IAAY,IAAO,UACrCA,GAAW,GAAOA,IAAY,GAAO,WAE5CC,GACOA,GAAW,EAAOA,IAAY,IAAO,UACrCA,GAAW,GAAOA,IAAY,GAAO,WAI5CY,EAAU,KAAKZ,CAAO,EACtBY,EAAU,KAAKb,CAAO,CACvC,CAGa,OAAO,IAAInP,EAAU,KAAKgQ,EAAWF,CAAiB,CACnE,EAES,MAAO,UAAY,CAIf,QAHIjP,EAAQgE,EAAO,MAAM,KAAK,IAAI,EAE9BwJ,EAAQxN,EAAM,OAAS,KAAK,OAAO,MAAM,CAAC,EACrCH,EAAI,EAAGA,EAAI,GAAIA,IACpB2N,EAAM3N,CAAC,EAAI2N,EAAM3N,CAAC,EAAE,MAAK,EAG7B,OAAOG,CACpB,CACA,CAAM,EAgBDpB,EAAE,KAAOoF,EAAO,cAAcuJ,CAAI,EAgBlC3O,EAAE,SAAWoF,EAAO,kBAAkBuJ,CAAI,CAC/C,EAAG,IAAI,EAGCtP,EAAS,IAEjB,CAAC,wFCrUC,SAAUJ,EAAMC,EAAS,CAGzBC,UAA2BD,EAAQS,GAAiB,CAUtD,GAAEP,EAAM,SAAUC,EAAU,CAE5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAWC,OAAC,SAAUC,EAAM,CAEb,IAAIU,EAAIX,EACJY,EAAQD,EAAE,IACVO,EAAYN,EAAM,UAClBmF,EAASnF,EAAM,OACf+C,EAAShD,EAAE,KAGXwQ,EAAMjQ,EAAU,OAAO,CACvB,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3D,EAAI,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAAI,EAAI,EAAI,EAAG,GAAI,GAAK,EAC5D,EAAG,GAAI,GAAK,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAK,EAAG,GAC3D,EAAI,EAAG,GAAI,GAAK,EAAI,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAAI,GAAK,EAAI,EAAI,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAG,GAAI,GAAK,EAAI,EAAI,EAAG,GAAK,EAAG,GAAI,EAAE,CAAC,EAC9DkQ,EAAMlQ,EAAU,OAAO,CACvB,EAAG,GAAK,EAAI,EAAI,EAAI,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAAK,EAAG,GAC3D,EAAG,GAAK,EAAI,EAAI,EAAG,GAAK,EAAG,GAAI,GAAI,GAAK,EAAG,GAAK,EAAI,EAAI,EAAI,EAC5D,GAAK,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAC5D,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAK,EAAI,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAAI,GAC3D,GAAI,GAAI,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAK,EAAI,EAAI,EAAG,EAAE,CAAC,EAC/DmQ,EAAMnQ,EAAU,OAAO,CACtB,GAAI,GAAI,GAAI,GAAK,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAK,EAAI,EAAI,EAAI,EAC9D,EAAG,EAAK,EAAG,GAAI,GAAK,EAAI,EAAG,GAAK,EAAG,GAAI,GAAK,EAAG,GAAK,EAAG,GAAI,GAC3D,GAAI,GAAK,EAAI,EAAG,GAAK,EAAG,GAAI,GAAI,GAAK,EAAG,GAAK,EAAI,EAAG,GAAK,EAAI,EAC3D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAK,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAG,GAC9D,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAAI,GAAK,EAAG,GAAI,GAAI,GAAI,GAAK,EAAI,EAAI,EAAG,EAC/DoQ,EAAMpQ,EAAU,OAAO,CACvB,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAK,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAK,EAC5D,EAAG,GAAI,GAAK,EAAG,GAAK,EAAI,EAAG,GAAK,EAAI,EAAG,GAAK,EAAI,EAAG,GAAI,GAAI,GAC3D,EAAI,EAAG,GAAI,GAAK,EAAI,EAAI,EAAG,GAAI,GAAI,GAAK,EAAG,GAAI,GAAI,GAAK,EAAI,EAC5D,GAAK,EAAI,EAAG,GAAI,GAAI,GAAK,EAAG,GAAK,EAAI,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAC7D,EAAI,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAAK,EAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAE/DqQ,EAAOrQ,EAAU,OAAO,CAAE,EAAY,WAAY,WAAY,WAAY,UAAU,CAAC,EACrFsQ,EAAOtQ,EAAU,OAAO,CAAE,WAAY,WAAY,WAAY,WAAY,CAAU,CAAC,EAKrFuQ,EAAY9N,EAAO,UAAYoC,EAAO,OAAO,CAC7C,SAAU,UAAY,CAClB,KAAK,MAAS7E,EAAU,OAAO,CAAC,WAAY,WAAY,WAAY,UAAY,UAAU,CAAC,CACxG,EAES,gBAAiB,SAAUgF,EAAG3C,EAAQ,CAGlC,QAAS3B,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAEzB,IAAIuE,EAAW5C,EAAS3B,EACpBwE,EAAaF,EAAEC,CAAQ,EAG3BD,EAAEC,CAAQ,GACHC,GAAc,EAAOA,IAAe,IAAO,UAC3CA,GAAc,GAAOA,IAAe,GAAO,UAEnE,CAEa,IAAIC,EAAK,KAAK,MAAM,MAChBoG,EAAK8E,EAAI,MACTG,EAAKF,EAAI,MACTG,EAAKR,EAAI,MACTS,EAAKR,EAAI,MACTS,EAAKR,EAAI,MACTS,EAAKR,EAAI,MAGT1F,EAAIE,EAAIC,EAAIE,EAAIE,EAChB4F,EAAIC,EAAIC,EAAIC,EAAIC,EAEpBJ,EAAKnG,EAAKvF,EAAE,CAAC,EACb2L,EAAKlG,EAAKzF,EAAE,CAAC,EACb4L,EAAKlG,EAAK1F,EAAE,CAAC,EACb6L,EAAKjG,EAAK5F,EAAE,CAAC,EACb8L,EAAKhG,EAAK9F,EAAE,CAAC,EAGb,QADI+B,EACKxG,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACzBwG,EAAKwD,EAAM1F,EAAE3C,EAAOoO,EAAG/P,CAAC,CAAC,EAAG,EACxBA,EAAE,GACTwG,GAAMgK,EAAGtG,EAAGC,EAAGE,CAAE,EAAIQ,EAAG,CAAC,EACX7K,EAAE,GAChBwG,GAAMiK,EAAGvG,EAAGC,EAAGE,CAAE,EAAIQ,EAAG,CAAC,EACX7K,EAAE,GAChBwG,GAAMkK,EAAGxG,EAAGC,EAAGE,CAAE,EAAIQ,EAAG,CAAC,EACX7K,EAAE,GAChBwG,GAAMmK,EAAGzG,EAAGC,EAAGE,CAAE,EAAIQ,EAAG,CAAC,EAEzBrE,GAAMoK,EAAG1G,EAAGC,EAAGE,CAAE,EAAIQ,EAAG,CAAC,EAEtBrE,EAAIA,EAAE,EACNA,EAAKqK,EAAKrK,EAAEyJ,EAAGjQ,CAAC,CAAC,EACjBwG,EAAKA,EAAE+D,EAAI,EACXP,EAAKO,EACLA,EAAKF,EACLA,EAAKwG,EAAK1G,EAAI,EAAE,EAChBA,EAAKD,EACLA,EAAK1D,EAELA,EAAK2J,EAAK7L,EAAE3C,EAAOqO,EAAGhQ,CAAC,CAAC,EAAG,EACvBA,EAAE,GACTwG,GAAMoK,EAAGR,EAAGC,EAAGC,CAAE,EAAIR,EAAG,CAAC,EACX9P,EAAE,GAChBwG,GAAMmK,EAAGP,EAAGC,EAAGC,CAAE,EAAIR,EAAG,CAAC,EACX9P,EAAE,GAChBwG,GAAMkK,EAAGN,EAAGC,EAAGC,CAAE,EAAIR,EAAG,CAAC,EACX9P,EAAE,GAChBwG,GAAMiK,EAAGL,EAAGC,EAAGC,CAAE,EAAIR,EAAG,CAAC,EAEzBtJ,GAAMgK,EAAGJ,EAAGC,EAAGC,CAAE,EAAIR,EAAG,CAAC,EAEtBtJ,EAAIA,EAAE,EACNA,EAAKqK,EAAKrK,EAAE0J,EAAGlQ,CAAC,CAAC,EACjBwG,EAAKA,EAAE+J,EAAI,EACXJ,EAAKI,EACLA,EAAKD,EACLA,EAAKO,EAAKR,EAAI,EAAE,EAChBA,EAAKD,EACLA,EAAK5J,EAGTA,EAAQ/B,EAAE,CAAC,EAAI0F,EAAKmG,EAAI,EACxB7L,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI4F,EAAKkG,EAAI,EACxB9L,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI8F,EAAK4F,EAAI,EACxB1L,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAIuF,EAAKoG,EAAI,EACxB3L,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAIyF,EAAKmG,EAAI,EACxB5L,EAAE,CAAC,EAAK+B,CACrB,EAES,YAAa,UAAY,CAErB,IAAIvF,EAAO,KAAK,MACZG,EAAYH,EAAK,MAEjBiF,EAAa,KAAK,YAAc,EAChCC,EAAYlF,EAAK,SAAW,EAGhCG,EAAU+E,IAAc,CAAC,GAAK,KAAS,GAAKA,EAAY,GACxD/E,GAAa+E,EAAY,KAAQ,GAAM,GAAK,EAAE,GACvCD,GAAc,EAAOA,IAAe,IAAO,UAC3CA,GAAc,GAAOA,IAAe,GAAO,WAElDjF,EAAK,UAAYG,EAAU,OAAS,GAAK,EAGzC,KAAK,SAAQ,EAOb,QAJIS,EAAO,KAAK,MACZ4C,EAAI5C,EAAK,MAGJ7B,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAExB,IAAIsG,EAAM7B,EAAEzE,CAAC,EAGbyE,EAAEzE,CAAC,GAAOsG,GAAO,EAAOA,IAAQ,IAAO,UAC7BA,GAAO,GAAOA,IAAQ,GAAO,UACxD,CAGa,OAAOzE,CACpB,EAES,MAAO,UAAY,CACf,IAAI1B,EAAQgE,EAAO,MAAM,KAAK,IAAI,EAClC,OAAAhE,EAAM,MAAQ,KAAK,MAAM,MAAK,EAEvBA,CACpB,CACA,CAAM,EAGD,SAASqQ,EAAGjK,EAAG4G,EAAG2D,EAAG,CACjB,OAASvK,EAAM4G,EAAM2D,CAE9B,CAEK,SAASL,EAAGlK,EAAG4G,EAAG2D,EAAG,CACjB,OAAUvK,EAAI4G,EAAQ,CAAC5G,EAAIuK,CACpC,CAEK,SAASJ,EAAGnK,EAAG4G,EAAG2D,EAAG,CACjB,OAAUvK,EAAM,CAAE4G,GAAQ2D,CACnC,CAEK,SAASH,EAAGpK,EAAG4G,EAAG2D,EAAG,CACjB,OAAUvK,EAAMuK,EAAQ3D,EAAI,CAAE2D,CACvC,CAEK,SAASF,EAAGrK,EAAG4G,EAAG2D,EAAG,CACjB,OAASvK,GAAO4G,EAAK,CAAE2D,EAEhC,CAEK,SAASD,EAAKtK,EAAEE,EAAG,CACf,OAAQF,GAAGE,EAAMF,IAAK,GAAGE,CAClC,CAiBK1H,EAAE,UAAYoF,EAAO,cAAc0L,CAAS,EAgB5C9Q,EAAE,cAAgBoF,EAAO,kBAAkB0L,CAAS,CACzD,EAAO,EAGCzR,EAAS,SAEjB,CAAC,wFC1QC,SAAUJ,EAAMC,EAAS,CAGzBC,UAA2BD,EAAQS,GAAiB,CAUtD,GAAEP,EAAM,SAAUC,EAAU,EAE1B,UAAY,CAET,IAAIW,EAAIX,EACJY,EAAQD,EAAE,IACVE,EAAOD,EAAM,KACbqB,EAAQtB,EAAE,IACV+B,EAAOT,EAAM,KACb0B,EAAShD,EAAE,KAKJgD,EAAO,KAAO9C,EAAK,OAAO,CAWjC,KAAM,SAAU6C,EAAQ/N,EAAK,CAEzB+N,EAAS,KAAK,QAAU,IAAIA,EAAO,KAG/B,OAAO/N,GAAO,WACdA,EAAM+M,EAAK,MAAM/M,CAAG,GAIxB,IAAIgd,EAAkBjP,EAAO,UACzBkP,EAAuBD,EAAkB,EAGzChd,EAAI,SAAWid,IACfjd,EAAM+N,EAAO,SAAS/N,CAAG,GAI7BA,EAAI,MAAK,EAWT,QARIkd,EAAO,KAAK,MAAQld,EAAI,MAAK,EAC7Bmd,EAAO,KAAK,MAAQnd,EAAI,MAAK,EAG7Bod,EAAYF,EAAK,MACjBG,EAAYF,EAAK,MAGZlR,EAAI,EAAGA,EAAI+Q,EAAiB/Q,IACjCmR,EAAUnR,CAAC,GAAK,WAChBoR,EAAUpR,CAAC,GAAK,UAEpBiR,EAAK,SAAWC,EAAK,SAAWF,EAGhC,KAAK,MAAK,CACvB,EASS,MAAO,UAAY,CAEf,IAAIlP,EAAS,KAAK,QAGlBA,EAAO,MAAK,EACZA,EAAO,OAAO,KAAK,KAAK,CACrC,EAcS,OAAQ,SAAUF,EAAe,CAC7B,YAAK,QAAQ,OAAOA,CAAa,EAG1B,IACpB,EAgBS,SAAU,SAAUA,EAAe,CAE/B,IAAIE,EAAS,KAAK,QAGduP,EAAYvP,EAAO,SAASF,CAAa,EAC7CE,EAAO,MAAK,EACZ,IAAIwP,EAAOxP,EAAO,SAAS,KAAK,MAAM,MAAK,EAAG,OAAOuP,CAAS,CAAC,EAE/D,OAAOC,CACpB,CACA,CAAM,CACN,GAAE,CAGF,CAAC,wFC9IC,SAAUtT,EAAMC,EAAS+J,EAAO,CAGhC9J,EAAA,QAA2BD,EAAQS,EAAA,EAAmBuJ,GAAA,EAAqB6E,IAAiB,CAU9F,GAAE3O,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIW,EAAIX,EACJY,EAAQD,EAAE,IACVE,EAAOD,EAAM,KACbM,EAAYN,EAAM,UAClB+C,EAAShD,EAAE,KACXmI,EAASnF,EAAO,OAChBwP,EAAOxP,EAAO,KAKdyP,EAASzP,EAAO,OAAS9C,EAAK,OAAO,CAQrC,IAAKA,EAAK,OAAO,CACb,QAAS,IAAI,GACb,OAAQiI,EACR,WAAY,IACzB,CAAU,EAaD,KAAM,SAAU3T,EAAK,CACjB,KAAK,IAAM,KAAK,IAAI,OAAOA,CAAG,CAC3C,EAcS,QAAS,SAAUke,EAAUC,EAAM,CAkB/B,QAhBIne,EAAM,KAAK,IAGX+d,EAAOC,EAAK,OAAOhe,EAAI,OAAQke,CAAQ,EAGvCE,EAAarS,EAAU,OAAM,EAC7BsS,EAAatS,EAAU,OAAO,CAAC,CAAU,CAAC,EAG1CuS,EAAkBF,EAAW,MAC7BG,EAAkBF,EAAW,MAC7BG,EAAUxe,EAAI,QACdye,EAAaze,EAAI,WAGdse,EAAgB,OAASE,GAAS,CACrC,IAAIE,EAAQX,EAAK,OAAOI,CAAI,EAAE,SAASE,CAAU,EACjDN,EAAK,MAAK,EAQV,QALIY,EAAaD,EAAM,MACnBE,EAAmBD,EAAW,OAG9BE,EAAeH,EACVjS,EAAI,EAAGA,EAAIgS,EAAYhS,IAAK,CACjCoS,EAAed,EAAK,SAASc,CAAY,EACzCd,EAAK,MAAK,EAMV,QAHIe,EAAoBD,EAAa,MAG5BlS,EAAI,EAAGA,EAAIiS,EAAkBjS,IAClCgS,EAAWhS,CAAC,GAAKmS,EAAkBnS,CAAC,CAE7D,CAEiByR,EAAW,OAAOM,CAAK,EACvBH,EAAgB,CAAC,GAClC,CACa,OAAAH,EAAW,SAAWI,EAAU,EAEzBJ,CACpB,CACA,CAAM,EAmBD5S,EAAE,OAAS,SAAU0S,EAAUC,EAAMne,EAAK,CACtC,OAAOie,EAAO,OAAOje,CAAG,EAAE,QAAQke,EAAUC,CAAI,CACzD,CACA,EAAE,EAGMtT,EAAS,MAEjB,CAAC,wFChJC,SAAUJ,EAAMC,EAAS+J,EAAO,CAGhC9J,EAAA,QAA2BD,EAAQS,EAAA,EAAmBuJ,GAAA,EAAmB6E,IAAiB,CAU5F,GAAE3O,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIW,EAAIX,EACJY,EAAQD,EAAE,IACVE,EAAOD,EAAM,KACbM,EAAYN,EAAM,UAClB+C,EAAShD,EAAE,KACXsF,EAAMtC,EAAO,IAMbuQ,EAASvQ,EAAO,OAAS9C,EAAK,OAAO,CAQrC,IAAKA,EAAK,OAAO,CACb,QAAS,IAAI,GACb,OAAQoF,EACR,WAAY,CACzB,CAAU,EAaD,KAAM,SAAU9Q,EAAK,CACjB,KAAK,IAAM,KAAK,IAAI,OAAOA,CAAG,CAC3C,EAcS,QAAS,SAAUke,EAAUC,EAAM,CAkB/B,QAjBIO,EAGA1e,EAAM,KAAK,IAGXuO,EAASvO,EAAI,OAAO,OAAM,EAG1Boe,EAAarS,EAAU,OAAM,EAG7BuS,EAAkBF,EAAW,MAC7BI,EAAUxe,EAAI,QACdye,EAAaze,EAAI,WAGdse,EAAgB,OAASE,GAAS,CACjCE,GACAnQ,EAAO,OAAOmQ,CAAK,EAEvBA,EAAQnQ,EAAO,OAAO2P,CAAQ,EAAE,SAASC,CAAI,EAC7C5P,EAAO,MAAK,EAGZ,QAAS9B,EAAI,EAAGA,EAAIgS,EAAYhS,IAC5BiS,EAAQnQ,EAAO,SAASmQ,CAAK,EAC7BnQ,EAAO,MAAK,EAGhB6P,EAAW,OAAOM,CAAK,CACxC,CACa,OAAAN,EAAW,SAAWI,EAAU,EAEzBJ,CACpB,CACA,CAAM,EAmBD5S,EAAE,OAAS,SAAU0S,EAAUC,EAAMne,EAAK,CACtC,OAAO+e,EAAO,OAAO/e,CAAG,EAAE,QAAQke,EAAUC,CAAI,CACzD,CACA,EAAE,EAGMtT,EAAS,MAEjB,CAAC,uFCrIC,SAAUJ,EAAMC,EAAS+J,EAAO,CAGhC9J,EAAA,QAA2BD,EAAQS,EAAA,EAAmBuJ,GAAA,CAAmB,CAU3E,GAAE9J,EAAM,SAAUC,EAAU,CAK3BA,EAAS,IAAI,QAAW,SAAUE,EAAW,CAEzC,IAAIS,EAAIX,EACJY,EAAQD,EAAE,IACVE,EAAOD,EAAM,KACbM,EAAYN,EAAM,UAClBgC,EAAyBhC,EAAM,uBAC/BqB,EAAQtB,EAAE,IACHsB,EAAM,KACjB,IAAIkS,EAASlS,EAAM,OACf0B,EAAShD,EAAE,KACXuT,EAASvQ,EAAO,OAUhByQ,EAASxT,EAAM,OAASgC,EAAuB,OAAO,CAMtD,IAAK/B,EAAK,OAAM,EAgBhB,gBAAiB,SAAUlL,EAAKR,EAAK,CACjC,OAAO,KAAK,OAAO,KAAK,gBAAiBQ,EAAKR,CAAG,CAC9D,EAgBS,gBAAiB,SAAUQ,EAAKR,EAAK,CACjC,OAAO,KAAK,OAAO,KAAK,gBAAiBQ,EAAKR,CAAG,CAC9D,EAaS,KAAM,SAAUkf,EAAW1e,EAAKR,EAAK,CAEjC,KAAK,IAAM,KAAK,IAAI,OAAOA,CAAG,EAG9B,KAAK,WAAakf,EAClB,KAAK,KAAO1e,EAGZ,KAAK,MAAK,CACvB,EASS,MAAO,UAAY,CAEfiN,EAAuB,MAAM,KAAK,IAAI,EAGtC,KAAK,SAAQ,CAC1B,EAcS,QAAS,SAAU0R,EAAY,CAE3B,YAAK,QAAQA,CAAU,EAGhB,KAAK,SAAQ,CACjC,EAgBS,SAAU,SAAUA,EAAY,CAExBA,GACA,KAAK,QAAQA,CAAU,EAI3B,IAAIC,EAAqB,KAAK,YAAW,EAEzC,OAAOA,CACpB,EAES,QAAS,IAAI,GAEb,OAAQ,IAAI,GAEZ,gBAAiB,EAEjB,gBAAiB,EAejB,cAAgB,UAAY,CACxB,SAASC,EAAqB7e,EAAK,CAC/B,OAAI,OAAOA,GAAO,SACP8e,EAEAC,CAE5B,CAEa,OAAO,SAAUC,EAAQ,CACrB,MAAO,CACH,QAAS,SAAU7X,EAASnH,EAAKR,EAAK,CAClC,OAAOqf,EAAqB7e,CAAG,EAAE,QAAQgf,EAAQ7X,EAASnH,EAAKR,CAAG,CAC3F,EAEqB,QAAS,SAAUyf,EAAYjf,EAAKR,EAAK,CACrC,OAAOqf,EAAqB7e,CAAG,EAAE,QAAQgf,EAAQC,EAAYjf,EAAKR,CAAG,CAC9F,CACA,CACA,CACA,EAAU,CACV,CAAM,EAOkByL,EAAM,aAAewT,EAAO,OAAO,CAClD,YAAa,UAAY,CAErB,IAAIS,EAAuB,KAAK,SAAS,EAAS,EAElD,OAAOA,CACpB,EAES,UAAW,CACpB,CAAM,EAKD,IAAIC,EAASnU,EAAE,KAAO,CAAA,EAKlBoU,EAAkBnU,EAAM,gBAAkBC,EAAK,OAAO,CAatD,gBAAiB,SAAU8T,EAAQK,EAAI,CACnC,OAAO,KAAK,UAAU,OAAOL,EAAQK,CAAE,CACpD,EAcS,gBAAiB,SAAUL,EAAQK,EAAI,CACnC,OAAO,KAAK,UAAU,OAAOL,EAAQK,CAAE,CACpD,EAYS,KAAM,SAAUL,EAAQK,EAAI,CACxB,KAAK,QAAUL,EACf,KAAK,IAAMK,CACxB,CACA,CAAM,EAKGC,EAAMH,EAAO,IAAO,UAAY,CAIhC,IAAIG,EAAMF,EAAgB,OAAM,EAKhCE,EAAI,UAAYA,EAAI,OAAO,CAWvB,aAAc,SAAU9T,EAAOoC,EAAQ,CAEnC,IAAIoR,EAAS,KAAK,QACdzR,EAAYyR,EAAO,UAGvBO,EAAS,KAAK,KAAM/T,EAAOoC,EAAQL,CAAS,EAC5CyR,EAAO,aAAaxT,EAAOoC,CAAM,EAGjC,KAAK,WAAapC,EAAM,MAAMoC,EAAQA,EAASL,CAAS,CACzE,CACA,CAAU,EAKD+R,EAAI,UAAYA,EAAI,OAAO,CAWvB,aAAc,SAAU9T,EAAOoC,EAAQ,CAEnC,IAAIoR,EAAS,KAAK,QACdzR,EAAYyR,EAAO,UAGnBQ,EAAYhU,EAAM,MAAMoC,EAAQA,EAASL,CAAS,EAGtDyR,EAAO,aAAaxT,EAAOoC,CAAM,EACjC2R,EAAS,KAAK,KAAM/T,EAAOoC,EAAQL,CAAS,EAG5C,KAAK,WAAaiS,CACnC,CACA,CAAU,EAED,SAASD,EAAS/T,EAAOoC,EAAQL,EAAW,CACxC,IAAI2Q,EAGAmB,EAAK,KAAK,IAGVA,GACAnB,EAAQmB,EAGR,KAAK,IAAM9U,GAEX2T,EAAQ,KAAK,WAIjB,QAASjS,EAAI,EAAGA,EAAIsB,EAAWtB,IAC3BT,EAAMoC,EAAS3B,CAAC,GAAKiS,EAAMjS,CAAC,CAE7C,CAES,OAAOqT,CAChB,IAKSG,EAAQzU,EAAE,IAAM,CAAA,EAKhB0U,EAAQD,EAAM,MAAQ,CAatB,IAAK,SAAUvS,EAAMK,EAAW,CAY5B,QAVIC,EAAiBD,EAAY,EAG7BoS,EAAgBnS,EAAiBN,EAAK,SAAWM,EAGjDoS,EAAeD,GAAiB,GAAOA,GAAiB,GAAOA,GAAiB,EAAKA,EAGrFE,EAAe,CAAA,EACV5T,EAAI,EAAGA,EAAI0T,EAAe1T,GAAK,EACpC4T,EAAa,KAAKD,CAAW,EAEjC,IAAIE,EAAUvU,EAAU,OAAOsU,EAAcF,CAAa,EAG1DzS,EAAK,OAAO4S,CAAO,CAChC,EAaS,MAAO,SAAU5S,EAAM,CAEnB,IAAIyS,EAAgBzS,EAAK,MAAOA,EAAK,SAAW,IAAO,CAAC,EAAI,IAG5DA,EAAK,UAAYyS,CAC9B,CACA,EAOuB1U,EAAM,YAAcwT,EAAO,OAAO,CAOhD,IAAKA,EAAO,IAAI,OAAO,CACnB,KAAMa,EACN,QAASI,CACtB,CAAU,EAED,MAAO,UAAY,CACf,IAAIK,EAGJtB,EAAO,MAAM,KAAK,IAAI,EAGtB,IAAIjf,EAAM,KAAK,IACX6f,EAAK7f,EAAI,GACTU,EAAOV,EAAI,KAGX,KAAK,YAAc,KAAK,gBACxBugB,EAAc7f,EAAK,iBAEnB6f,EAAc7f,EAAK,gBAEnB,KAAK,eAAiB,GAGtB,KAAK,OAAS,KAAK,MAAM,WAAa6f,EACtC,KAAK,MAAM,KAAK,KAAMV,GAAMA,EAAG,KAAK,GAEpC,KAAK,MAAQU,EAAY,KAAK7f,EAAM,KAAMmf,GAAMA,EAAG,KAAK,EACxD,KAAK,MAAM,UAAYU,EAExC,EAES,gBAAiB,SAAUvU,EAAOoC,EAAQ,CACtC,KAAK,MAAM,aAAapC,EAAOoC,CAAM,CAClD,EAES,YAAa,UAAY,CACrB,IAAIsR,EAGAY,EAAU,KAAK,IAAI,QAGvB,OAAI,KAAK,YAAc,KAAK,iBAExBA,EAAQ,IAAI,KAAK,MAAO,KAAK,SAAS,EAGtCZ,EAAuB,KAAK,SAAS,EAAS,IAG9CA,EAAuB,KAAK,SAAS,EAAS,EAG9CY,EAAQ,MAAMZ,CAAoB,GAG/BA,CACpB,EAES,UAAW,IAAI,EACxB,CAAM,EAeD,IAAIc,EAAe/U,EAAM,aAAeC,EAAK,OAAO,CAoBhD,KAAM,SAAU+U,EAAc,CAC1B,KAAK,MAAMA,CAAY,CACpC,EAiBS,SAAU,SAAUC,EAAW,CAC3B,OAAQA,GAAa,KAAK,WAAW,UAAU,IAAI,CAChE,CACA,CAAM,EAKGC,EAAWnV,EAAE,OAAS,CAAA,EAKtBoV,EAAmBD,EAAS,QAAU,CActC,UAAW,SAAUF,EAAc,CAC/B,IAAIrU,EAGAqT,EAAagB,EAAa,WAC1BtC,EAAOsC,EAAa,KAGxB,OAAItC,EACA/R,EAAYL,EAAU,OAAO,CAAC,WAAY,UAAU,CAAC,EAAE,OAAOoS,CAAI,EAAE,OAAOsB,CAAU,EAErFrT,EAAYqT,EAGTrT,EAAU,SAAS4S,CAAM,CAC7C,EAeS,MAAO,SAAU6B,EAAY,CACzB,IAAI1C,EAGAsB,EAAaT,EAAO,MAAM6B,CAAU,EAGpCC,EAAkBrB,EAAW,MAGjC,OAAIqB,EAAgB,CAAC,GAAK,YAAcA,EAAgB,CAAC,GAAK,aAE1D3C,EAAOpS,EAAU,OAAO+U,EAAgB,MAAM,EAAG,CAAC,CAAC,EAGnDA,EAAgB,OAAO,EAAG,CAAC,EAC3BrB,EAAW,UAAY,IAGpBe,EAAa,OAAO,CAAE,WAAYf,EAAY,KAAMtB,EAAM,CAC9E,CACA,EAKSoB,EAAqB9T,EAAM,mBAAqBC,EAAK,OAAO,CAM5D,IAAKA,EAAK,OAAO,CACb,OAAQkV,CACrB,CAAU,EAoBD,QAAS,SAAUpB,EAAQ7X,EAASnH,EAAKR,EAAK,CAE1CA,EAAM,KAAK,IAAI,OAAOA,CAAG,EAGzB,IAAI+gB,EAAYvB,EAAO,gBAAgBhf,EAAKR,CAAG,EAC3Cyf,EAAasB,EAAU,SAASpZ,CAAO,EAGvCqZ,EAAYD,EAAU,IAG1B,OAAOP,EAAa,OAAO,CACvB,WAAYf,EACZ,IAAKjf,EACL,GAAIwgB,EAAU,GACd,UAAWxB,EACX,KAAMwB,EAAU,KAChB,QAASA,EAAU,QACnB,UAAWxB,EAAO,UAClB,UAAWxf,EAAI,MAChC,CAAc,CACd,EAmBS,QAAS,SAAUwf,EAAQC,EAAYjf,EAAKR,EAAK,CAE7CA,EAAM,KAAK,IAAI,OAAOA,CAAG,EAGzByf,EAAa,KAAK,OAAOA,EAAYzf,EAAI,MAAM,EAG/C,IAAIihB,EAAYzB,EAAO,gBAAgBhf,EAAKR,CAAG,EAAE,SAASyf,EAAW,UAAU,EAE/E,OAAOwB,CACpB,EAiBS,OAAQ,SAAUxB,EAAYyB,EAAQ,CAClC,OAAI,OAAOzB,GAAc,SACdyB,EAAO,MAAMzB,EAAY,IAAI,EAE7BA,CAExB,CACA,CAAM,EAKG0B,EAAQ3V,EAAE,IAAM,CAAA,EAKhB4V,EAAaD,EAAM,QAAU,CAkB7B,QAAS,SAAUjD,EAAUM,EAAS6C,EAAQlD,EAAM5P,EAAQ,CAOxD,GALK4P,IACDA,EAAOpS,EAAU,OAAO,GAAG,CAAC,GAI3BwC,EAGD,IAAI/N,EAAMue,EAAO,OAAO,CAAE,QAASP,EAAU6C,EAAQ,OAAQ9S,CAAM,CAAE,EAAE,QAAQ2P,EAAUC,CAAI,MAF7F,KAAI3d,EAAMue,EAAO,OAAO,CAAE,QAASP,EAAU6C,EAAQ,EAAE,QAAQnD,EAAUC,CAAI,EAOjF,IAAI0B,EAAK9T,EAAU,OAAOvL,EAAI,MAAM,MAAMge,CAAO,EAAG6C,EAAS,CAAC,EAC9D,OAAA7gB,EAAI,SAAWge,EAAU,EAGlBgC,EAAa,OAAO,CAAE,IAAKhgB,EAAK,GAAIqf,EAAI,KAAM1B,EAAM,CACxE,CACA,EAMSmB,EAAsB7T,EAAM,oBAAsB8T,EAAmB,OAAO,CAM5E,IAAKA,EAAmB,IAAI,OAAO,CAC/B,IAAK6B,CAClB,CAAU,EAmBD,QAAS,SAAU5B,EAAQ7X,EAASuW,EAAUle,EAAK,CAE/CA,EAAM,KAAK,IAAI,OAAOA,CAAG,EAGzB,IAAIshB,EAAgBthB,EAAI,IAAI,QAAQke,EAAUsB,EAAO,QAASA,EAAO,OAAQxf,EAAI,KAAMA,EAAI,MAAM,EAGjGA,EAAI,GAAKshB,EAAc,GAGvB,IAAI7B,EAAaF,EAAmB,QAAQ,KAAK,KAAMC,EAAQ7X,EAAS2Z,EAAc,IAAKthB,CAAG,EAG9F,OAAAyf,EAAW,MAAM6B,CAAa,EAEvB7B,CACpB,EAmBS,QAAS,SAAUD,EAAQC,EAAYvB,EAAUle,EAAK,CAElDA,EAAM,KAAK,IAAI,OAAOA,CAAG,EAGzByf,EAAa,KAAK,OAAOA,EAAYzf,EAAI,MAAM,EAG/C,IAAIshB,EAAgBthB,EAAI,IAAI,QAAQke,EAAUsB,EAAO,QAASA,EAAO,OAAQC,EAAW,KAAMzf,EAAI,MAAM,EAGxGA,EAAI,GAAKshB,EAAc,GAGvB,IAAIL,EAAY1B,EAAmB,QAAQ,KAAK,KAAMC,EAAQC,EAAY6B,EAAc,IAAKthB,CAAG,EAEhG,OAAOihB,CACpB,CACA,CAAM,CACN,GAGA,CAAC,wFC93BC,SAAUxW,EAAMC,EAAS+J,EAAO,CAGhC9J,EAAA,QAA2BD,EAAQS,EAAA,EAAmBuJ,EAAA,CAAwB,CAUhF,GAAE9J,EAAM,SAAUC,EAAU,CAK3B,OAAAA,EAAS,KAAK,IAAO,UAAY,CAC7B,IAAI0W,EAAM1W,EAAS,IAAI,gBAAgB,OAAM,EAE7C0W,EAAI,UAAYA,EAAI,OAAO,CACvB,aAAc,SAAUvV,EAAOoC,EAAQ,CAEnC,IAAIoR,EAAS,KAAK,QACdzR,EAAYyR,EAAO,UAEvBgC,EAA4B,KAAK,KAAMxV,EAAOoC,EAAQL,EAAWyR,CAAM,EAGvE,KAAK,WAAaxT,EAAM,MAAMoC,EAAQA,EAASL,CAAS,CACrE,CACA,CAAM,EAEDwT,EAAI,UAAYA,EAAI,OAAO,CACvB,aAAc,SAAUvV,EAAOoC,EAAQ,CAEnC,IAAIoR,EAAS,KAAK,QACdzR,EAAYyR,EAAO,UAGnBQ,EAAYhU,EAAM,MAAMoC,EAAQA,EAASL,CAAS,EAEtDyT,EAA4B,KAAK,KAAMxV,EAAOoC,EAAQL,EAAWyR,CAAM,EAGvE,KAAK,WAAaQ,CAC/B,CACA,CAAM,EAED,SAASwB,EAA4BxV,EAAOoC,EAAQL,EAAWyR,EAAQ,CACnE,IAAIiC,EAGA5B,EAAK,KAAK,IAGVA,GACA4B,EAAY5B,EAAG,MAAM,CAAC,EAGtB,KAAK,IAAM,QAEX4B,EAAY,KAAK,WAErBjC,EAAO,aAAaiC,EAAW,CAAC,EAGhC,QAAShV,EAAI,EAAGA,EAAIsB,EAAWtB,IAC3BT,EAAMoC,EAAS3B,CAAC,GAAKgV,EAAUhV,CAAC,CAE7C,CAEK,OAAO8U,CACZ,IAGQ1W,EAAS,KAAK,GAEtB,CAAC,wFC/EC,SAAUJ,EAAMC,EAAS+J,EAAO,CAGhC9J,EAAA,QAA2BD,EAAQS,EAAA,EAAmBuJ,EAAA,CAAwB,CAUhF,GAAE9J,EAAM,SAAUC,EAAU,CAK3B,OAAAA,EAAS,KAAK,IAAO,UAAY,CAC7B,IAAI6W,EAAM7W,EAAS,IAAI,gBAAgB,OAAM,EAEzC8W,EAAYD,EAAI,UAAYA,EAAI,OAAO,CACvC,aAAc,SAAU1V,EAAOoC,EAAQ,CAEnC,IAAIoR,EAAS,KAAK,QACdzR,EAAYyR,EAAO,UACnBK,EAAK,KAAK,IACV+B,EAAU,KAAK,SAGf/B,IACA+B,EAAU,KAAK,SAAW/B,EAAG,MAAM,CAAC,EAGpC,KAAK,IAAM,QAEf,IAAI4B,EAAYG,EAAQ,MAAM,CAAC,EAC/BpC,EAAO,aAAaiC,EAAW,CAAC,EAGhCG,EAAQ7T,EAAY,CAAC,EAAK6T,EAAQ7T,EAAY,CAAC,EAAI,EAAK,EAGxD,QAAStB,EAAI,EAAGA,EAAIsB,EAAWtB,IAC3BT,EAAMoC,EAAS3B,CAAC,GAAKgV,EAAUhV,CAAC,CAEjD,CACA,CAAM,EAED,OAAAiV,EAAI,UAAYC,EAETD,CACZ,IAGQ7W,EAAS,KAAK,GAEtB,CAAC,wFCzDC,SAAUJ,EAAMC,EAAS+J,EAAO,CAGhC9J,EAAA,QAA2BD,EAAQS,EAAA,EAAmBuJ,EAAA,CAAwB,CAUhF,GAAE9J,EAAM,SAAUC,EAAU,CAE5B;AAAA;AAAA;AAAA;AAAA,GAKC,OAAAA,EAAS,KAAK,WAAc,UAAY,CACpC,IAAIgX,EAAahX,EAAS,IAAI,gBAAgB,OAAM,EAEvD,SAASiX,EAAQnS,EACjB,CACC,IAAMA,GAAQ,GAAM,OAAU,IAAM,CACpC,IAAIoS,EAAMpS,GAAQ,GAAI,IAClBqS,EAAMrS,GAAQ,EAAG,IACjBsS,EAAKtS,EAAO,IAEZoS,IAAO,KAEXA,EAAK,EACDC,IAAO,KAEVA,EAAK,EACDC,IAAO,IAEVA,EAAK,EAIL,EAAEA,GAKH,EAAED,GAKH,EAAED,EAGFpS,EAAO,EACPA,GAASoS,GAAM,GACfpS,GAASqS,GAAM,EACfrS,GAAQsS,CACX,MAGGtS,GAAS,GAAQ,GAEjB,OAAOA,CACV,CAEE,SAASuS,EAAWN,EACpB,CACC,OAAKA,EAAQ,CAAC,EAAIE,EAAQF,EAAQ,CAAC,CAAC,KAAO,IAG1CA,EAAQ,CAAC,EAAIE,EAAQF,EAAQ,CAAC,CAAC,GAEzBA,CACV,CAEK,IAAID,EAAYE,EAAW,UAAYA,EAAW,OAAO,CACrD,aAAc,SAAU7V,EAAOoC,EAAQ,CAEnC,IAAIoR,EAAS,KAAK,QACdzR,EAAYyR,EAAO,UACnBK,EAAK,KAAK,IACV+B,EAAU,KAAK,SAGf/B,IACA+B,EAAU,KAAK,SAAW/B,EAAG,MAAM,CAAC,EAGpC,KAAK,IAAM,QAGxBqC,EAAWN,CAAO,EAElB,IAAIH,EAAYG,EAAQ,MAAM,CAAC,EACtBpC,EAAO,aAAaiC,EAAW,CAAC,EAGhC,QAAShV,EAAI,EAAGA,EAAIsB,EAAWtB,IAC3BT,EAAMoC,EAAS3B,CAAC,GAAKgV,EAAUhV,CAAC,CAEjD,CACA,CAAM,EAED,OAAAoV,EAAW,UAAYF,EAEhBE,CACZ,IAKQhX,EAAS,KAAK,UAEtB,CAAC,wFCnHC,SAAUJ,EAAMC,EAAS+J,EAAO,CAGhC9J,EAAA,QAA2BD,EAAQS,EAAA,EAAmBuJ,EAAA,CAAwB,CAUhF,GAAE9J,EAAM,SAAUC,EAAU,CAK3B,OAAAA,EAAS,KAAK,IAAO,UAAY,CAC7B,IAAIsX,EAAMtX,EAAS,IAAI,gBAAgB,OAAM,EAEzC8W,EAAYQ,EAAI,UAAYA,EAAI,OAAO,CACvC,aAAc,SAAUnW,EAAOoC,EAAQ,CAEnC,IAAIoR,EAAS,KAAK,QACdzR,EAAYyR,EAAO,UACnBK,EAAK,KAAK,IACV4B,EAAY,KAAK,WAGjB5B,IACA4B,EAAY,KAAK,WAAa5B,EAAG,MAAM,CAAC,EAGxC,KAAK,IAAM,QAEfL,EAAO,aAAaiC,EAAW,CAAC,EAGhC,QAAShV,EAAI,EAAGA,EAAIsB,EAAWtB,IAC3BT,EAAMoC,EAAS3B,CAAC,GAAKgV,EAAUhV,CAAC,CAEjD,CACA,CAAM,EAED,OAAA0V,EAAI,UAAYR,EAETQ,CACZ,IAGQtX,EAAS,KAAK,GAEtB,CAAC,wFCrDC,SAAUJ,EAAMC,EAAS+J,EAAO,CAGhC9J,EAAA,QAA2BD,EAAQS,EAAA,EAAmBuJ,EAAA,CAAwB,CAUhF,GAAE9J,EAAM,SAAUC,EAAU,CAK3B,OAAAA,EAAS,KAAK,IAAO,UAAY,CAC7B,IAAIuX,EAAMvX,EAAS,IAAI,gBAAgB,OAAM,EAE7C,OAAAuX,EAAI,UAAYA,EAAI,OAAO,CACvB,aAAc,SAAUpW,EAAOoC,EAAQ,CACnC,KAAK,QAAQ,aAAapC,EAAOoC,CAAM,CACpD,CACA,CAAM,EAEDgU,EAAI,UAAYA,EAAI,OAAO,CACvB,aAAc,SAAUpW,EAAOoC,EAAQ,CACnC,KAAK,QAAQ,aAAapC,EAAOoC,CAAM,CACpD,CACA,CAAM,EAEMgU,CACZ,IAGQvX,EAAS,KAAK,GAEtB,CAAC,wFCvCC,SAAUJ,EAAMC,EAAS+J,EAAO,CAGhC9J,EAAA,QAA2BD,EAAQS,EAAA,EAAmBuJ,EAAA,CAAwB,CAUhF,GAAE9J,EAAM,SAAUC,EAAU,CAK3B,OAAAA,EAAS,IAAI,SAAW,CACpB,IAAK,SAAU6C,EAAMK,EAAW,CAE5B,IAAID,EAAeJ,EAAK,SACpBM,EAAiBD,EAAY,EAG7BoS,EAAgBnS,EAAiBF,EAAeE,EAGhDqU,EAAcvU,EAAeqS,EAAgB,EAGjDzS,EAAK,MAAK,EACVA,EAAK,MAAM2U,IAAgB,CAAC,GAAKlC,GAAkB,GAAMkC,EAAc,EAAK,EAC5E3U,EAAK,UAAYyS,CAC1B,EAEK,MAAO,SAAUzS,EAAM,CAEnB,IAAIyS,EAAgBzS,EAAK,MAAOA,EAAK,SAAW,IAAO,CAAC,EAAI,IAG5DA,EAAK,UAAYyS,CAC1B,CACA,EAGQtV,EAAS,IAAI,QAErB,CAAC,wFChDC,SAAUJ,EAAMC,EAAS+J,EAAO,CAGhC9J,EAAA,QAA2BD,EAAQS,EAAA,EAAmBuJ,EAAA,CAAwB,CAUhF,GAAE9J,EAAM,SAAUC,EAAU,CAK3B,OAAAA,EAAS,IAAI,SAAW,CACpB,IAAK,SAAU6C,EAAMK,EAAW,CAE5B,IAAIC,EAAiBD,EAAY,EAG7BoS,EAAgBnS,EAAiBN,EAAK,SAAWM,EAGrDN,EAAK,OAAO7C,EAAS,IAAI,UAAU,OAAOsV,EAAgB,CAAC,CAAC,EACvD,OAAOtV,EAAS,IAAI,UAAU,OAAO,CAACsV,GAAiB,EAAE,EAAG,CAAC,CAAC,CAC5E,EAEK,MAAO,SAAUzS,EAAM,CAEnB,IAAIyS,EAAgBzS,EAAK,MAAOA,EAAK,SAAW,IAAO,CAAC,EAAI,IAG5DA,EAAK,UAAYyS,CAC1B,CACA,EAGQtV,EAAS,IAAI,QAErB,CAAC,wFC3CC,SAAUJ,EAAMC,EAAS+J,EAAO,CAGhC9J,EAAA,QAA2BD,EAAQS,EAAA,EAAmBuJ,EAAA,CAAwB,CAUhF,GAAE9J,EAAM,SAAUC,EAAU,CAK3B,OAAAA,EAAS,IAAI,SAAW,CACpB,IAAK,SAAU6C,EAAMK,EAAW,CAE5BL,EAAK,OAAO7C,EAAS,IAAI,UAAU,OAAO,CAAC,UAAU,EAAG,CAAC,CAAC,EAG1DA,EAAS,IAAI,YAAY,IAAI6C,EAAMK,CAAS,CACrD,EAEK,MAAO,SAAUL,EAAM,CAEnB7C,EAAS,IAAI,YAAY,MAAM6C,CAAI,EAGnCA,EAAK,UACd,CACA,EAGQ7C,EAAS,IAAI,QAErB,CAAC,wFCvCC,SAAUJ,EAAMC,EAAS+J,EAAO,CAGhC9J,EAAA,QAA2BD,EAAQS,EAAA,EAAmBuJ,EAAA,CAAwB,CAUhF,GAAE9J,EAAM,SAAUC,EAAU,CAK3B,OAAAA,EAAS,IAAI,YAAc,CACvB,IAAK,SAAU6C,EAAMK,EAAW,CAE5B,IAAIC,EAAiBD,EAAY,EAGjCL,EAAK,MAAK,EACVA,EAAK,UAAYM,GAAmBN,EAAK,SAAWM,GAAmBA,EAChF,EAEK,MAAO,SAAUN,EAAM,CAMnB,QAJIG,EAAYH,EAAK,MAGjB,EAAIA,EAAK,SAAW,EACf,EAAIA,EAAK,SAAW,EAAG,GAAK,EAAG,IACpC,GAAMG,EAAU,IAAM,CAAC,IAAO,GAAM,EAAI,EAAK,EAAM,IAAO,CACtDH,EAAK,SAAW,EAAI,EACpB,KACjB,CAEA,CACA,EAGQ7C,EAAS,IAAI,WAErB,CAAC,wFC9CC,SAAUJ,EAAMC,EAAS+J,EAAO,CAGhC9J,EAAA,QAA2BD,EAAQS,EAAA,EAAmBuJ,EAAA,CAAwB,CAUhF,GAAE9J,EAAM,SAAUC,EAAU,CAK3B,OAAAA,EAAS,IAAI,UAAY,CACrB,IAAK,UAAY,CACtB,EAEK,MAAO,UAAY,CACxB,CACA,EAGQA,EAAS,IAAI,SAErB,CAAC,wFC7BC,SAAUJ,EAAMC,EAAS+J,EAAO,CAGhC9J,EAAA,QAA2BD,EAAQS,EAAA,EAAmBuJ,EAAA,CAAwB,CAUhF,GAAE9J,EAAM,SAAUC,EAAU,CAE3B,OAAC,SAAUE,EAAW,CAElB,IAAIS,EAAIX,EACJY,EAAQD,EAAE,IACVgV,EAAe/U,EAAM,aACrBqB,EAAQtB,EAAE,IACVW,EAAMW,EAAM,IACZ6T,EAAWnV,EAAE,OAEEmV,EAAS,IAAM,CAc9B,UAAW,SAAUF,EAAc,CAC/B,OAAOA,EAAa,WAAW,SAAStU,CAAG,CACxD,EAeS,MAAO,SAAUmW,EAAO,CACpB,IAAI7C,EAAatT,EAAI,MAAMmW,CAAK,EAChC,OAAO9B,EAAa,OAAO,CAAE,WAAYf,CAAU,CAAE,CAClE,CACA,CACA,EAAE,EAGM5U,EAAS,OAAO,GAExB,CAAC,wFCjEC,SAAUJ,EAAMC,EAAS+J,EAAO,CAGhC9J,EAAA,QAA2BD,EAAQS,IAAmBuJ,KAAyB6E,KAAkBgJ,KAAqBC,GAAwB,CAUhJ,GAAE5X,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIW,EAAIX,EACJY,EAAQD,EAAE,IACViX,EAAchX,EAAM,YACpB+C,EAAShD,EAAE,KAGXkX,EAAO,CAAA,EACPC,EAAW,CAAA,EACXC,EAAY,CAAA,EACZC,EAAY,CAAA,EACZC,EAAY,CAAA,EACZC,EAAY,CAAA,EACZC,EAAgB,CAAA,EAChBC,EAAgB,CAAA,EAChBC,EAAgB,CAAA,EAChBC,EAAgB,CAAA,GAGnB,UAAY,CAGT,QADI7Q,EAAI,CAAA,EACC7F,EAAI,EAAGA,EAAI,IAAKA,IACjBA,EAAI,IACJ6F,EAAE7F,CAAC,EAAIA,GAAK,EAEZ6F,EAAE7F,CAAC,EAAKA,GAAK,EAAK,IAO1B,QAFIuG,EAAI,EACJoQ,EAAK,EACA3W,EAAI,EAAGA,EAAI,IAAKA,IAAK,CAE1B,IAAI4W,EAAKD,EAAMA,GAAM,EAAMA,GAAM,EAAMA,GAAM,EAAMA,GAAM,EACzDC,EAAMA,IAAO,EAAMA,EAAK,IAAQ,GAChCX,EAAK1P,CAAC,EAAIqQ,EACVV,EAASU,CAAE,EAAIrQ,EAGf,IAAIsQ,EAAKhR,EAAEU,CAAC,EACRuQ,EAAKjR,EAAEgR,CAAE,EACTE,EAAKlR,EAAEiR,CAAE,EAGTtQ,EAAKX,EAAE+Q,CAAE,EAAI,IAAUA,EAAK,SAChCT,EAAU5P,CAAC,EAAKC,GAAK,GAAOA,IAAM,EAClC4P,EAAU7P,CAAC,EAAKC,GAAK,GAAOA,IAAM,GAClC6P,EAAU9P,CAAC,EAAKC,GAAK,EAAOA,IAAM,GAClC8P,EAAU/P,CAAC,EAAIC,EAGf,IAAIA,EAAKuQ,EAAK,SAAcD,EAAK,MAAYD,EAAK,IAAUtQ,EAAI,SAChEgQ,EAAcK,CAAE,EAAKpQ,GAAK,GAAOA,IAAM,EACvCgQ,EAAcI,CAAE,EAAKpQ,GAAK,GAAOA,IAAM,GACvCiQ,EAAcG,CAAE,EAAKpQ,GAAK,EAAOA,IAAM,GACvCkQ,EAAcE,CAAE,EAAIpQ,EAGfD,GAGDA,EAAIsQ,EAAKhR,EAAEA,EAAEA,EAAEkR,EAAKF,CAAE,CAAC,CAAC,EACxBF,GAAM9Q,EAAEA,EAAE8Q,CAAE,CAAC,GAHbpQ,EAAIoQ,EAAK,CAK1B,CACA,GAAM,EAGD,IAAIK,EAAO,CAAC,EAAM,EAAM,EAAM,EAAM,EAAM,GAAM,GAAM,GAAM,IAAM,GAAM,EAAI,EAKxEC,EAAMlV,EAAO,IAAMiU,EAAY,OAAO,CACtC,SAAU,UAAY,CAClB,IAAIxP,EAGJ,GAAI,OAAK,UAAY,KAAK,iBAAmB,KAAK,MAiBlD,SAZIzS,EAAM,KAAK,eAAiB,KAAK,KACjCmjB,EAAWnjB,EAAI,MACfge,EAAUhe,EAAI,SAAW,EAGzBojB,EAAU,KAAK,SAAWpF,EAAU,EAGpCqF,GAAUD,EAAU,GAAK,EAGzBE,EAAc,KAAK,aAAe,CAAA,EAC7BC,EAAQ,EAAGA,EAAQF,EAAQE,IAC5BA,EAAQvF,EACRsF,EAAYC,CAAK,EAAIJ,EAASI,CAAK,GAEnC9Q,EAAI6Q,EAAYC,EAAQ,CAAC,EAEnBA,EAAQvF,EASHA,EAAU,GAAKuF,EAAQvF,GAAW,IAEzCvL,EAAKyP,EAAKzP,IAAM,EAAE,GAAK,GAAOyP,EAAMzP,IAAM,GAAM,GAAI,GAAK,GAAOyP,EAAMzP,IAAM,EAAK,GAAI,GAAK,EAAKyP,EAAKzP,EAAI,GAAI,IAT5GA,EAAKA,GAAK,EAAMA,IAAM,GAGtBA,EAAKyP,EAAKzP,IAAM,EAAE,GAAK,GAAOyP,EAAMzP,IAAM,GAAM,GAAI,GAAK,GAAOyP,EAAMzP,IAAM,EAAK,GAAI,GAAK,EAAKyP,EAAKzP,EAAI,GAAI,EAG5GA,GAAKwQ,EAAMM,EAAQvF,EAAW,CAAC,GAAK,IAMxCsF,EAAYC,CAAK,EAAID,EAAYC,EAAQvF,CAAO,EAAIvL,GAM5D,QADI+Q,EAAiB,KAAK,gBAAkB,CAAA,EACnCC,EAAW,EAAGA,EAAWJ,EAAQI,IAAY,CAClD,IAAIF,EAAQF,EAASI,EAErB,GAAIA,EAAW,EACX,IAAIhR,EAAI6Q,EAAYC,CAAK,MAEzB,KAAI9Q,EAAI6Q,EAAYC,EAAQ,CAAC,EAG7BE,EAAW,GAAKF,GAAS,EACzBC,EAAeC,CAAQ,EAAIhR,EAE3B+Q,EAAeC,CAAQ,EAAIjB,EAAcN,EAAKzP,IAAM,EAAE,CAAC,EAAIgQ,EAAcP,EAAMzP,IAAM,GAAM,GAAI,CAAC,EACrEiQ,EAAcR,EAAMzP,IAAM,EAAK,GAAI,CAAC,EAAIkQ,EAAcT,EAAKzP,EAAI,GAAI,CAAC,CAEpH,EACA,EAES,aAAc,SAAUlC,EAAG3C,EAAQ,CAC/B,KAAK,cAAc2C,EAAG3C,EAAQ,KAAK,aAAcwU,EAAWC,EAAWC,EAAWC,EAAWL,CAAI,CAC9G,EAES,aAAc,SAAU3R,EAAG3C,EAAQ,CAE/B,IAAI6E,EAAIlC,EAAE3C,EAAS,CAAC,EACpB2C,EAAE3C,EAAS,CAAC,EAAI2C,EAAE3C,EAAS,CAAC,EAC5B2C,EAAE3C,EAAS,CAAC,EAAI6E,EAEhB,KAAK,cAAclC,EAAG3C,EAAQ,KAAK,gBAAiB4U,EAAeC,EAAeC,EAAeC,EAAeR,CAAQ,EAGxH,IAAI1P,EAAIlC,EAAE3C,EAAS,CAAC,EACpB2C,EAAE3C,EAAS,CAAC,EAAI2C,EAAE3C,EAAS,CAAC,EAC5B2C,EAAE3C,EAAS,CAAC,EAAI6E,CAC7B,EAES,cAAe,SAAUlC,EAAG3C,EAAQ0V,EAAalB,EAAWC,EAAWC,EAAWC,EAAWL,EAAM,CAc/F,QAZIkB,EAAU,KAAK,SAGfM,EAAKnT,EAAE3C,CAAM,EAAQ0V,EAAY,CAAC,EAClCK,EAAKpT,EAAE3C,EAAS,CAAC,EAAI0V,EAAY,CAAC,EAClCM,EAAKrT,EAAE3C,EAAS,CAAC,EAAI0V,EAAY,CAAC,EAClCO,EAAKtT,EAAE3C,EAAS,CAAC,EAAI0V,EAAY,CAAC,EAGlCC,EAAQ,EAGHtJ,EAAQ,EAAGA,EAAQmJ,EAASnJ,IAAS,CAE1C,IAAI6J,EAAK1B,EAAUsB,IAAO,EAAE,EAAIrB,EAAWsB,IAAO,GAAM,GAAI,EAAIrB,EAAWsB,IAAO,EAAK,GAAI,EAAIrB,EAAUsB,EAAK,GAAI,EAAIP,EAAYC,GAAO,EACrIxP,EAAKqO,EAAUuB,IAAO,EAAE,EAAItB,EAAWuB,IAAO,GAAM,GAAI,EAAItB,EAAWuB,IAAO,EAAK,GAAI,EAAItB,EAAUmB,EAAK,GAAI,EAAIJ,EAAYC,GAAO,EACrIvP,EAAKoO,EAAUwB,IAAO,EAAE,EAAIvB,EAAWwB,IAAO,GAAM,GAAI,EAAIvB,EAAWoB,IAAO,EAAK,GAAI,EAAInB,EAAUoB,EAAK,GAAI,EAAIL,EAAYC,GAAO,EACrIQ,EAAK3B,EAAUyB,IAAO,EAAE,EAAIxB,EAAWqB,IAAO,GAAM,GAAI,EAAIpB,EAAWqB,IAAO,EAAK,GAAI,EAAIpB,EAAUqB,EAAK,GAAI,EAAIN,EAAYC,GAAO,EAGzIG,EAAKI,EACLH,EAAK5P,EACL6P,EAAK5P,EACL6P,EAAKE,CACtB,CAGa,IAAID,GAAO5B,EAAKwB,IAAO,EAAE,GAAK,GAAOxB,EAAMyB,IAAO,GAAM,GAAI,GAAK,GAAOzB,EAAM0B,IAAO,EAAK,GAAI,GAAK,EAAK1B,EAAK2B,EAAK,GAAI,GAAKP,EAAYC,GAAO,EAC1IxP,GAAOmO,EAAKyB,IAAO,EAAE,GAAK,GAAOzB,EAAM0B,IAAO,GAAM,GAAI,GAAK,GAAO1B,EAAM2B,IAAO,EAAK,GAAI,GAAK,EAAK3B,EAAKwB,EAAK,GAAI,GAAKJ,EAAYC,GAAO,EAC1IvP,GAAOkO,EAAK0B,IAAO,EAAE,GAAK,GAAO1B,EAAM2B,IAAO,GAAM,GAAI,GAAK,GAAO3B,EAAMwB,IAAO,EAAK,GAAI,GAAK,EAAKxB,EAAKyB,EAAK,GAAI,GAAKL,EAAYC,GAAO,EAC1IQ,GAAO7B,EAAK2B,IAAO,EAAE,GAAK,GAAO3B,EAAMwB,IAAO,GAAM,GAAI,GAAK,GAAOxB,EAAMyB,IAAO,EAAK,GAAI,GAAK,EAAKzB,EAAK0B,EAAK,GAAI,GAAKN,EAAYC,GAAO,EAG9IhT,EAAE3C,CAAM,EAAQkW,EAChBvT,EAAE3C,EAAS,CAAC,EAAImG,EAChBxD,EAAE3C,EAAS,CAAC,EAAIoG,EAChBzD,EAAE3C,EAAS,CAAC,EAAImW,CAC7B,EAES,QAAS,IAAI,EACtB,CAAM,EAUD/Y,EAAE,IAAMiX,EAAY,cAAciB,CAAG,CAC1C,EAAE,EAGM7Y,EAAS,GAEjB,CAAC,wFCzOC,SAAUJ,EAAMC,EAAS+J,EAAO,CAGhC9J,EAAA,QAA2BD,EAAQS,IAAmBuJ,KAAyB6E,KAAkBgJ,KAAqBC,GAAwB,CAUhJ,GAAE5X,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIW,EAAIX,EACJY,EAAQD,EAAE,IACVO,EAAYN,EAAM,UAClBgX,EAAchX,EAAM,YACpB+C,EAAShD,EAAE,KAGXgZ,EAAM,CACN,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAI,EAC5B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAC5B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAC5B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5B,GAAI,GAAI,GAAI,EAAI,GAAI,GAAI,GAAI,GAC5B,GAAI,GAAI,GAAI,EAAI,GAAI,GAAI,GAAI,GAC5B,GAAI,GAAI,GAAI,EAAI,GAAI,GAAI,GAAI,CACrC,EAGSC,EAAM,CACN,GAAI,GAAI,GAAI,GAAI,EAAI,EACpB,EAAI,GAAI,GAAI,EAAI,GAAI,GACpB,GAAI,GAAI,GAAI,EAAI,GAAI,EACpB,GAAI,EAAI,GAAI,GAAI,GAAI,EACpB,GAAI,GAAI,GAAI,GAAI,GAAI,GACpB,GAAI,GAAI,GAAI,GAAI,GAAI,GACpB,GAAI,GAAI,GAAI,GAAI,GAAI,GACpB,GAAI,GAAI,GAAI,GAAI,GAAI,EAC7B,EAGSC,EAAa,CAAC,EAAI,EAAI,EAAI,EAAI,EAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAG5EC,EAAS,CACT,CACI,EAAK,QACL,UAAY,MACZ,UAAY,QACZ,UAAY,EACZ,WAAY,IACZ,WAAY,QACZ,WAAY,QACZ,WAAY,QACZ,WAAY,IACZ,WAAY,QACZ,WAAY,MACZ,WAAY,QACZ,WAAY,MACZ,WAAY,QACZ,WAAY,EACZ,WAAY,MACZ,UAAW,EACX,UAAY,QACZ,UAAY,MACZ,UAAY,MACZ,WAAY,QACZ,WAAY,IACZ,WAAY,QACZ,WAAY,EACZ,WAAY,QACZ,WAAY,MACZ,WAAY,QACZ,WAAY,QACZ,WAAY,QACZ,WAAY,MACZ,WAAY,IACZ,WAAY,QACZ,EAAK,MACL,UAAY,EACZ,UAAY,QACZ,UAAY,QACZ,WAAY,QACZ,WAAY,MACZ,WAAY,IACZ,WAAY,QACZ,WAAY,QACZ,WAAY,QACZ,WAAY,QACZ,WAAY,MACZ,WAAY,IACZ,WAAY,QACZ,WAAY,MACZ,WAAY,EACZ,UAAW,QACX,UAAY,QACZ,UAAY,QACZ,UAAY,IACZ,WAAY,MACZ,WAAY,QACZ,WAAY,EACZ,WAAY,MACZ,WAAY,MACZ,WAAY,QACZ,WAAY,IACZ,WAAY,QACZ,WAAY,QACZ,WAAY,EACZ,WAAY,MACZ,WAAY,SAEhB,CACI,EAAK,WACL,SAAW,MACX,SAAW,OACX,SAAW,WACX,SAAW,WACX,SAAW,WACX,UAAW,WACX,UAAW,GACX,UAAW,OACX,UAAW,WACX,UAAW,WACX,UAAW,OACX,UAAW,OACX,UAAW,EACX,UAAW,MACX,UAAW,WACX,QAAU,WACV,SAAW,OACX,SAAW,GACX,SAAW,WACX,SAAW,WACX,SAAW,WACX,UAAW,OACX,UAAW,WACX,UAAW,OACX,UAAW,EACX,UAAW,MACX,UAAW,WACX,UAAW,WACX,UAAW,OACX,UAAW,WACX,UAAW,MACX,UAAY,EACZ,UAAY,WACZ,UAAY,WACZ,UAAY,WACZ,UAAY,WACZ,UAAY,GACZ,UAAY,OACZ,UAAY,MACZ,UAAY,MACZ,UAAY,OACZ,UAAY,OACZ,UAAY,WACZ,UAAY,OACZ,UAAY,WACZ,UAAY,WACZ,UAAY,WACZ,UAAY,OACZ,UAAY,OACZ,UAAY,WACZ,UAAY,MACZ,UAAY,WACZ,UAAY,WACZ,UAAY,GACZ,UAAY,WACZ,UAAY,WACZ,UAAY,WACZ,UAAY,WACZ,UAAY,OACZ,UAAY,EACZ,UAAY,MACZ,UAAY,WACZ,UAAY,QAEhB,CACI,EAAK,IACL,QAAU,EACV,QAAU,SACV,QAAU,MACV,QAAU,MACV,QAAU,SACV,QAAU,SACV,QAAU,SACV,QAAU,SACV,QAAU,SACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,MACV,SAAU,EACV,SAAU,IACV,OAAS,SACT,QAAU,SACV,QAAU,EACV,QAAU,SACV,QAAU,SACV,QAAU,MACV,QAAU,MACV,QAAU,IACV,QAAU,EACV,QAAU,IACV,SAAU,SACV,SAAU,MACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAW,SACX,SAAW,MACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,OAEf,CACI,EAAK,WACL,MAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,KACT,OAAS,KACT,OAAS,WACT,MAAQ,WACR,MAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,WACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,QACT,QAAS,WACT,QAAU,QACV,QAAU,QACV,QAAU,WACV,QAAU,EACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,QACV,QAAU,WACV,QAAU,QACV,QAAU,GACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,EACV,QAAU,QACV,QAAU,QACV,QAAU,WACV,QAAU,WACV,QAAU,GACV,QAAU,WACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,KACV,QAAU,WACV,QAAU,QACV,QA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AAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UAAU,EAClD,CAAI,WAAY,WAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,UAAY,UAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,UAAY,WAAY,SAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,UACpC,WAAY,UAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UAAU,EAClD,CAAI,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,SAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAA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","x_google_ignoreList":[20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,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]}
|